From 1f2b08d579ce952c57c16621c435fe825cb86f01 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Sun, 18 Jul 2021 00:14:43 -0400 Subject: [PATCH 01/33] add jsx templates WIP --- .../default/assets/css/_constants.sass | 11 + .../default/assets/css/_theme.scss | 28 ++ .../default/assets/css/elements/_comment.sass | 52 +++ .../default/assets/css/elements/_filter.sass | 61 +++ .../default/assets/css/elements/_footer.sass | 21 + .../assets/css/elements/_hierarchy.sass | 24 + .../default/assets/css/elements/_images.sass | 3 + .../default/assets/css/elements/_index.sass | 78 ++++ .../default/assets/css/elements/_member.sass | 36 ++ .../assets/css/elements/_navigation.sass | 145 ++++++ .../default/assets/css/elements/_panel.sass | 69 +++ .../default/assets/css/elements/_search.sass | 89 ++++ .../assets/css/elements/_signatures.sass | 150 +++++++ .../default/assets/css/elements/_sources.sass | 24 + .../default/assets/css/elements/_toolbar.sass | 175 ++++++++ .../default/assets/css/layouts/_default.sass | 113 +++++ .../default/assets/css/layouts/_minimal.sass | 49 ++ .../default/assets/css/main.sass | 27 ++ .../default/assets/css/setup/_animations.sass | 54 +++ .../default/assets/css/setup/_grid.sass | 60 +++ .../default/assets/css/setup/_icons.scss | 150 +++++++ .../default/assets/css/setup/_mixins.sass | 30 ++ .../default/assets/css/setup/_typography.sass | 50 +++ .../assets/css/vendors/_normalize.sass | 424 ++++++++++++++++++ .../default/assets/images/icons.png | Bin 0 -> 9615 bytes .../default/assets/images/icons.psd | Bin 0 -> 761587 bytes .../default/assets/images/icons@2x.png | Bin 0 -> 28144 bytes .../default/assets/images/widgets.png | Bin 0 -> 480 bytes .../default/assets/images/widgets.psd | Bin 0 -> 187424 bytes .../default/assets/images/widgets@2x.png | Bin 0 -> 855 bytes .../default/assets/js/src/bootstrap.ts | 24 + .../assets/js/src/typedoc/Application.ts | 53 +++ .../assets/js/src/typedoc/Component.ts | 14 + .../assets/js/src/typedoc/EventTarget.ts | 42 ++ .../js/src/typedoc/components/Filter.ts | 166 +++++++ .../src/typedoc/components/MenuHighlight.ts | 141 ++++++ .../js/src/typedoc/components/Search.ts | 266 +++++++++++ .../js/src/typedoc/components/Signature.ts | 157 +++++++ .../js/src/typedoc/components/Toggle.ts | 79 ++++ .../js/src/typedoc/services/Viewport.ts | 130 ++++++ .../assets/js/src/typedoc/utils/debounce.ts | 7 + .../assets/js/src/typedoc/utils/pointer.ts | 98 ++++ .../assets/js/src/typedoc/utils/trottle.ts | 12 + .../default/layouts/default.hbs | 50 +++ .../default/layouts/default.tsx | 56 +++ .../default/partials/analytics.hbs | 11 + .../default/partials/analytics.tsx | 15 + .../default/partials/breadcrumb.hbs | 16 + .../default/partials/breadcrumb.tsx | 33 ++ .../default/partials/comment.hbs | 22 + .../default/partials/comment.tsx | 47 ++ .../default/partials/footer.hbs | 21 + .../default/partials/footer.tsx | 42 ++ .../default/partials/header.hbs | 70 +++ .../default/partials/header.tsx | 108 +++++ .../default/partials/hierarchy.hbs | 17 + .../default/partials/hierarchy.tsx | 34 ++ .../default-themes/default/partials/index.hbs | 50 +++ .../default-themes/default/partials/index.tsx | 161 +++++++ .../default/partials/member.declaration.hbs | 36 ++ .../default/partials/member.declaration.tsx | 61 +++ .../default/partials/member.getterSetter.hbs | 37 ++ .../default/partials/member.getterSetter.tsx | 63 +++ .../default/partials/member.hbs | 24 + .../default/partials/member.reference.hbs | 16 + .../default/partials/member.reference.tsx | 30 ++ .../partials/member.signature.body.hbs | 56 +++ .../partials/member.signature.body.tsx | 91 ++++ .../partials/member.signature.title.hbs | 41 ++ .../partials/member.signature.title.tsx | 71 +++ .../default/partials/member.signatures.hbs | 13 + .../default/partials/member.signatures.tsx | 25 ++ .../default/partials/member.sources.hbs | 22 + .../default/partials/member.sources.tsx | 70 +++ .../default/partials/member.tsx | 39 ++ .../default/partials/members.group.hbs | 21 + .../default/partials/members.group.tsx | 29 ++ .../default/partials/members.hbs | 20 + .../default/partials/members.tsx | 22 + .../default/partials/navigation.hbs | 26 ++ .../default/partials/navigation.tsx | 38 ++ .../default/partials/parameter.hbs | 134 ++++++ .../default/partials/parameter.tsx | 211 +++++++++ .../default-themes/default/partials/toc.hbs | 10 + .../default/partials/toc.root.hbs | 18 + .../default/partials/toc.root.tsx | 29 ++ .../default-themes/default/partials/toc.tsx | 21 + .../partials/type-inline-partials/array.hbs | 5 + .../partials/type-inline-partials/array.tsx | 14 + .../type-inline-partials/conditional.hbs | 22 + .../type-inline-partials/conditional.tsx | 35 ++ .../partials/type-inline-partials/index.tsx | 45 ++ .../type-inline-partials/indexedAccess.hbs | 9 + .../type-inline-partials/indexedAccess.tsx | 16 + .../type-inline-partials/inferred.hbs | 2 + .../type-inline-partials/inferred.tsx | 8 + .../type-inline-partials/intersection.hbs | 13 + .../type-inline-partials/intersection.tsx | 31 ++ .../type-inline-partials/intrinsic.hbs | 2 + .../type-inline-partials/intrinsic.tsx | 8 + .../partials/type-inline-partials/literal.hbs | 2 + .../partials/type-inline-partials/literal.tsx | 8 + .../partials/type-inline-partials/mapped.hbs | 42 ++ .../partials/type-inline-partials/mapped.tsx | 51 +++ .../named-tuple-member.hbs | 10 + .../named-tuple-member.tsx | 23 + .../type-inline-partials/optional.hbs | 5 + .../type-inline-partials/optional.tsx | 12 + .../partials/type-inline-partials/options.ts | 3 + .../type-inline-partials/predicate.hbs | 11 + .../type-inline-partials/predicate.tsx | 24 + .../partials/type-inline-partials/query.hbs | 5 + .../partials/type-inline-partials/query.tsx | 12 + .../type-inline-partials/reference.hbs | 20 + .../type-inline-partials/reference.tsx | 15 + .../type-inline-partials/reflection.hbs | 91 ++++ .../type-inline-partials/reflection.tsx | 177 ++++++++ .../partials/type-inline-partials/rest.hbs | 5 + .../partials/type-inline-partials/rest.tsx | 12 + .../type-inline-partials/template-literal.hbs | 16 + .../type-inline-partials/template-literal.tsx | 14 + .../partials/type-inline-partials/tuple.hbs | 9 + .../partials/type-inline-partials/tuple.tsx | 21 + .../type-inline-partials/typeOperator.hbs | 5 + .../type-inline-partials/typeOperator.tsx | 12 + .../type-inline-partials/typeParameter.hbs | 2 + .../type-inline-partials/typeParameter.tsx | 8 + .../partials/type-inline-partials/union.hbs | 13 + .../partials/type-inline-partials/union.tsx | 31 ++ .../partials/type-inline-partials/unknown.hbs | 0 .../partials/type-inline-partials/unknown.tsx | 5 + .../default-themes/default/partials/type.hbs | 15 + .../default-themes/default/partials/type.tsx | 33 ++ .../default/partials/typeAndParent.hbs | 43 ++ .../default/partials/typeAndParent.tsx | 65 +++ .../default/partials/typeParameters.hbs | 17 + .../default/partials/typeParameters.tsx | 39 ++ .../default/templates/index.hbs | 3 + .../default/templates/index.tsx | 10 + .../default/templates/reflection.hbs | 79 ++++ .../default/templates/reflection.tsx | 130 ++++++ src/lib/output/themes/default-themes/lib.tsx | 76 ++++ .../minimal/layouts/default.hbs | 43 ++ .../minimal/layouts/default.tsx | 48 ++ .../minimal/partials/header.hbs | 38 ++ .../minimal/partials/header.tsx | 58 +++ .../minimal/partials/member.hbs | 31 ++ .../minimal/partials/member.tsx | 48 ++ .../minimal/templates/index.hbs | 16 + .../minimal/templates/index.tsx | 34 ++ .../output/themes/default-themes/partials.tsx | 51 +++ .../output/themes/default-themes/plugin.js | 0 tsconfig.json | 9 +- 153 files changed, 6897 insertions(+), 2 deletions(-) create mode 100644 src/lib/output/themes/default-themes/default/assets/css/_constants.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/_theme.scss create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_comment.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_filter.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_footer.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_hierarchy.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_images.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_index.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_member.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_navigation.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_panel.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_search.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_signatures.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_sources.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/elements/_toolbar.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/layouts/_default.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/layouts/_minimal.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/main.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/setup/_animations.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/setup/_grid.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/setup/_icons.scss create mode 100644 src/lib/output/themes/default-themes/default/assets/css/setup/_mixins.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/setup/_typography.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/css/vendors/_normalize.sass create mode 100644 src/lib/output/themes/default-themes/default/assets/images/icons.png create mode 100644 src/lib/output/themes/default-themes/default/assets/images/icons.psd create mode 100644 src/lib/output/themes/default-themes/default/assets/images/icons@2x.png create mode 100644 src/lib/output/themes/default-themes/default/assets/images/widgets.png create mode 100644 src/lib/output/themes/default-themes/default/assets/images/widgets.psd create mode 100644 src/lib/output/themes/default-themes/default/assets/images/widgets@2x.png create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/bootstrap.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Application.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Component.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/EventTarget.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Filter.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/MenuHighlight.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Search.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Signature.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Toggle.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/services/Viewport.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/debounce.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/pointer.ts create mode 100644 src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/trottle.ts create mode 100644 src/lib/output/themes/default-themes/default/layouts/default.hbs create mode 100644 src/lib/output/themes/default-themes/default/layouts/default.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/analytics.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/analytics.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/breadcrumb.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/breadcrumb.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/comment.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/comment.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/footer.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/footer.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/header.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/header.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/hierarchy.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/hierarchy.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/index.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/index.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.declaration.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.declaration.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.getterSetter.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.getterSetter.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.reference.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.reference.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.signature.body.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.signature.body.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.signature.title.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.signature.title.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.signatures.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.signatures.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.sources.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/member.sources.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/member.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/members.group.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/members.group.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/members.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/members.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/navigation.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/navigation.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/parameter.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/parameter.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/toc.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/toc.root.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/toc.root.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/toc.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/index.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/options.ts create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/type.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/type.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/typeAndParent.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/typeAndParent.tsx create mode 100644 src/lib/output/themes/default-themes/default/partials/typeParameters.hbs create mode 100644 src/lib/output/themes/default-themes/default/partials/typeParameters.tsx create mode 100644 src/lib/output/themes/default-themes/default/templates/index.hbs create mode 100644 src/lib/output/themes/default-themes/default/templates/index.tsx create mode 100644 src/lib/output/themes/default-themes/default/templates/reflection.hbs create mode 100644 src/lib/output/themes/default-themes/default/templates/reflection.tsx create mode 100644 src/lib/output/themes/default-themes/lib.tsx create mode 100644 src/lib/output/themes/default-themes/minimal/layouts/default.hbs create mode 100644 src/lib/output/themes/default-themes/minimal/layouts/default.tsx create mode 100644 src/lib/output/themes/default-themes/minimal/partials/header.hbs create mode 100644 src/lib/output/themes/default-themes/minimal/partials/header.tsx create mode 100644 src/lib/output/themes/default-themes/minimal/partials/member.hbs create mode 100644 src/lib/output/themes/default-themes/minimal/partials/member.tsx create mode 100644 src/lib/output/themes/default-themes/minimal/templates/index.hbs create mode 100644 src/lib/output/themes/default-themes/minimal/templates/index.tsx create mode 100644 src/lib/output/themes/default-themes/partials.tsx create mode 100644 src/lib/output/themes/default-themes/plugin.js diff --git a/src/lib/output/themes/default-themes/default/assets/css/_constants.sass b/src/lib/output/themes/default-themes/default/assets/css/_constants.sass new file mode 100644 index 000000000..ec3fa49c6 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/_constants.sass @@ -0,0 +1,11 @@ +// Fonts +// +$FONT_FAMILY: 'Segoe UI', sans-serif +$FONT_FAMILY_MONO: Menlo, Monaco, Consolas, 'Courier New', monospace + +$FONT_SIZE: 16px +$FONT_SIZE_MONO: 14px + +$LINE_HEIGHT: 1.333em + +$TOOLBAR_HEIGHT: 40px diff --git a/src/lib/output/themes/default-themes/default/assets/css/_theme.scss b/src/lib/output/themes/default-themes/default/assets/css/_theme.scss new file mode 100644 index 000000000..0576c0b7e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/_theme.scss @@ -0,0 +1,28 @@ +// Default light theme +:root { + --color-background: #fdfdfd; + --color-text: #222; + --color-text-aside: #707070; + --color-link: #4da6ff; + + --color-menu-divider: #eee; + --color-menu-divider-focus: #000; + --color-menu-label: #707070; + + --color-panel: #fff; + --color-panel-divider: #eee; + + --color-comment-tag: #707070; + --color-comment-tag-text: #fff; + + --color-code-background: rgba(0, 0, 0, 0.04); + + --color-ts: #9600ff; + --color-ts-interface: #647f1b; + --color-ts-enum: #937210; + --color-ts-class: #0672de; + --color-ts-private: #707070; + + --color-toolbar: #fff; + --color-toolbar-text: #333; +} diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_comment.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_comment.sass new file mode 100644 index 000000000..32277574a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_comment.sass @@ -0,0 +1,52 @@ +// Displays all regular comment tags +// +//
+//
see
+//

Dispatcher.EVENT_BEGIN

+//
see
+//

Dispatcher.EVENT_BEGIN_RESOLVE

+//
see
+//

Dispatcher.EVENT_END_RESOLVE

+//
+// +dl.tsd-comment-tags + overflow: hidden + + dt + float: left + padding: 1px 5px + margin: 0 10px 0 0 + border-radius: 4px + border: 1px solid var(--color-comment-tag) + color: var(--color-comment-tag) + font-size: 0.8em + font-weight: normal + + dd + margin: 0 0 10px 0 + + &:before, &:after + display: table + content: " " + pre, &:after + clear: both + + p + margin: 0 + +// Special formatting for the main reflection on each page. +// +//
+//
+//

The default TypeDoc main application class.

+//

This class holds the two main components of TypeDoc, the Dispatcher and the Renderer.

+//
+//
+// +.tsd-panel.tsd-comment .lead + font-size: 1.1em + line-height: $LINE_HEIGHT + margin-bottom: 2em + + &:last-child + margin-bottom: 0 diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_filter.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_filter.sass new file mode 100644 index 000000000..26a2efec9 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_filter.sass @@ -0,0 +1,61 @@ +// Classes set on the body to control the visible state of the filtered elements +// +.toggle-protected .tsd-is-private + display: none + +.toggle-public .tsd-is-private, +.toggle-public .tsd-is-protected, +.toggle-public .tsd-is-private-protected + display: none + +.toggle-inherited .tsd-is-inherited + display: none + +.toggle-externals .tsd-is-external + display: none + +// Filter Buttons in the toolbar +// +#tsd-filter + position: relative + display: inline-block + height: $TOOLBAR_HEIGHT + vertical-align: bottom + + .no-filter & + display: none + + .tsd-filter-group + display: inline-block + height: $TOOLBAR_HEIGHT + vertical-align: bottom + white-space: nowrap + + input + display: none + + +size-xs-sm + .tsd-filter-group + display: block + position: absolute + top: $TOOLBAR_HEIGHT + right: 20px + height: auto + background-color: var(--color-panel) + visibility: hidden + transform: translate(50%,0) + box-shadow: 0 0 4px rgba(#000, 0.25) + + .has-options & + visibility: visible + + .to-has-options & + animation: fade-in 0.2s + + .from-has-options & + animation: fade-out 0.2s + + label, + .tsd-select + display: block + padding-right: 20px diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_footer.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_footer.sass new file mode 100644 index 000000000..a5ad00a93 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_footer.sass @@ -0,0 +1,21 @@ +footer + border-top: 1px solid var(--color-panel-divider) + background-color: var(--color-panel) + + &.with-border-bottom + border-bottom: 1px solid var(--color-panel-divider) + + .tsd-legend-group + font-size: 0 + + .tsd-legend + display: inline-block + width: 25% + padding: 0 + font-size: $FONT_SIZE + list-style: none + line-height: $LINE_HEIGHT + vertical-align: top + + +size-xs-sm + width: 50% diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_hierarchy.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_hierarchy.sass new file mode 100644 index 000000000..891b52bb4 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_hierarchy.sass @@ -0,0 +1,24 @@ +// Displays the type hierarchy +// +// +// +.tsd-hierarchy + list-style: square + padding: 0 0 0 20px + margin: 0 + + .target + font-weight: bold diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_images.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_images.sass new file mode 100644 index 000000000..1fa3f017e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_images.sass @@ -0,0 +1,3 @@ +// fixes issue with images in readme +img + max-width: 100% diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_index.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_index.sass new file mode 100644 index 000000000..f9230b07f --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_index.sass @@ -0,0 +1,78 @@ +// Displays an index of grouped links. +// +//
+//
+//
+//

Constructor methods

+// +//
+// +//
+//
+// +.tsd-index-panel + .tsd-index-content + margin-bottom: -30px !important + + .tsd-index-section + margin-bottom: 30px !important + + h3 + @extend h4 + margin: 0 -20px 10px -20px + padding: 0 20px 10px 20px + border-bottom: 1px solid var(--color-panel-divider) + + ul.tsd-index-list + +vendors(column-count, 3) + +vendors(column-gap, 20px) + padding: 0 + list-style: none + line-height: $LINE_HEIGHT + + +size-xs-sm + +vendors(column-count, 1) + + +size-md + +vendors(column-count, 2) + + li + +vendors(page-break-inside, avoid) + + a, + .tsd-parent-kind-module a + color: var(--color-ts) + + .tsd-parent-kind-interface a + color: var(--color-ts-interface) + + .tsd-parent-kind-enum a + color: var(--color-ts-enum) + + .tsd-parent-kind-class a + color: var(--color-ts-class) + + .tsd-kind-module a + color: var(--color-ts) + + .tsd-kind-interface a + color: var(--color-ts-interface) + + .tsd-kind-enum a + color: var(--color-ts-enum) + + .tsd-kind-class a + color: var(--color-ts-class) + + .tsd-is-private a + color: var(--color-ts-private) diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_member.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_member.sass new file mode 100644 index 000000000..3890c0cff --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_member.sass @@ -0,0 +1,36 @@ +.tsd-flag + display: inline-block + padding: 1px 5px + border-radius: 4px + color: var(--color-comment-tag-text) + background-color: var(--color-comment-tag) + text-indent: 0 + font-size: $FONT_SIZE_MONO + font-weight: normal + +.tsd-anchor + position: absolute + top: -100px + +.tsd-member + position: relative + + .tsd-anchor + h3 + margin-top: 0 + margin-bottom: 0 + border-bottom: none + + a[data-tsd-kind] + color: var(--color-ts) + + a[data-tsd-kind="Interface"] + color: var(--color-ts-interface) + + a[data-tsd-kind="Enum"] + color: var(--color-ts-enum) + + a[data-tsd-kind="Class"] + color: var(--color-ts-class) + + a[data-tsd-kind="Private"] + color: var(--color-ts-private) diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_navigation.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_navigation.sass new file mode 100644 index 000000000..544d6449b --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_navigation.sass @@ -0,0 +1,145 @@ +// Base format for the navigation parts. +// +=INDENT($DEPTH, $BASE, $STEP, $PROGRESS:$DEPTH) + @if $PROGRESS > 0 + & li + +INDENT($DEPTH, $BASE, $STEP, $PROGRESS - 1) + @else + & a + padding-left: #{($BASE + $STEP * ($DEPTH - 1))}px + +=INDENTS($COUNT, $BASE, $STEP) + @for $DEPTH from 1 through $COUNT + +INDENT($DEPTH, $BASE, $STEP) + +.tsd-navigation + margin: 0 0 0 40px + + a + display: block + padding-top: 2px + padding-bottom: 2px + border-left: 2px solid transparent + color: var(--color-text) + text-decoration: none + transition: border-left-color 0.1s + + &:hover + text-decoration: underline + + ul + margin: 0 + padding: 0 + list-style: none + + li + padding: 0 + +// Primary part of the navigation containing the available modules. +// +// +// +.tsd-navigation.primary + padding-bottom: 40px + + a + display: block + padding-top: 6px + padding-bottom: 6px + + ul + +INDENTS(6, 5, 20) + + > ul + border-bottom: 1px solid var(--color-panel-divider) + + li + border-top: 1px solid var(--color-panel-divider) + + &.current > a + font-weight: bold + + &.label span + display: block + padding: 20px 0 6px 5px + color: var(--color-menu-label) + + &.globals + li > span, + &.globals + li > a + padding-top: 20px + +// Secondary part of the navigation containing the table of contents +// of the current module. +// Can be made sticky by `typedoc.MenuSticky` and will highlight current sticky with `typedoc.MenuHighlight`. +// +// +// +.tsd-navigation.secondary + max-height: calc(100vh - 1rem - #{$TOOLBAR_HEIGHT}) + overflow: auto + position: -webkit-sticky + position: sticky + top: calc(.5rem + #{$TOOLBAR_HEIGHT}) + transition: .3s + + &.tsd-navigation--toolbar-hide + max-height: calc(100vh - 1rem) + top: .5rem + + ul + +INDENTS(6, 25, 20) + transition: opacity 0.2s + + &.current a + border-left-color: var(--color-panel-divider) + + li.focus > a, + ul.current li.focus > a + border-left-color: var(--color-menu-divider-focus) + + li.current + margin-top: 20px + margin-bottom: 20px + border-left-color: var(--color-panel-divider) + + > a + font-weight: bold + +// Sticky menu setup +// +.menu-sticky-wrap + +size-md-lg + position: static diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_panel.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_panel.sass new file mode 100644 index 000000000..e3b17be78 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_panel.sass @@ -0,0 +1,69 @@ +// Displays a panel, an organisation unit in TypeDoc used to group single entities +// like a method or a variable. +// +//
+//

Eirmod tempor invidunt

+//

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

+//
+// +.tsd-panel + @extend %prevent-children-margin + margin: 20px 0 + padding: 20px + background-color: var(--color-panel) + box-shadow: 0 0 4px rgba(#000, 0.25) + + &:empty + display: none + + > h1, > h2, > h3 + margin: 1.5em -20px 10px -20px + padding: 0 20px 10px 20px + border-bottom: 1px solid var(--color-panel-divider) + + &.tsd-before-signature + margin-bottom: 0 + border-bottom: 0 + + table + display: block + width: 100% + overflow: auto + margin-top: 10px + word-break: normal + word-break: keep-all + + th + font-weight: bold + + th, td + padding: 6px 13px + border: 1px solid #ddd + + tr + background-color: #fff + border-top: 1px solid #ccc + + &:nth-child(2n) + background-color: #f8f8f8 + +// Holds a series of panels with an optional heading. +// +//
+//

Consetetur sadipscing elitr

+//
+//

Eirmod tempor invidunt

+//

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

+//
+//
+//

Eirmod tempor invidunt

+//

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.

+//
+//
+// +.tsd-panel-group + margin: 60px 0 + + > h1, > h2, > h3 + padding-left: 20px + padding-right: 20px diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_search.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_search.sass new file mode 100644 index 000000000..658c907b8 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_search.sass @@ -0,0 +1,89 @@ +#tsd-search + transition: background-color 0.2s + + .title + position: relative + z-index: 2 + + .field + position: absolute + left: 0 + top: 0 + right: 40px + height: 40px + + input + box-sizing: border-box + position: relative + top: -50px + z-index: 1 + width: 100% + padding: 0 10px + opacity: 0 + outline: 0 + border: 0 + background: transparent + color: var(--color-text) + + label + position: absolute + overflow: hidden + right: -40px + + .field input, + .title + transition: opacity 0.2s + + .results + position: absolute + visibility: hidden + top: 40px + width: 100% + margin: 0 + padding: 0 + list-style: none + box-shadow: 0 0 4px rgba(#000, 0.25) + + li + padding: 0 10px + background-color: var(--color-background) + + li:nth-child(even) + background-color: var(--color-panel) + + li.state + display: none + + li.current, + li:hover + background-color: var(--color-panel-divider) + + a + display: block + + &:before + top: 10px + + span.parent + color: var(--color-text-aside) + font-weight: normal + + &.has-focus + background-color: var(--color-panel-divider) + + .field input + top: 0 + opacity: 1 + + .title + z-index: 0 + opacity: 0 + + .results + visibility: visible + + &.loading .results li.state.loading + display: block + + &.failure .results li.state.failure + display: block diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_signatures.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_signatures.sass new file mode 100644 index 000000000..caaf1df77 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_signatures.sass @@ -0,0 +1,150 @@ +// Wraps a function signature. +// Changes its appearance when directly placed inside a `tsd-panel`. +// Can be combined with class `tsd-kind-icon` to display an icon in front of the signature. +// +//
+//
+// getChildByName( +// name: string +// ): +// DeclarationReflection +//
+//
+// +.tsd-signature + margin: 0 0 1em 0 + padding: 10px + border: 1px solid var(--color-panel-divider) + font-family: $FONT_FAMILY_MONO + font-size: $FONT_SIZE_MONO + overflow-x: auto + + &.tsd-kind-icon + padding-left: 30px + + &:before + top: 10px + left: 10px + + .tsd-panel > & + margin-left: -20px + margin-right: -20px + border-width: 1px 0 + + &.tsd-kind-icon + padding-left: 40px + + &:before + left: 20px + +.tsd-signature-symbol + color: var(--color-text-aside) + font-weight: normal + +.tsd-signature-type + font-style: italic + font-weight: normal + +// Displays a list of signatures. +// Changes its appearance when directly placed inside a `tsd-panel`. +// Made interactive by JavaScript at `typedoc.Signature`. +// +// +// +.tsd-signatures + padding: 0 + margin: 0 0 1em 0 + border: 1px solid var(--color-panel-divider) + + .tsd-signature + margin: 0 + border-width: 1px 0 0 0 + transition: background-color 0.1s + + &:first-child + border-top-width: 0 + + &.current + background-color: var(--color-panel-divider) + + &.active > .tsd-signature + cursor: pointer + + .tsd-panel > & + margin-left: -20px + margin-right: -20px + border-width: 1px 0 + + .tsd-signature.tsd-kind-icon + padding-left: 40px + + &:before + left: 20px + + .tsd-panel > a.anchor + & + border-top-width: 0 + margin-top: -20px + +// Holds the descriptions related to a list of signatures. +// Made interactive by JavaScript at `typedoc.Signature`. +// +// +// +ul.tsd-descriptions + position: relative + overflow: hidden + padding: 0 + list-style: none + + > li + @extend %prevent-children-margin + + &.active > .tsd-description + display: none + + &.current + display: block + + &.fade-in + animation: fade-in-delayed 0.3s + + &.fade-out + animation: fade-out-delayed 0.3s + position: absolute + display: block + top: 0 + left: 0 + right: 0 + opacity: 0 + visibility: hidden + + h4 + font-size: $FONT_SIZE + margin: 1em 0 0.5em 0 + +ul.tsd-parameters, +ul.tsd-type-parameters + list-style: square + margin: 0 + padding-left: 20px + + > li.tsd-parameter-signature + list-style: none + margin-left: -20px + + h5 + font-size: $FONT_SIZE + margin: 1em 0 0.5em 0 + + .tsd-comment + margin-top: -0.5em diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_sources.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_sources.sass new file mode 100644 index 000000000..d6f8650b5 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_sources.sass @@ -0,0 +1,24 @@ +// Displays the source and inheritance information +// +// +// +.tsd-sources + font-size: $FONT_SIZE_MONO + color: var(--color-text-aside) + margin: 0 0 1em 0 + + a + color: var(--color-text-aside) + text-decoration: underline + + ul, p + margin: 0 !important + + ul + list-style: none + padding: 0 diff --git a/src/lib/output/themes/default-themes/default/assets/css/elements/_toolbar.sass b/src/lib/output/themes/default-themes/default/assets/css/elements/_toolbar.sass new file mode 100644 index 000000000..78e0a1bb2 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/elements/_toolbar.sass @@ -0,0 +1,175 @@ +// Displays the toolbar at the top of the page. +// +//
+//
+//
+// +//
+//
+//
+// +.tsd-page-toolbar + position: fixed + z-index: 1 + top: 0 + left: 0 + width: 100% + height: $TOOLBAR_HEIGHT + color: var(--color-toolbar-text) + background: var(--color-toolbar) + border-bottom: 1px solid var(--color-panel-divider) + transition: transform .3s linear + + a + color: var(--color-toolbar-text) + text-decoration: none + + &.title + font-weight: bold + + &.title:hover + text-decoration: underline + + .table-wrap + display: table + width: 100% + height: $TOOLBAR_HEIGHT + + .table-cell + display: table-cell + position: relative + white-space: nowrap + line-height: $TOOLBAR_HEIGHT + + &:first-child + width: 100% + +.tsd-page-toolbar--hide + transform: translateY(-100%) + +%TSD_WIDGET_ICON + &:before + content: '' + display: inline-block + width: 40px + height: 40px + margin: 0 -8px 0 0 + background-image: url(../../images/widgets.png) + background-repeat: no-repeat + text-indent: -1024px + vertical-align: bottom + + +retina + background-image: url(../../images/widgets@2x.png) + background-size: 320px 40px + +.tsd-widget + @extend %TSD_WIDGET_ICON + display: inline-block + overflow: hidden + opacity: 0.6 + height: $TOOLBAR_HEIGHT + transition: opacity 0.1s, background-color 0.2s + vertical-align: bottom + cursor: pointer + + &:hover + opacity: 0.8 + + &.active + opacity: 1 + background-color: var(--color-panel-divider) + + &.no-caption + width: 40px + + &:before + margin: 0 + + &.search:before + background-position: 0 0 + + &.menu:before + background-position: -40px 0 + + &.options:before + background-position: -80px 0 + + &.options, + &.menu + display: none + + +size-xs-sm + display: inline-block + + input[type=checkbox] + &:before + background-position: -120px 0 + + input[type=checkbox]:checked + &:before + background-position: -160px 0 + +.tsd-select + position: relative + display: inline-block + height: $TOOLBAR_HEIGHT + transition: opacity 0.1s, background-color 0.2s + vertical-align: bottom + cursor: pointer + + .tsd-select-label + @extend %TSD_WIDGET_ICON + opacity: 0.6 + transition: opacity 0.2s + + &:before + background-position: -240px 0 + + &.active + .tsd-select-label + opacity: 0.8 + + .tsd-select-list + visibility: visible + opacity: 1 + transition-delay: 0s + + .tsd-select-list + position: absolute + visibility: hidden + top: $TOOLBAR_HEIGHT + left: 0 + margin: 0 + padding: 0 + opacity: 0 + list-style: none + box-shadow: 0 0 4px rgba(#000, 0.25) + transition: visibility 0s 0.2s, opacity 0.2s + + li + @extend %TSD_WIDGET_ICON + padding: 0 20px 0 0 + background-color: var(--color-background) + + &:before + background-position: 40px 0 + + &:nth-child(even) + background-color: var(--color-panel) + + &:hover + background-color: var(--color-panel-divider) + + &.selected:before + background-position: -200px 0 + + +size-xs-sm + .tsd-select-list + top: 0 + left: auto + right: 100% + margin-right: -5px + + .tsd-select-label:before + background-position: -280px 0 diff --git a/src/lib/output/themes/default-themes/default/assets/css/layouts/_default.sass b/src/lib/output/themes/default-themes/default/assets/css/layouts/_default.sass new file mode 100644 index 000000000..b187f1a0c --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/layouts/_default.sass @@ -0,0 +1,113 @@ +html.default + +size-md + .col-content + width: 72% + + .col-menu + width: 28% + + .tsd-navigation + padding-left: 10px + + +size-xs-sm + .col-content + float: none + width: 100% + + .col-menu + position: fixed !important + overflow: auto + -webkit-overflow-scrolling: touch + z-index: 1024 + top: 0 !important + bottom: 0 !important + left: auto !important + right: 0 !important + width: 100% + padding: 20px 20px 0 0 + max-width: 450px + visibility: hidden + background-color: var(--color-panel) + transform: translate(100%,0) + + > *:last-child + padding-bottom: 20px + + .overlay + content: '' + display: block + position: fixed + z-index: 1023 + top: 0 + left: 0 + right: 0 + bottom: 0 + background-color: rgba(#000, 0.75) + visibility: hidden + + &.to-has-menu + .overlay + animation: fade-in 0.4s + + header, + footer, + .col-content + animation: shift-to-left 0.4s + + .col-menu + animation: pop-in-from-right 0.4s + + &.from-has-menu + .overlay + animation: fade-out 0.4s + + header, + footer, + .col-content + animation: unshift-to-left 0.4s + + .col-menu + animation: pop-out-to-right 0.4s + + &.has-menu + body + overflow: hidden + + .overlay + visibility: visible + + header, + footer, + .col-content + transform: translate(-25%, 0) + + .col-menu + visibility: visible + transform: translate(0,0) + +.tsd-page-title + padding: 70px 0 20px 0 + margin: 0 0 40px 0 + background: var(--color-panel) + box-shadow: 0 0 5px rgba(#000, 0.35) + + h1 + margin: 0 + +.tsd-breadcrumb + margin: 0 + padding: 0 + color: var(--color-text-aside) + + a + color: var(--color-text-aside) + text-decoration: none + + &:hover + text-decoration: underline + + li + display: inline + + &:after + content: ' / ' diff --git a/src/lib/output/themes/default-themes/default/assets/css/layouts/_minimal.sass b/src/lib/output/themes/default-themes/default/assets/css/layouts/_minimal.sass new file mode 100644 index 000000000..37484f0d9 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/layouts/_minimal.sass @@ -0,0 +1,49 @@ +html.minimal + .container + margin: 0 + + .container-main + padding-top: 50px + padding-bottom: 0 + + .content-wrap + padding-left: 300px + + .tsd-navigation + position: fixed !important + overflow: auto + -webkit-overflow-scrolling: touch + box-sizing: border-box + z-index: 1 + left: 0 + top: 40px + bottom: 0 + width: 300px + padding: 20px + margin: 0 + + .tsd-member .tsd-member + margin-left: 0 + + .tsd-page-toolbar + position: fixed + z-index: 2 + + #tsd-filter .tsd-filter-group + right: 0 + transform: none + + footer + background-color: transparent + + .container + padding: 0 + + .tsd-generator + padding: 0 + + +size-xs-sm + .tsd-navigation + display: none + .content-wrap + padding-left: 0 diff --git a/src/lib/output/themes/default-themes/default/assets/css/main.sass b/src/lib/output/themes/default-themes/default/assets/css/main.sass new file mode 100644 index 000000000..5228405b7 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/main.sass @@ -0,0 +1,27 @@ +@import constants +@import theme + +@import vendors/normalize + +@import setup/mixins +@import setup/grid +@import setup/icons +@import setup/animations +@import setup/typography + +@import layouts/default +@import layouts/minimal + +@import elements/comment +@import elements/filter +@import elements/footer +@import elements/hierarchy +@import elements/index +@import elements/member +@import elements/navigation +@import elements/panel +@import elements/search +@import elements/signatures +@import elements/sources +@import elements/toolbar +@import elements/images diff --git a/src/lib/output/themes/default-themes/default/assets/css/setup/_animations.sass b/src/lib/output/themes/default-themes/default/assets/css/setup/_animations.sass new file mode 100644 index 000000000..a4ace553c --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/setup/_animations.sass @@ -0,0 +1,54 @@ +@keyframes fade-in + from + opacity: 0 + to + opacity: 1 + +@keyframes fade-out + from + opacity: 1 + visibility: visible + to + opacity: 0 + +@keyframes fade-in-delayed + 0% + opacity: 0 + 33% + opacity: 0 + 100% + opacity: 1 + +@keyframes fade-out-delayed + 0% + opacity: 1 + visibility: visible + 66% + opacity: 0 + 100% + opacity: 0 + +@keyframes shift-to-left + from + transform: translate(0,0) + to + transform: translate(-25%,0) + +@keyframes unshift-to-left + from + transform: translate(-25%,0) + to + transform: translate(0,0) + +@keyframes pop-in-from-right + from + transform: translate(100%,0) + to + transform: translate(0,0) + +@keyframes pop-out-to-right + from + transform: translate(0,0) + visibility: visible + to + transform: translate(100%,0) diff --git a/src/lib/output/themes/default-themes/default/assets/css/setup/_grid.sass b/src/lib/output/themes/default-themes/default/assets/css/setup/_grid.sass new file mode 100644 index 000000000..b15b297ac --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/setup/_grid.sass @@ -0,0 +1,60 @@ +=size-xs + @media (max-width: 640px) + & + @content + +=size-sm + @media (min-width: 641px) and (max-width: 900px) + & + @content + +=size-md + @media (min-width: 901px) and (max-width: 1024px) + & + @content + +=size-lg + @media (min-width: 1025px) + & + @content + +=size-xs-sm + @media (max-width: 900px) + & + @content + +=size-md-lg + @media (min-width: 901px) + & + @content + +.container + max-width: 1200px + margin: 0 auto + padding: 0 40px + + +size-xs + padding: 0 20px + +.container-main + padding-bottom: 200px + +.row + +clearfix + display: flex + position: relative + margin: 0 -10px + +.col + @extend %prevent-children-margin + box-sizing: border-box + float: left + padding: 0 10px + +@for $width from 1 to 12 + .col-#{$width} + @extend .col + width: $width / 12 * 100% + + .offset-#{$width} + margin-left: $width / 12 * 100% diff --git a/src/lib/output/themes/default-themes/default/assets/css/setup/_icons.scss b/src/lib/output/themes/default-themes/default/assets/css/setup/_icons.scss new file mode 100644 index 000000000..bafecdf18 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/setup/_icons.scss @@ -0,0 +1,150 @@ +$type-icons: (object-literal), (class), ("class.tsd-has-type-parameter"), + (interface), ("interface.tsd-has-type-parameter"), (namespace, module), + (enum), (enum-member), (signature), (type-alias), + ("type-alias.tsd-has-type-parameter"); + +$member-icons: (variable, property), (get-signature), (set-signature), + (accessor), (function, method, call-signature), + ("function.tsd-has-type-parameter", "method.tsd-has-type-parameter"), + (constructor, constructor-signature), (index-signature), (event), (property), + (function, method, call-signature), (event); + +// parameter +// type-literal +// type-parameter + +.tsd-kind-icon { + display: block; + position: relative; + padding-left: 20px; + text-indent: -20px; + + &:before { + content: ""; + display: inline-block; + vertical-align: middle; + width: 17px; + height: 17px; + margin: 0 3px 2px 0; + background-image: url(../../images/icons.png); + + @include retina { + background-image: url(../../images/icons@2x.png); + background-size: 238px 204px; + } + } +} + +.tsd-signature.tsd-kind-icon:before { + background-position: 0 -153px; +} + +$icon-size: 17px; +$type: -0 * $icon-size; +$type-protected: -1 * $icon-size; +$type-private: -2 * $icon-size; +$member-class-public: -3 * $icon-size; +$member-class-public-inherited: -4 * $icon-size; +$member-class-protected: -5 * $icon-size; +$member-class-protected-inherited: -6 * $icon-size; +$member-private: -7 * $icon-size; +$member: -8 * $icon-size; +$member-protected: -9 * $icon-size; +$member-enum: -10 * $icon-size; +$member-enum-protected: -11 * $icon-size; +$member-interface: -12 * $icon-size; +$member-interface-inherited: -13 * $icon-size; + +@for $index from 1 through length($type-icons) { + @each $kind in nth($type-icons, $index) { + $selector: ".tsd-kind-" + $kind; + $offset: -#{17 * ($index)}px; + + #{$selector} { + > .tsd-kind-icon:before { + background-position: $type $offset; + } + + &.tsd-is-protected > .tsd-kind-icon:before { + background-position: $type-protected $offset; + } + + &.tsd-is-private > .tsd-kind-icon:before { + background-position: $type-private $offset; + } + } + } +} + +@for $index from 1 through length($member-icons) { + @each $kind in nth($member-icons, $index) { + $offset: -#{17 * ($index - 1)}px; + $selector: ".tsd-kind-" + $kind; + @if $index == 10 { + $selector: ".tsd-is-static"; + } @else if $index > 10 { + $selector: ".tsd-is-static.tsd-kind-" + $kind; + } + + #{$selector} { + > .tsd-kind-icon:before { + background-position: $member $offset; + } + + &.tsd-is-protected > .tsd-kind-icon:before { + background-position: $member-protected $offset; + } + + &.tsd-is-private > .tsd-kind-icon:before { + background-position: $member-private $offset; + } + + &.tsd-parent-kind-class { + > .tsd-kind-icon:before { + background-position: $member-class-public $offset; + } + + &.tsd-is-inherited > .tsd-kind-icon:before { + background-position: $member-class-public-inherited $offset; + } + + &.tsd-is-protected > .tsd-kind-icon:before { + background-position: $member-class-protected $offset; + } + + &.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: $member-class-protected-inherited + $offset; + } + + &.tsd-is-private > .tsd-kind-icon:before { + background-position: $member-private $offset; + } + } + + &.tsd-parent-kind-enum { + > .tsd-kind-icon:before { + background-position: $member-enum $offset; + } + + &.tsd-is-protected > .tsd-kind-icon:before { + background-position: $member-enum-protected $offset; + } + + &.tsd-is-private > .tsd-kind-icon:before { + background-position: $member-private $offset; + } + } + + &.tsd-parent-kind-interface { + > .tsd-kind-icon:before { + background-position: $member-interface $offset; + } + + &.tsd-is-inherited > .tsd-kind-icon:before { + background-position: $member-interface-inherited $offset; + } + } + } + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/css/setup/_mixins.sass b/src/lib/output/themes/default-themes/default/assets/css/setup/_mixins.sass new file mode 100644 index 000000000..94cb8d21e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/setup/_mixins.sass @@ -0,0 +1,30 @@ +@mixin vendors($property, $value...) + -webkit-#{$property}: $value + -moz-#{$property}: $value + -ms-#{$property}: $value + -o-#{$property}: $value + #{$property}: $value + +@mixin clearfix + &:after + visibility: hidden + display: block + content: "" + clear: both + height: 0 + +@mixin retina + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) + & + @content + +%prevent-children-margin + > :first-child, + > :first-child > :first-child, + > :first-child > :first-child > :first-child + margin-top: 0 + + > :last-child, + > :last-child > :last-child, + > :last-child > :last-child > :last-child + margin-bottom: 0 diff --git a/src/lib/output/themes/default-themes/default/assets/css/setup/_typography.sass b/src/lib/output/themes/default-themes/default/assets/css/setup/_typography.sass new file mode 100644 index 000000000..25dd94c9d --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/setup/_typography.sass @@ -0,0 +1,50 @@ +body + background: var(--color-background) + font-family: $FONT_FAMILY + font-size: $FONT_SIZE + color: var(--color-text) + +a + color: var(--color-link) + text-decoration: none + + &:hover + text-decoration: underline + +code, pre + font-family: $FONT_FAMILY_MONO + padding: 0.2em + margin: 0 + font-size: $FONT_SIZE_MONO + background-color: var(--color-code-background) + +pre + padding: 10px + + code + padding: 0 + font-size: 100% + background-color: transparent + +blockquote + margin: 1em 0 + padding-left: 1em + border-left: 4px solid gray + +.tsd-typography + line-height: $LINE_HEIGHT + + ul + list-style: square + padding: 0 0 0 20px + margin: 0 + + h4, h5, h6 + font-size: 1em + margin: 0 + + h5, h6 + font-weight: normal + + p, ul, ol + margin: 1em 0 diff --git a/src/lib/output/themes/default-themes/default/assets/css/vendors/_normalize.sass b/src/lib/output/themes/default-themes/default/assets/css/vendors/_normalize.sass new file mode 100644 index 000000000..6ce844af3 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/css/vendors/_normalize.sass @@ -0,0 +1,424 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize + +/* ========================================================================== + * HTML5 display definitions + * ========================================================================== + +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. + +article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary + display: block + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + +audio, canvas, video + display: inline-block + *display: inline + *zoom: 1 + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + +audio:not([controls]) + display: none + height: 0 + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. + +[hidden] + display: none + +/* ========================================================================== + * Base + * ========================================================================== + +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + +html + font-size: 100% + /* 1 + -ms-text-size-adjust: 100% + /* 2 + -webkit-text-size-adjust: 100% + /* 2 + font-family: sans-serif + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. + +button, input, select, textarea + font-family: sans-serif + +/** + * Address margins handled incorrectly in IE 6/7. + +body + margin: 0 + +/* ========================================================================== + * Links + * ========================================================================== + +/** + * Address `outline` inconsistency between Chrome and other browsers. + +a + &:focus + outline: thin dotted + &:active, &:hover + outline: 0 + +/** + * Improve readability when focused and also mouse hovered in all browsers. + +/* ========================================================================== + * Typography + * ========================================================================== + +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + +h1 + font-size: 2em + margin: 0.67em 0 + +h2 + font-size: 1.5em + margin: 0.83em 0 + +h3 + font-size: 1.17em + margin: 1em 0 + +h4 + font-size: 1em + margin: 1.33em 0 + +h5 + font-size: 0.83em + margin: 1.67em 0 + +h6 + font-size: 0.67em + margin: 2.33em 0 + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. + +abbr[title] + border-bottom: 1px dotted + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + +b, strong + font-weight: bold + +blockquote + margin: 1em 40px + +/** + * Address styling not present in Safari 5 and Chrome. + +dfn + font-style: italic + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. + +hr + -moz-box-sizing: content-box + box-sizing: content-box + height: 0 + +/** + * Address styling not present in IE 6/7/8/9. + +mark + background: #ff0 + color: #000 + +/** + * Address margins set differently in IE 6/7. + +p, pre + margin: 1em 0 + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. + +code, kbd, pre, samp + font-family: monospace, serif + _font-family: 'courier new', monospace + font-size: 1em + +/** + * Improve readability of pre-formatted text in all browsers. + +pre + white-space: pre + white-space: pre-wrap + word-wrap: break-word + +/** + * Address CSS quotes not supported in IE 6/7. + +q + quotes: none + &:before, &:after + content: '' + content: none + +/** + * Address `quotes` property not supported in Safari 4. + +/** + * Address inconsistent and variable font size in all browsers. + +small + font-size: 80% + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + +sub + font-size: 75% + line-height: 0 + position: relative + vertical-align: baseline + +sup + font-size: 75% + line-height: 0 + position: relative + vertical-align: baseline + top: -0.5em + +sub + bottom: -0.25em + +/* ========================================================================== + * Lists + * ========================================================================== + +/** + * Address margins set differently in IE 6/7. + +dl, menu, ol, ul + margin: 1em 0 + +dd + margin: 0 0 0 40px + +/** + * Address paddings set differently in IE 6/7. + +menu, ol, ul + padding: 0 0 0 40px + +/** + * Correct list images handled incorrectly in IE 7. + +nav + ul, ol + list-style: none + list-style-image: none + +/* ========================================================================== + * Embedded content + * ========================================================================== + +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. + +img + border: 0 + /* 1 + -ms-interpolation-mode: bicubic +/* 2 + +/** + * Correct overflow displayed oddly in IE 9. + +svg:not(:root) + overflow: hidden + +/* ========================================================================== + * Figures + * ========================================================================== + +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + +figure, form + margin: 0 + +/* ========================================================================== + * Forms + * ========================================================================== + +/** + * Correct margin displayed oddly in IE 6/7. + +/** + * Define consistent border, margin, and padding. + +fieldset + border: 1px solid #c0c0c0 + margin: 0 2px + padding: 0.35em 0.625em 0.75em + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. + +legend + border: 0 + /* 1 + padding: 0 + white-space: normal + /* 2 + *margin-left: -7px +/* 3 + +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. + +button, input, select, textarea + font-size: 100% + /* 1 + margin: 0 + /* 2 + vertical-align: baseline + /* 3 + *vertical-align: middle +/* 3 + +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + +button, input + line-height: normal + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + +button, select + text-transform: none + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + +button, html input[type="button"] + -webkit-appearance: button + /* 2 + cursor: pointer + /* 3 + *overflow: visible +/* 4 + +input + &[type="reset"], &[type="submit"] + -webkit-appearance: button + /* 2 + cursor: pointer + /* 3 + *overflow: visible +/* 4 + +/** + * Re-set default cursor for disabled elements. + +button[disabled], html input[disabled] + cursor: default + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + +input + &[type="checkbox"], &[type="radio"] + box-sizing: border-box + /* 1 + padding: 0 + /* 2 + *height: 13px + /* 3 + *width: 13px + /* 3 + &[type="search"] + -webkit-appearance: textfield + /* 1 + -moz-box-sizing: content-box + -webkit-box-sizing: content-box + /* 2 + box-sizing: content-box + &::-webkit-search-cancel-button, &::-webkit-search-decoration + -webkit-appearance: none + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + +/** + * Remove inner padding and border in Firefox 3+. + +button::-moz-focus-inner, input::-moz-focus-inner + border: 0 + padding: 0 + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. + +textarea + overflow: auto + /* 1 + vertical-align: top +/* 2 + +/* ========================================================================== + * Tables + * ========================================================================== + +/** + * Remove most spacing between table cells. + +table + border-collapse: collapse + border-spacing: 0 diff --git a/src/lib/output/themes/default-themes/default/assets/images/icons.png b/src/lib/output/themes/default-themes/default/assets/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3836d5fe46e48bbe186116855aae879c23935327 GIT binary patch literal 9615 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 NZmR35l_G4O{0}dcmS_L~ literal 0 HcmV?d00001 diff --git a/src/lib/output/themes/default-themes/default/assets/images/icons.psd b/src/lib/output/themes/default-themes/default/assets/images/icons.psd new file mode 100644 index 0000000000000000000000000000000000000000..757fa7a81c0f766ad66f7bf0d00372f3ce822d04 GIT binary patch literal 761587 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

mRc+NAV_is!zCTZqfP^bC=_t9g_=}afWu4uX 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

`Pe0V?_ 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

P!96^jDh;allj-X*y>Y8;hJ+DK} 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 Ja|`+L{{!HfX2$>k literal 0 HcmV?d00001 diff --git a/src/lib/output/themes/default-themes/default/assets/images/icons@2x.png b/src/lib/output/themes/default-themes/default/assets/images/icons@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0 GIT binary patch literal 28144 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 U&wLp6h6BX&boFyt=akR{0G%$)mH+?% literal 0 HcmV?d00001 diff --git a/src/lib/output/themes/default-themes/default/assets/images/widgets.psd b/src/lib/output/themes/default-themes/default/assets/images/widgets.psd new file mode 100644 index 0000000000000000000000000000000000000000..deef704128c6038a19b75f24ac33edf085161525 GIT binary patch literal 187424 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

v|= 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 z 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 Ee-Q1K00000 literal 0 HcmV?d00001 diff --git a/src/lib/output/themes/default-themes/default/assets/images/widgets@2x.png b/src/lib/output/themes/default-themes/default/assets/images/widgets@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbbd57272f3b28f47527d4951ad10f950b8ad43 GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R literal 0 HcmV?d00001 diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/bootstrap.ts b/src/lib/output/themes/default-themes/default/assets/js/src/bootstrap.ts new file mode 100644 index 000000000..5e99eed7e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/bootstrap.ts @@ -0,0 +1,24 @@ +import { Application, registerComponent } from "./typedoc/Application"; +import { MenuHighlight } from "./typedoc/components/MenuHighlight"; +import { initSearch } from "./typedoc/components/Search"; +import { Signature } from "./typedoc/components/Signature"; +import { Toggle } from "./typedoc/components/Toggle"; +import { Filter } from "./typedoc/components/Filter"; + +import "../../css/main.sass"; + +initSearch(); + +registerComponent(MenuHighlight, ".menu-highlight"); +registerComponent(Signature, ".tsd-signatures"); +registerComponent(Toggle, "a[data-toggle]"); + +if (Filter.isSupported()) { + registerComponent(Filter, "#tsd-filter"); +} else { + document.documentElement.classList.add("no-filter"); +} + +const app: Application = new Application(); + +Object.defineProperty(window, "app", { value: app }); diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Application.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Application.ts new file mode 100644 index 000000000..44bd8a9fe --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Application.ts @@ -0,0 +1,53 @@ +import { IComponentOptions } from "./Component"; + +/** + * Component definition. + */ +export interface IComponent { + constructor: new (options: IComponentOptions) => unknown; + selector: string; +} + +/** + * List of all known components. + */ +const components: IComponent[] = []; + +/** + * Register a new component. + */ +export function registerComponent( + constructor: IComponent["constructor"], + selector: string +) { + components.push({ + selector: selector, + constructor: constructor, + }); +} + +/** + * TypeDoc application class. + */ +export class Application { + /** + * Create a new Application instance. + */ + constructor() { + this.createComponents(document.body); + } + + /** + * Create all components beneath the given jQuery element. + */ + public createComponents(context: HTMLElement) { + components.forEach((c) => { + context.querySelectorAll(c.selector).forEach((el) => { + if (!el.dataset.hasInstance) { + new c.constructor({ el: el }); + el.dataset.hasInstance = String(true); + } + }); + }); + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Component.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Component.ts new file mode 100644 index 000000000..1bc43752b --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/Component.ts @@ -0,0 +1,14 @@ +export interface IComponentOptions { + el: HTMLElement; +} + +/** + * TypeDoc component class. + */ +export class Component { + protected el: HTMLElement; + + constructor(options: IComponentOptions) { + this.el = options.el; + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/EventTarget.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/EventTarget.ts new file mode 100644 index 000000000..88f46293d --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/EventTarget.ts @@ -0,0 +1,42 @@ +export interface IEventListener { + (evt: CustomEvent): void; +} + +/** + * TypeDoc event target class. + */ +export class EventTarget { + private listeners: Record[]> = {}; + + public addEventListener(type: string, callback: IEventListener) { + if (!(type in this.listeners)) { + this.listeners[type] = []; + } + this.listeners[type].push(callback); + } + + public removeEventListener(type: string, callback: IEventListener) { + if (!(type in this.listeners)) { + return; + } + const stack = this.listeners[type]; + for (let i = 0, l = stack.length; i < l; i++) { + if (stack[i] === callback) { + stack.splice(i, 1); + return; + } + } + } + + public dispatchEvent(event: CustomEvent) { + if (!(event.type in this.listeners)) { + return true; + } + const stack = this.listeners[event.type].slice(); + + for (let i = 0, l = stack.length; i < l; i++) { + stack[i].call(this, event); + } + return !event.defaultPrevented; + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Filter.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Filter.ts new file mode 100644 index 000000000..650974e85 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Filter.ts @@ -0,0 +1,166 @@ +import { Component, IComponentOptions } from "../Component"; +import { pointerDown, pointerUp } from "../utils/pointer"; + +abstract class FilterItem { + protected key: string; + + protected value: T; + + protected defaultValue: T; + + constructor(key: string, value: T) { + this.key = key; + this.value = value; + this.defaultValue = value; + + this.initialize(); + + if (window.localStorage[this.key]) { + this.setValue(this.fromLocalStorage(window.localStorage[this.key])); + } + } + + protected initialize() {} + + protected abstract handleValueChange(oldValue: T, newValue: T): void; + + protected abstract fromLocalStorage(value: string): T; + + protected abstract toLocalStorage(value: T): string; + + protected setValue(value: T) { + if (this.value == value) return; + + const oldValue = this.value; + this.value = value; + window.localStorage[this.key] = this.toLocalStorage(value); + + this.handleValueChange(oldValue, value); + } +} + +class FilterItemCheckbox extends FilterItem { + private checkbox!: HTMLInputElement; + + protected initialize() { + const checkbox = document.querySelector( + "#tsd-filter-" + this.key + ); + if (!checkbox) return; + + this.checkbox = checkbox; + this.checkbox.addEventListener("change", () => { + this.setValue(this.checkbox.checked); + }); + } + + protected handleValueChange(oldValue: boolean, newValue: boolean) { + if (!this.checkbox) return; + this.checkbox.checked = this.value; + document.documentElement.classList.toggle( + "toggle-" + this.key, + this.value != this.defaultValue + ); + } + + protected fromLocalStorage(value: string): boolean { + return value == "true"; + } + + protected toLocalStorage(value: boolean): string { + return value ? "true" : "false"; + } +} + +class FilterItemSelect extends FilterItem { + private select!: HTMLElement; + + protected initialize() { + document.documentElement.classList.add( + "toggle-" + this.key + this.value + ); + + const select = document.querySelector( + "#tsd-filter-" + this.key + ); + if (!select) return; + + this.select = select; + const onActivate = () => { + this.select.classList.add("active"); + }; + const onDeactivate = () => { + this.select.classList.remove("active"); + }; + + this.select.addEventListener(pointerDown, onActivate); + this.select.addEventListener("mouseover", onActivate); + this.select.addEventListener("mouseleave", onDeactivate); + + this.select.querySelectorAll("li").forEach((el) => { + el.addEventListener(pointerUp, (e) => { + select.classList.remove("active"); + this.setValue((e.target as HTMLElement).dataset.value || ""); + }); + }); + + document.addEventListener(pointerDown, (e) => { + if (this.select.contains(e.target as HTMLElement)) return; + + this.select.classList.remove("active"); + }); + } + + protected handleValueChange(oldValue: string, newValue: string) { + this.select.querySelectorAll("li.selected").forEach((el) => { + el.classList.remove("selected"); + }); + + const selected = this.select.querySelector( + 'li[data-value="' + newValue + '"]' + ); + const label = this.select.querySelector( + ".tsd-select-label" + ); + + if (selected && label) { + selected.classList.add("selected"); + label.textContent = selected.textContent; + } + + document.documentElement.classList.remove("toggle-" + oldValue); + document.documentElement.classList.add("toggle-" + newValue); + } + + protected fromLocalStorage(value: string): string { + return value; + } + + protected toLocalStorage(value: string): string { + return value; + } +} + +export class Filter extends Component { + private optionVisibility: FilterItemSelect; + + private optionInherited: FilterItemCheckbox; + + private optionExternals: FilterItemCheckbox; + + constructor(options: IComponentOptions) { + super(options); + + this.optionVisibility = new FilterItemSelect("visibility", "private"); + this.optionInherited = new FilterItemCheckbox("inherited", true); + this.optionExternals = new FilterItemCheckbox("externals", true); + } + + static isSupported(): boolean { + try { + return typeof window.localStorage != "undefined"; + } catch (e) { + return false; + } + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/MenuHighlight.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/MenuHighlight.ts new file mode 100644 index 000000000..1e6842812 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/MenuHighlight.ts @@ -0,0 +1,141 @@ +import { Component, IComponentOptions } from "../Component"; +import { Viewport } from "../services/Viewport"; + +/** + * Stored element and position data of a single anchor. + */ +interface IAnchorInfo { + /** + * The anchor element. + */ + anchor: HTMLElement; + + /** + * The link element in the navigation representing this anchor. + */ + link: HTMLElement; + + /** + * The vertical offset of the anchor on the page. + */ + position: number; +} + +/** + * Manages the sticky state of the navigation and moves the highlight + * to the current navigation item. + */ +export class MenuHighlight extends Component { + /** + * List of all discovered anchors. + */ + private anchors: IAnchorInfo[] = []; + + /** + * Index of the currently highlighted anchor. + */ + private index: number = -1; + + /** + * Create a new MenuHighlight instance. + * + * @param options Backbone view constructor options. + */ + constructor(options: IComponentOptions) { + super(options); + + Viewport.instance.addEventListener("resize", () => this.onResize()); + Viewport.instance.addEventListener<{ scrollTop: number }>( + "scroll", + (e) => this.onScroll(e) + ); + + this.createAnchors(); + } + + /** + * Find all anchors on the current page. + */ + private createAnchors() { + let base = window.location.href; + if (base.indexOf("#") != -1) { + base = base.substr(0, base.indexOf("#")); + } + + this.el.querySelectorAll("a").forEach((el) => { + const href = el.href; + if (href.indexOf("#") == -1) return; + if (href.substr(0, base.length) != base) return; + + const hash = href.substr(href.indexOf("#") + 1); + const anchor = document.querySelector( + "a.tsd-anchor[name=" + hash + "]" + ); + const link = el.parentNode; + if (!anchor || !link) return; + + this.anchors.push({ + link: link as HTMLElement, + anchor: anchor, + position: 0, + }); + }); + + this.onResize(); + } + + /** + * Triggered after the viewport was resized. + */ + private onResize() { + let anchor: IAnchorInfo; + for ( + let index = 0, count = this.anchors.length; + index < count; + index++ + ) { + anchor = this.anchors[index]; + const rect = anchor.anchor.getBoundingClientRect(); + anchor.position = rect.top + document.body.scrollTop; + } + + this.anchors.sort((a, b) => { + return a.position - b.position; + }); + + const event = new CustomEvent("scroll", { + detail: { + scrollTop: Viewport.instance.scrollTop, + }, + }); + this.onScroll(event); + } + + /** + * Triggered after the viewport was scrolled. + * + * @param event The custom event with the current vertical scroll position. + */ + private onScroll(event: CustomEvent<{ scrollTop: number }>) { + const scrollTop = event.detail.scrollTop + 5; + const anchors = this.anchors; + const count = anchors.length - 1; + let index = this.index; + + while (index > -1 && anchors[index].position > scrollTop) { + index -= 1; + } + + while (index < count && anchors[index + 1].position < scrollTop) { + index += 1; + } + + if (this.index != index) { + if (this.index > -1) + this.anchors[this.index].link.classList.remove("focus"); + this.index = index; + if (this.index > -1) + this.anchors[this.index].link.classList.add("focus"); + } + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Search.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Search.ts new file mode 100644 index 000000000..b799cab20 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Search.ts @@ -0,0 +1,266 @@ +import { debounce } from "../utils/debounce"; +import { Index } from "lunr"; + +interface IDocument { + id: number; + kind: number; + name: string; + url: string; + classes: string; + parent?: string; +} + +interface IData { + kinds: { [kind: number]: string }; + rows: IDocument[]; + index: object; +} + +declare global { + interface Window { + searchData?: IData; + } +} + +interface SearchState { + base: string; + data?: IData; + index?: Index; +} + +export function initSearch() { + const searchEl = document.getElementById("tsd-search"); + if (!searchEl) return; + + const searchScript = document.getElementById( + "search-script" + ) as HTMLScriptElement | null; + searchEl.classList.add("loading"); + if (searchScript) { + searchScript.addEventListener("error", () => { + searchEl.classList.remove("loading"); + searchEl.classList.add("failure"); + }); + searchScript.addEventListener("load", () => { + searchEl.classList.remove("loading"); + searchEl.classList.add("ready"); + }); + if (window.searchData) { + searchEl.classList.remove("loading"); + } + } + + const field = document.querySelector("#tsd-search-field"); + const results = document.querySelector(".results"); + + if (!field || !results) { + throw new Error( + "The input field or the result list wrapper was not found" + ); + } + + let resultClicked = false; + results.addEventListener("mousedown", () => (resultClicked = true)); + results.addEventListener("mouseup", () => { + resultClicked = false; + searchEl.classList.remove("has-focus"); + }); + + field.addEventListener("focus", () => searchEl.classList.add("has-focus")); + field.addEventListener("blur", () => { + if (!resultClicked) { + resultClicked = false; + searchEl.classList.remove("has-focus"); + } + }); + + const state: SearchState = { + base: searchEl.dataset.base + "/", + }; + + bindEvents(searchEl, results, field, state); +} + +function bindEvents( + searchEl: HTMLElement, + results: HTMLElement, + field: HTMLInputElement, + state: SearchState +) { + field.addEventListener( + "input", + debounce(() => { + updateResults(searchEl, results, field, state); + }, 200) + ); + + let preventPress = false; + field.addEventListener("keydown", (e) => { + preventPress = true; + if (e.key == "Enter") { + gotoCurrentResult(results, field); + } else if (e.key == "Escape") { + field.blur(); + } else if (e.key == "ArrowUp") { + setCurrentResult(results, -1); + } else if (e.key === "ArrowDown") { + setCurrentResult(results, 1); + } else { + preventPress = false; + } + }); + field.addEventListener("keypress", (e) => { + if (preventPress) e.preventDefault(); + }); + + /** + * Start searching by pressing slash. + */ + document.body.addEventListener("keydown", (e) => { + if (e.altKey || e.ctrlKey || e.metaKey) return; + if (!field.matches(":focus") && e.key === "/") { + field.focus(); + e.preventDefault(); + } + }); +} + +function checkIndex(state: SearchState, searchEl: HTMLElement) { + if (state.index) return; + + if (window.searchData) { + searchEl.classList.remove("loading"); + searchEl.classList.add("ready"); + state.data = window.searchData; + state.index = Index.load(window.searchData.index); + } +} + +function updateResults( + searchEl: HTMLElement, + results: HTMLElement, + query: HTMLInputElement, + state: SearchState +) { + checkIndex(state, searchEl); + // Don't clear results if loading state is not ready, + // because loading or error message can be removed. + if (!state.index || !state.data) return; + + results.textContent = ""; + + const searchText = query.value.trim(); + + // Perform a wildcard search + let res = state.index.search(`*${searchText}*`); + + for (let i = 0, c = Math.min(10, res.length); i < c; i++) { + const row = state.data.rows[Number(res[i].ref)]; + + // Bold the matched part of the query in the search results + let name = boldMatches(row.name, searchText); + if (row.parent) { + name = `${boldMatches( + row.parent, + searchText + )}.${name}`; + } + + const item = document.createElement("li"); + item.classList.value = row.classes; + + const anchor = document.createElement("a"); + anchor.href = state.base + row.url; + anchor.classList.add("tsd-kind-icon"); + anchor.innerHTML = name; + item.append(anchor); + + results.appendChild(item); + } +} + +/** + * Move the highlight within the result set. + */ +function setCurrentResult(results: HTMLElement, dir: number) { + let current = results.querySelector(".current"); + if (!current) { + current = results.querySelector( + dir == 1 ? "li:first-child" : "li:last-child" + ); + if (current) { + current.classList.add("current"); + } + } else { + const rel = + dir == 1 + ? current.nextElementSibling + : current.previousElementSibling; + if (rel) { + current.classList.remove("current"); + rel.classList.add("current"); + } + } +} + +/** + * Navigate to the highlighted result. + */ +function gotoCurrentResult(results: HTMLElement, field: HTMLInputElement) { + let current = results.querySelector(".current"); + + if (!current) { + current = results.querySelector("li:first-child"); + } + + if (current) { + const link = current.querySelector("a"); + if (link) { + window.location.href = link.href; + } + field.blur(); + } +} + +function boldMatches(text: string, search: string) { + if (search === "") { + return text; + } + + const lowerText = text.toLocaleLowerCase(); + const lowerSearch = search.toLocaleLowerCase(); + + const parts = []; + let lastIndex = 0; + let index = lowerText.indexOf(lowerSearch); + while (index != -1) { + parts.push( + escapeHtml(text.substring(lastIndex, index)), + `${escapeHtml( + text.substring(index, index + lowerSearch.length) + )}` + ); + + lastIndex = index + lowerSearch.length; + index = lowerText.indexOf(lowerSearch, lastIndex); + } + + parts.push(escapeHtml(text.substring(lastIndex))); + + return parts.join(""); +} + +const SPECIAL_HTML = { + "&": "&", + "<": "<", + ">": ">", + "'": "'", + '"': """, +} as const; + +function escapeHtml(text: string) { + return text.replace( + /[&<>"'"]/g, + (match) => SPECIAL_HTML[match as keyof typeof SPECIAL_HTML] + ); +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Signature.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Signature.ts new file mode 100644 index 000000000..1682c82f4 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Signature.ts @@ -0,0 +1,157 @@ +import { Component, IComponentOptions } from "../Component"; +import { Viewport } from "../services/Viewport"; + +/** + * Holds a signature and its description. + */ +class SignatureGroup { + /** + * The target signature. + */ + signature: Element; + + /** + * The description for the signature. + */ + description: Element; + + /** + * Create a new SignatureGroup instance. + * + * @param signature The target signature. + * @param description The description for the signature. + */ + constructor(signature: Element, description: Element) { + this.signature = signature; + this.description = description; + } + + /** + * Add the given class to all elements of the group. + * + * @param className The class name to add. + */ + addClass(className: string): SignatureGroup { + this.signature.classList.add(className); + this.description.classList.add(className); + return this; + } + + /** + * Remove the given class from all elements of the group. + * + * @param className The class name to remove. + */ + removeClass(className: string): SignatureGroup { + this.signature.classList.remove(className); + this.description.classList.remove(className); + return this; + } +} + +/** + * Controls the tab like behaviour of methods and functions with multiple signatures. + */ +export class Signature extends Component { + /** + * List of found signature groups. + */ + private groups: SignatureGroup[] = []; + + /** + * The container holding all the descriptions. + */ + private container?: HTMLElement; + + /** + * The index of the currently displayed signature. + */ + private index: number = -1; + + /** + * Create a new Signature instance. + * + * @param options Backbone view constructor options. + */ + constructor(options: IComponentOptions) { + super(options); + + this.createGroups(); + + if (this.container) { + this.el.classList.add("active"); + Array.from(this.el.children).forEach((signature) => { + signature.addEventListener("touchstart", (event) => + this.onClick(event) + ); + signature.addEventListener("click", (event) => + this.onClick(event) + ); + }); + this.container.classList.add("active"); + this.setIndex(0); + } + } + + /** + * Set the index of the active signature. + * + * @param index The index of the signature to activate. + */ + private setIndex(index: number) { + if (index < 0) index = 0; + if (index > this.groups.length - 1) index = this.groups.length - 1; + if (this.index == index) return; + + const to = this.groups[index]; + if (this.index > -1) { + const from = this.groups[this.index]; + + from.removeClass("current").addClass("fade-out"); + to.addClass("current"); + to.addClass("fade-in"); + Viewport.instance.triggerResize(); + + setTimeout(() => { + from.removeClass("fade-out"); + to.removeClass("fade-in"); + }, 300); + } else { + to.addClass("current"); + Viewport.instance.triggerResize(); + } + + this.index = index; + } + + /** + * Find all signature/description groups. + */ + private createGroups() { + const signatures = this.el.children; + if (signatures.length < 2) return; + + this.container = this.el.nextElementSibling as HTMLElement; + const descriptions = this.container.children; + + this.groups = []; + for (let index = 0; index < signatures.length; index++) { + this.groups.push( + new SignatureGroup(signatures[index], descriptions[index]) + ); + } + } + + /** + * Triggered when the user clicks onto a signature header. + * + * @param e The related event object. + */ + private onClick(e: Event) { + this.groups.forEach((group, index) => { + if (group.signature === e.currentTarget) { + this.setIndex(index); + } + }); + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Toggle.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Toggle.ts new file mode 100644 index 000000000..79b510cdb --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/components/Toggle.ts @@ -0,0 +1,79 @@ +import { Component, IComponentOptions } from "../Component"; +import { hasPointerMoved, pointerDown, pointerUp } from "../utils/pointer"; + +export class Toggle extends Component { + active?: boolean; + + className: string; + + constructor(options: IComponentOptions) { + super(options); + + this.className = this.el.dataset.toggle || ""; + this.el.addEventListener(pointerUp, (e) => this.onPointerUp(e)); + this.el.addEventListener("click", (e) => e.preventDefault()); + document.addEventListener(pointerDown, (e) => + this.onDocumentPointerDown(e) + ); + document.addEventListener(pointerUp, (e) => + this.onDocumentPointerUp(e) + ); + } + + setActive(value: boolean) { + if (this.active == value) return; + this.active = value; + + document.documentElement.classList.toggle( + "has-" + this.className, + value + ); + this.el.classList.toggle("active", value); + + const transition = + (this.active ? "to-has-" : "from-has-") + this.className; + document.documentElement.classList.add(transition); + setTimeout( + () => document.documentElement.classList.remove(transition), + 500 + ); + } + + onPointerUp(event: Event) { + if (hasPointerMoved) return; + this.setActive(true); + event.preventDefault(); + } + + onDocumentPointerDown(e: Event) { + if (this.active) { + if ( + (e.target as HTMLElement).closest( + ".col-menu, .tsd-filter-group" + ) + ) { + return; + } + + this.setActive(false); + } + } + + onDocumentPointerUp(e: Event) { + if (hasPointerMoved) return; + if (this.active) { + if ((e.target as HTMLElement).closest(".col-menu")) { + const link = (e.target as HTMLElement).closest("a"); + if (link) { + let href = window.location.href; + if (href.indexOf("#") != -1) { + href = href.substr(0, href.indexOf("#")); + } + if (link.href.substr(0, href.length) == href) { + setTimeout(() => this.setActive(false), 250); + } + } + } + } + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/services/Viewport.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/services/Viewport.ts new file mode 100644 index 000000000..9909aecf0 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/services/Viewport.ts @@ -0,0 +1,130 @@ +import { EventTarget } from "../EventTarget"; +import { throttle } from "../utils/trottle"; + +/** + * A global service that monitors the window size and scroll position. + */ +export class Viewport extends EventTarget { + public static readonly instance = new Viewport(); + + /** + * The current scroll position. + */ + scrollTop: number = 0; + + /** + * The previous scrollTop. + */ + lastY: number = 0; + + /** + * The width of the window. + */ + width: number = 0; + + /** + * The height of the window. + */ + height: number = 0; + + /** + * The toolbar (contains the search input). + */ + toolbar: HTMLDivElement; + + /** + * Boolean indicating whether the toolbar is shown. + */ + showToolbar: boolean = true; + + /** + * The sticky side nav that contains members of the current page. + */ + secondaryNav: HTMLElement; + + /** + * Create new Viewport instance. + */ + constructor() { + super(); + + this.toolbar = ( + document.querySelector(".tsd-page-toolbar") + ); + this.secondaryNav = ( + document.querySelector(".tsd-navigation.secondary") + ); + + window.addEventListener( + "scroll", + throttle(() => this.onScroll(), 10) + ); + window.addEventListener( + "resize", + throttle(() => this.onResize(), 10) + ); + + this.onResize(); + this.onScroll(); + } + + /** + * Trigger a resize event. + */ + triggerResize() { + const event = new CustomEvent("resize", { + detail: { + width: this.width, + height: this.height, + }, + }); + + this.dispatchEvent(event); + } + + /** + * Triggered when the size of the window has changed. + */ + onResize() { + this.width = window.innerWidth || 0; + this.height = window.innerHeight || 0; + + const event = new CustomEvent("resize", { + detail: { + width: this.width, + height: this.height, + }, + }); + + this.dispatchEvent(event); + } + + /** + * Triggered when the user scrolled the viewport. + */ + onScroll() { + this.scrollTop = window.scrollY || 0; + + const event = new CustomEvent("scroll", { + detail: { + scrollTop: this.scrollTop, + }, + }); + + this.dispatchEvent(event); + this.hideShowToolbar(); + } + + /** + * Handle hiding/showing of the toolbar. + */ + hideShowToolbar() { + const isShown = this.showToolbar; + this.showToolbar = this.lastY >= this.scrollTop || this.scrollTop <= 0; + if (isShown !== this.showToolbar) { + this.toolbar.classList.toggle("tsd-page-toolbar--hide"); + this.secondaryNav.classList.toggle("tsd-navigation--toolbar-hide"); + } + this.lastY = this.scrollTop; + } +} diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/debounce.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/debounce.ts new file mode 100644 index 000000000..5c4df4d69 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/debounce.ts @@ -0,0 +1,7 @@ +export const debounce = (fn: Function, wait: number = 100) => { + let timeout: ReturnType; + return (...args: any[]) => { + clearTimeout(timeout); + timeout = setTimeout(() => fn(args), wait); + }; +}; diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/pointer.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/pointer.ts new file mode 100644 index 000000000..b1d88bd7d --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/pointer.ts @@ -0,0 +1,98 @@ +/** + * Simple point interface. + */ +export interface Point { + x: number; + y: number; +} + +/** + * Event name of the pointer down event. + */ +export let pointerDown: string = "mousedown"; + +/** + * Event name of the pointer move event. + */ +export let pointerMove: string = "mousemove"; + +/** + * Event name of the pointer up event. + */ +export let pointerUp: string = "mouseup"; + +/** + * Position the pointer was pressed at. + */ +export const pointerDownPosition: Point = { x: 0, y: 0 }; + +/** + * Should the next click on the document be supressed? + */ +export let preventNextClick: boolean = false; + +/** + * Is the pointer down? + */ +export let isPointerDown: boolean = false; + +/** + * Is the pointer a touch point? + */ +export let isPointerTouch: boolean = false; + +/** + * Did the pointer move since the last down event? + */ +export let hasPointerMoved: boolean = false; + +/** + * Is the user agent a mobile agent? + */ +export const isMobile: boolean = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent +); +document.documentElement.classList.add(isMobile ? "is-mobile" : "not-mobile"); + +if (isMobile && "ontouchstart" in document.documentElement) { + isPointerTouch = true; + pointerDown = "touchstart"; + pointerMove = "touchmove"; + pointerUp = "touchend"; +} + +document.addEventListener(pointerDown, (e) => { + isPointerDown = true; + hasPointerMoved = false; + const t = + pointerDown == "touchstart" + ? (e as TouchEvent).targetTouches[0] + : (e as MouseEvent); + pointerDownPosition.y = t.pageY || 0; + pointerDownPosition.x = t.pageX || 0; +}); + +document.addEventListener(pointerMove, (e) => { + if (!isPointerDown) return; + if (!hasPointerMoved) { + const t = + pointerDown == "touchstart" + ? (e as TouchEvent).targetTouches[0] + : (e as MouseEvent); + const x = pointerDownPosition.x - (t.pageX || 0); + const y = pointerDownPosition.y - (t.pageY || 0); + hasPointerMoved = Math.sqrt(x * x + y * y) > 10; + } +}); + +document.addEventListener(pointerUp, () => { + isPointerDown = false; +}); + +document.addEventListener("click", (e) => { + if (preventNextClick) { + e.preventDefault(); + e.stopImmediatePropagation(); + preventNextClick = false; + } +}); diff --git a/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/trottle.ts b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/trottle.ts new file mode 100644 index 000000000..421c37805 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/assets/js/src/typedoc/utils/trottle.ts @@ -0,0 +1,12 @@ +export const throttle = ( + fn: (...args: A) => void, + wait = 100 +) => { + let time = Date.now(); + return (...args: A) => { + if (time + wait - Date.now() < 0) { + fn(...args); + time = Date.now(); + } + }; +}; diff --git a/src/lib/output/themes/default-themes/default/layouts/default.hbs b/src/lib/output/themes/default-themes/default/layouts/default.hbs new file mode 100644 index 000000000..34ef5dfaa --- /dev/null +++ b/src/lib/output/themes/default-themes/default/layouts/default.hbs @@ -0,0 +1,50 @@ + + + + + + <IfCond cond="model.name '==' project.name">{{project.name}}</IfCond><IfNotCond cond="model.name '==' project.name">{{model.name}} | {{project.name}}</IfNotCond> + + + + + + + + +{{__partials__.header}} + +

+ +{{__partials__.footer}} + +
+ + +{{__partials__.analytics}} + + + diff --git a/src/lib/output/themes/default-themes/default/layouts/default.tsx b/src/lib/output/themes/default-themes/default/layouts/default.tsx new file mode 100644 index 000000000..1439a8aa6 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/layouts/default.tsx @@ -0,0 +1,56 @@ +import { With, relativeURL, wbr, __partials__, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const defaultLayout = (props) => ( + <> + + + + + + <IfCond cond={props.model.name === props.project.name}>{props.project.name}</IfCond> + <IfNotCond cond={props.model.name === props.project.name}> + {props.model.name} | {props.project.name} + </IfNotCond> + + + + + + + + + {__partials__.header(props)} + +
+
+
{props.contents}
+
+ + + +
+
+
+ + {__partials__.footer(props)} + +
+ + + {__partials__.analytics(props)} + + + +); diff --git a/src/lib/output/themes/default-themes/default/partials/analytics.hbs b/src/lib/output/themes/default-themes/default/partials/analytics.hbs new file mode 100644 index 000000000..2c4ec9bb7 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/analytics.hbs @@ -0,0 +1,11 @@ +{{#if settings.gaID}} + +{{/if}} \ No newline at end of file diff --git a/src/lib/output/themes/default-themes/default/partials/analytics.tsx b/src/lib/output/themes/default-themes/default/partials/analytics.tsx new file mode 100644 index 000000000..112800292 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/analytics.tsx @@ -0,0 +1,15 @@ +import { With, relativeURL, wbr, __partials__ } from "../../lib"; +import React from "react"; +export const analytics = (props) => + !!props.settings.gaID && ( + <> + {" "} + + + ); diff --git a/src/lib/output/themes/default-themes/default/partials/breadcrumb.hbs b/src/lib/output/themes/default-themes/default/partials/breadcrumb.hbs new file mode 100644 index 000000000..42a6de513 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/breadcrumb.hbs @@ -0,0 +1,16 @@ +{{#if parent}} + {{__partials__.breadcrumb}} +
  • + {{#if url}} + {{name}} + {{else}} + {{name}} + {{/if}} +
  • +{{else}} + {{#if url}} +
  • + {{ name }} +
  • + {{/if}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/breadcrumb.tsx b/src/lib/output/themes/default-themes/default/partials/breadcrumb.tsx new file mode 100644 index 000000000..c69119543 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/breadcrumb.tsx @@ -0,0 +1,33 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const breadcrumb = (props) => + props.parent ? ( + <> + {" "} + {With(props, props.parent, (superProps, props) => ( + <>{__partials__.breadcrumb(props)} + ))} +
  • + {!!props.url ? ( + <> + {" "} + {props.name} + + ) : ( + <> + {" "} + {props.name} + + )}{" "} +
  • + + ) : ( + !!props.url && ( + <> + {" "} +
  • + {props.name} +
  • + + ) + ); diff --git a/src/lib/output/themes/default-themes/default/partials/comment.hbs b/src/lib/output/themes/default-themes/default/partials/comment.hbs new file mode 100644 index 000000000..93412200e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/comment.hbs @@ -0,0 +1,22 @@ + + {{#if hasVisibleComponent}} +
    + {{#if shortText}} +
    + {{{shortText}}} +
    + {{/if}} + {{#if text}} + {{{text}}} + {{/if}} + {{#if tags}} +
    + {{#each tags}} +
    {{tagName}}
    +
    {{{text}}}
    + {{/each}} +
    + {{/if}} +
    + {{/if}} +
    diff --git a/src/lib/output/themes/default-themes/default/partials/comment.tsx b/src/lib/output/themes/default-themes/default/partials/comment.tsx new file mode 100644 index 000000000..b31f9074d --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/comment.tsx @@ -0,0 +1,47 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const comment = (props) => ( + <> + {With(props, props.comment, (superProps, props) => ( + <> + {!!props.hasVisibleComponent && ( + <> + {" "} +
    + {!!props.shortText && ( + <> + {" "} +
    + {props.shortText} +
    + + )} + {!!props.text && ( + <> + {" "} + {props.text} + + )} + {!!props.tags && ( + <> + {" "} +
    + {props.tags.map((item, i) => ( + <> + {" "} +
    {item.tagName}
    +
    + {item.text} +
    + + ))}{" "} +
    + + )}{" "} +
    + + )} + + ))} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/footer.hbs b/src/lib/output/themes/default-themes/default/partials/footer.hbs new file mode 100644 index 000000000..06cd7743e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/footer.hbs @@ -0,0 +1,21 @@ + +
    +
    +

    Legend

    +
    + {{#each legend}} +
      + {{#each props}} +
    • {{name}}
    • + {{/each}} +
    + {{/each}} +
    +
    +
    + +{{#unless settings.hideGenerator}} +
    +

    Generated using TypeDoc

    +
    +{{/unless}} diff --git a/src/lib/output/themes/default-themes/default/partials/footer.tsx b/src/lib/output/themes/default-themes/default/partials/footer.tsx new file mode 100644 index 000000000..93bdbcb2a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/footer.tsx @@ -0,0 +1,42 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const footer = (props) => ( + <> +
    +
    +

    Legend

    +
    + {props.legend.map((item, i) => ( + <> + {" "} +
      + {item.props.map((item, i) => ( + <> + {" "} +
    • + {item.name} +
    • + + ))}{" "} +
    + + ))}{" "} +
    +
    +
    + + {!props.settings.hideGenerator && ( + <> + {" "} +
    +

    + Generated using{" "} + + TypeDoc + +

    +
    + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/header.hbs b/src/lib/output/themes/default-themes/default/partials/header.hbs new file mode 100644 index 000000000..37c5cec4a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/header.hbs @@ -0,0 +1,70 @@ +
    +
    +
    +
    + + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + {{#unless settings.excludeExternals}} + + + {{/unless}} +
    +
    + + Menu +
    +
    +
    +
    +
    +
    + {{#if model.parent}} {{! Don't show breadcrumbs on main project page, it is the root page. !}} +
      + {{__partials__.breadcrumb}} +
    + {{/if}} +

    + + {{model.kindString}}  + + {{model.name}} + {{#if model.typeParameters}} + < + {{#each model.typeParameters}} + {{#if @index}}, {{/if}} + {{name}} + {{/each}} + > + {{/if}} +

    +
    +
    +
    diff --git a/src/lib/output/themes/default-themes/default/partials/header.tsx b/src/lib/output/themes/default-themes/default/partials/header.tsx new file mode 100644 index 000000000..2fec0118c --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/header.tsx @@ -0,0 +1,108 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const header = (props) => ( + <> +
    +
    +
    +
    + + +
    +
    + + Options + +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • + All +
    • +
    +
    + + + {!props.settings.excludeExternals && ( + <> + {" "} + + + + )}{" "} +
    +
    + + + Menu + +
    +
    +
    +
    +
    +
    + {!!props.model.parent && ( + <> + {" "} + {/* Don't show breadcrumbs on main project page, it is the root page. !*/} +
      + {With(props, props.model, (superProps, props) => ( + <>{__partials__.breadcrumb(props)} + ))} +
    + + )}{" "} +

    + + {props.model.kindString} + {props.model.name} + {!!props.model.typeParameters && ( + <> + {" "} + {"<"} + {props.model.typeParameters.map((item, i) => ( + <> + {" "} + {!!item.index && ",\xA0"} + {item.name} + + ))}{" "} + {">"} + + )}{" "} + +

    +
    +
    +
    + +); diff --git a/src/lib/output/themes/default-themes/default/partials/hierarchy.hbs b/src/lib/output/themes/default-themes/default/partials/hierarchy.hbs new file mode 100644 index 000000000..915542c37 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/hierarchy.hbs @@ -0,0 +1,17 @@ +
      + {{#each types}} +
    • + {{#if superProps.isTarget}} + {{this}} + {{else}} + {{__partials__.type}} + {{/if}} + + {{#if @last}} + + {{__partials__.hierarchy}} + + {{/if}} +
    • + {{/each}} +
    diff --git a/src/lib/output/themes/default-themes/default/partials/hierarchy.tsx b/src/lib/output/themes/default-themes/default/partials/hierarchy.tsx new file mode 100644 index 000000000..3e81fde0d --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/hierarchy.tsx @@ -0,0 +1,34 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const hierarchy = (props) => ( + <> +
      + {props.types.map((item, i) => ( + <> + {" "} +
    • + {!!item.superProps.isTarget ? ( + <> + {" "} + {item} + + ) : ( + <> + {" "} + {__partials__.type(item)} + + )} + {!!item.last && ( + <> + {" "} + {With(item, item.superProps.next, (superProps, props) => ( + <>{__partials__.hierarchy(props)} + ))} + + )}{" "} +
    • + + ))} +
    + +); diff --git a/src/lib/output/themes/default-themes/default/partials/index.hbs b/src/lib/output/themes/default-themes/default/partials/index.hbs new file mode 100644 index 000000000..a69dd2eae --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/index.hbs @@ -0,0 +1,50 @@ +{{#if categories}} +
    +

    Index

    +
    +
    + {{#each categories}} +
    +

    {{title}}

    + +
    + {{/each}} +
    +
    +
    +{{else}} + {{#if groups}} +
    +

    Index

    +
    +
    + {{#each groups}} +
    + {{#if categories}} + {{#each categories}} +

    {{#if title}}{{title}} {{/if}}{{superProps.title}}

    + + {{/each}} + {{else}} +

    {{title}}

    + + {{/if}} +
    + {{/each}} +
    +
    +
    + {{/if}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/index.tsx b/src/lib/output/themes/default-themes/default/partials/index.tsx new file mode 100644 index 000000000..65ce69e73 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/index.tsx @@ -0,0 +1,161 @@ +import { + With, + relativeURL, + wbr, + __partials__, + Compact, + IfCond, + IfNotCond, + Markdown, +} from "../../lib"; +import React from "react"; +import { DeclarationReflection } from "../../../../../.."; +export const index = (props: DeclarationReflection) => + props.categories ? ( + <> + {" "} +
    +

    Index

    +
    +
    + {props.categories.map((item, i) => ( + <> + {" "} +
    +

    {item.title}

    + +
    + + ))}{" "} +
    +
    +
    + + ) : ( + !!props.groups && ( + <> + {" "} +
    +

    Index

    +
    +
    + {props.groups.map((item, i) => ( + <> + {" "} +
    + {!!item.categories ? ( + item.categories.map((item, i) => ( + <> + {" "} +

    + {!!item.title && ( + <>{item.title} + )} + {item.superProps.title} +

    + + + )) + ) : ( + <> + {" "} +

    {item.title}

    + + + )}{" "} +
    + + ))}{" "} +
    +
    +
    + + ) + ); diff --git a/src/lib/output/themes/default-themes/default/partials/member.declaration.hbs b/src/lib/output/themes/default-themes/default/partials/member.declaration.hbs new file mode 100644 index 000000000..e3fa33c74 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.declaration.hbs @@ -0,0 +1,36 @@ +
    + {{{wbr name}}} + {{#if typeParameters}} + < + {{#each typeParameters}} + {{#if @index}}, {{/if}} + {{name}} + {{/each}} + > + {{/if}} + {{#if isOptional}}?{{/if}}: {{__partials__.type}} + {{#if defaultValue}} + +  =  + {{defaultValue}} + + {{/if}} +
    + +{{__partials__.member.sources}} + +{{__partials__.comment}} + +{{#if typeParameters}} +

    Type parameters

    + {{__partials__.typeParameters}} +{{/if}} + +{{#if type.declaration}} +
    +

    Type declaration

    + + {{__partials__.parameter}} + +
    +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/member.declaration.tsx b/src/lib/output/themes/default-themes/default/partials/member.declaration.tsx new file mode 100644 index 000000000..f2ff21aff --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.declaration.tsx @@ -0,0 +1,61 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberDeclaration = (props) => ( + <> +
    + + {wbr(TODO)} + {!!props.typeParameters && ( + <> + {" "} + {"<"} + {props.typeParameters.map((item, i) => ( + <> + {" "} + {!!item.index && ",\xA0"} + {item.name} + + ))}{" "} + {">"} + + )}{" "} + {!!props.isOptional && "?"}: + {With(props, props.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + {!!props.defaultValue && ( + <> + {" "} + +  = + {props.defaultValue} + + + )} + +
    + + {__partials__["memberSources"](props)} + + {__partials__.comment(props)} + + {!!props.typeParameters && ( + <> + {" "} +

    Type parameters

    + {__partials__.typeParameters(props)} + + )} + {!!props.type.declaration && ( + <> + {" "} +
    +

    Type declaration

    + {With(props, props.type.declaration, (superProps, props) => ( + <>{__partials__.parameter(props)} + ))} +
    + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/member.getterSetter.hbs b/src/lib/output/themes/default-themes/default/partials/member.getterSetter.hbs new file mode 100644 index 000000000..09b776f10 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.getterSetter.hbs @@ -0,0 +1,37 @@ +
      + {{#if getSignature}} + +
    • + get  + {{superProps.name}} + {{__partials__.member.signature.title hideName=true }} +
    • +
      + {{/if}} + {{#if setSignature}} + +
    • + set  + {{superProps.name}} + {{__partials__.member.signature.title hideName=true }} +
    • +
      + {{/if}} +
    + +
      + {{#if getSignature}} + +
    • + {{__partials__.member.signature.body }} +
    • +
      + {{/if}} + {{#if setSignature}} + +
    • + {{__partials__.member.signature.body }} +
    • +
      + {{/if}} +
    diff --git a/src/lib/output/themes/default-themes/default/partials/member.getterSetter.tsx b/src/lib/output/themes/default-themes/default/partials/member.getterSetter.tsx new file mode 100644 index 000000000..789485800 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.getterSetter.tsx @@ -0,0 +1,63 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberGetterSetter = (props) => ( + <> +
      + {!!props.getSignature && ( + <> + {" "} + {With(props, props.getSignature, (superProps, props) => ( + <> +
    • + + get + {props.superProps.name} + {__partials__["memberSignatureTitle"](props, { hideName: true })} + +
    • + + ))} + + )} + {!!props.setSignature && ( + <> + {" "} + {With(props, props.setSignature, (superProps, props) => ( + <> +
    • + + set + {props.superProps.name} + {__partials__["memberSignatureTitle"](props, { hideName: true })} + +
    • + + ))} + + )} +
    + +
      + {!!props.getSignature && ( + <> + {" "} + {With(props, props.getSignature, (superProps, props) => ( + <> +
    • {__partials__["memberSignatureBody"](props)}
    • + + ))} + + )} + {!!props.setSignature && ( + <> + {" "} + {With(props, props.setSignature, (superProps, props) => ( + <> +
    • {__partials__["memberSignatureBody"](props)}
    • + + ))} + + )} +
    + +); diff --git a/src/lib/output/themes/default-themes/default/partials/member.hbs b/src/lib/output/themes/default-themes/default/partials/member.hbs new file mode 100644 index 000000000..24ce46a1f --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.hbs @@ -0,0 +1,24 @@ +
    + + {{#if name}} +

    {{#each flags}}{{this}} {{/each}}{{{wbr name}}}

    + {{/if}} + + {{#if signatures}} + {{__partials__.member.signatures}} + {{else}}{{#if hasGetterOrSetter}} + {{__partials__.member.getterSetter}} + {{else}}{{#if isReference}} + {{__partials__.member.reference}} + {{else}} + {{__partials__.member.declaration}} + {{/if}}{{/if}}{{/if}} + + {{#each groups}} + {{#each children}} + {{#unless hasOwnDocument}} + {{__partials__.member}} + {{/unless}} + {{/each}} + {{/each}} +
    diff --git a/src/lib/output/themes/default-themes/default/partials/member.reference.hbs b/src/lib/output/themes/default-themes/default/partials/member.reference.hbs new file mode 100644 index 000000000..e431a4399 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.reference.hbs @@ -0,0 +1,16 @@ +{{#if tryGetTargetReflectionDeep}} + + + Re-exports {{name}} + + + {{#if flags.isExported}} + Renames and re-exports {{name}} + {{else}} + Renames and exports {{name}} + {{/if}} + + +{{else}} + Re-exports {{name}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/member.reference.tsx b/src/lib/output/themes/default-themes/default/partials/member.reference.tsx new file mode 100644 index 000000000..7ddab00eb --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.reference.tsx @@ -0,0 +1,30 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberReference = (props) => + props.tryGetTargetReflectionDeep ? ( + <> + {" "} + {With(props, props.tryGetTargetReflectionDeep, (superProps, props) => ( + <> + + Re-exports {props.name} + + + {!!props.flags.isExported ? ( + <> + {" "} + Renames and re-exports {props.name} + + ) : ( + <> + {" "} + Renames and exports {props.name} + + )}{" "} + + + ))} + + ) : ( + <> Re-exports {props.name} + ); diff --git a/src/lib/output/themes/default-themes/default/partials/member.signature.body.hbs b/src/lib/output/themes/default-themes/default/partials/member.signature.body.hbs new file mode 100644 index 000000000..1af333695 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.signature.body.hbs @@ -0,0 +1,56 @@ +{{#unless hideSources}} + {{__partials__.member.sources}} +{{/unless}} + +{{__partials__.comment}} + +{{#if typeParameters}} +

    Type parameters

    + {{__partials__.typeParameters}} +{{/if}} + +{{#if parameters}} +

    Parameters

    +
      + {{#each parameters}} +
    • +
      + {{#each flags}} + {{this}}  + {{/each}} + {{#if flags.isRest}}...{{/if}} + {{name}}:  + {{__partials__.type}} + {{#if defaultValue}} + +  =  + {{defaultValue}} + + {{/if}} +
      + + {{__partials__.comment}} + + {{#if type.declaration}} + + {{__partials__.parameter}} + + {{/if}} +
    • + {{/each}} +
    +{{/if}} + +{{#if type}} +

    Returns {{__partials__.type}}

    + + {{#if comment.returns}} + {{{comment.returns}}} + {{/if}} + + {{#if type.declaration}} + + {{__partials__.parameter}} + + {{/if}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/member.signature.body.tsx b/src/lib/output/themes/default-themes/default/partials/member.signature.body.tsx new file mode 100644 index 000000000..de7ea6a5a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.signature.body.tsx @@ -0,0 +1,91 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberSignatureBody = (props) => ( + <> + {!props.hideSources && <> {__partials__["memberSources"](props)}} + {__partials__.comment(props)} + + {!!props.typeParameters && ( + <> + {" "} +

    Type parameters

    + {__partials__.typeParameters(props)} + + )} + {!!props.parameters && ( + <> + {" "} +

    Parameters

    +
      + {props.parameters.map((item, i) => ( + <> + {" "} +
    • +
      + + {item.flags.map((item, i) => ( + <> + {" "} + {item} + + ))}{" "} + {!!item.flags.isRest && ...} + {item.name}: + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + {!!item.defaultValue && ( + <> + {" "} + +  = + {item.defaultValue} + + + )}{" "} + +
      + {__partials__.comment(item)} + {!!item.type.declaration && ( + <> + {" "} + {With(item, item.type.declaration, (superProps, props) => ( + <>{__partials__.parameter(props)} + ))} + + )}{" "} +
    • + + ))}{" "} +
    + + )} + {!!props.type && ( + <> + {" "} +

    + Returns{" "} + + {With(props, props.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +

    + {!!props.comment.returns && ( + <> + {" "} + {props.comment.returns} + + )} + {!!props.type.declaration && ( + <> + {" "} + {With(props, props.type.declaration, (superProps, props) => ( + <>{__partials__.parameter(props)} + ))} + + )} + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/member.signature.title.hbs b/src/lib/output/themes/default-themes/default/partials/member.signature.title.hbs new file mode 100644 index 000000000..1a871891f --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.signature.title.hbs @@ -0,0 +1,41 @@ +{{#unless hideName}} + {{{wbr name}}} +{{else}} + + {{#if flags.isAbstract}} + abstract + {{/if}} + new + +{{/unless}} +{{#if typeParameters}} + < + {{#each typeParameters}} + {{#if @index}}, {{/if}} + {{name}} + {{/each}} + > +{{/if}} +( +{{#each parameters}} + {{#if @index}}, {{/if}} + {{#if flags.isRest}}...{{/if}} + {{name}} + + {{#if flags.isOptional}}?{{/if}} + {{#if defaultValue}}?{{/if}} + :  + + {{__partials__.type}} +{{/each}} +) +{{#if type}} + {{#if arrowStyle}} + => + {{else}} + : + {{/if}} + + {{__partials__.type}} + +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/member.signature.title.tsx b/src/lib/output/themes/default-themes/default/partials/member.signature.title.tsx new file mode 100644 index 000000000..5f03f9f1e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.signature.title.tsx @@ -0,0 +1,71 @@ +import { With, relativeURL, wbr, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberSignatureTitle = (props) => ( + <> + {!props.hideName ? ( + <> {wbr(TODO)} + ) : ( + <> + {" "} + + {!!props.flags.isAbstract && ( + <> + {" "} + abstract + + )}{" "} + new + + + )} + {!!props.typeParameters && ( + <> + {" "} + {"<"} + {props.typeParameters.map((item, i) => ( + <> + {" "} + {!!item.index && ",\xA0"} + {item.name} + + ))}{" "} + {">"} + + )} + ( + {props.parameters.map((item, i) => ( + <> + {" "} + {!!item.index && ",\xA0"} + {!!item.flags.isRest && ...} + {item.name} + + {!!item.flags.isOptional && "?"} + {!!item.defaultValue && "?"}: + + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ))} + ) + {!!props.type && ( + <> + {!!props.arrowStyle ? ( + <> + {" "} + ={">"} + + ) : ( + <> + {" "} + : + + )}{" "} + {With(props, props.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/member.signatures.hbs b/src/lib/output/themes/default-themes/default/partials/member.signatures.hbs new file mode 100644 index 000000000..45bc4aa52 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.signatures.hbs @@ -0,0 +1,13 @@ +
      + {{#each signatures}} +
    • {{__partials__.member.signature.title }}
    • + {{/each}} +
    + +
      + {{#each signatures}} +
    • + {{__partials__.member.signature.body }} +
    • + {{/each}} +
    diff --git a/src/lib/output/themes/default-themes/default/partials/member.signatures.tsx b/src/lib/output/themes/default-themes/default/partials/member.signatures.tsx new file mode 100644 index 000000000..5964655f5 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.signatures.tsx @@ -0,0 +1,25 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberSignatures = (props) => ( + <> +
      + {props.signatures.map((item, i) => ( + <> + {" "} +
    • + {__partials__.memberSignatureTitle(item)} +
    • + + ))} +
    + +
      + {props.signatures.map((item, i) => ( + <> + {" "} +
    • {__partials__.memberSignatureBody(item)}
    • + + ))} +
    + +); diff --git a/src/lib/output/themes/default-themes/default/partials/member.sources.hbs b/src/lib/output/themes/default-themes/default/partials/member.sources.hbs new file mode 100644 index 000000000..690c7c8b1 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.sources.hbs @@ -0,0 +1,22 @@ + diff --git a/src/lib/output/themes/default-themes/default/partials/member.sources.tsx b/src/lib/output/themes/default-themes/default/partials/member.sources.tsx new file mode 100644 index 000000000..f21f0f47b --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.sources.tsx @@ -0,0 +1,70 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const memberSources = (props) => ( + <> + + +); diff --git a/src/lib/output/themes/default-themes/default/partials/member.tsx b/src/lib/output/themes/default-themes/default/partials/member.tsx new file mode 100644 index 000000000..000e306ec --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/member.tsx @@ -0,0 +1,39 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const member = (props) => ( + <> +
    + + {!!props.name && ( + <> + {" "} +

    + {props.flags.map((item, i) => ( + <> + {item}{" "} + + ))} + {wbr(TODO)} +

    + + )} + {!!props.signatures ? ( + <> {__partials__["memberSignatures"](props)} + ) : props.hasGetterOrSetter ? ( + <>{__partials__["memberGetterSetter"](props)} + ) : props.isReference ? ( + <>{__partials__["memberReference"](props)} + ) : ( + <> {__partials__["memberDeclaration"](props)} + )} + + {props.groups.map((item, i) => ( + <> + {item.children.map((item, i) => ( + <>{!item.hasOwnDocument && <> {__partials__.member(item)}} + ))} + + ))} +
    + +); diff --git a/src/lib/output/themes/default-themes/default/partials/members.group.hbs b/src/lib/output/themes/default-themes/default/partials/members.group.hbs new file mode 100644 index 000000000..4f0578bb3 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/members.group.hbs @@ -0,0 +1,21 @@ +{{#if categories}} + {{#each categories}} +
    +

    {{#if title}}{{title}} {{/if}}{{superProps.title}}

    + {{#each children}} + {{#unless hasOwnDocument}} + {{__partials__.member}} + {{/unless}} + {{/each}} +
    + {{/each}} +{{else}} +
    +

    {{title}}

    + {{#each children}} + {{#unless hasOwnDocument}} + {{__partials__.member}} + {{/unless}} + {{/each}} +
    +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/members.group.tsx b/src/lib/output/themes/default-themes/default/partials/members.group.tsx new file mode 100644 index 000000000..051e49d53 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/members.group.tsx @@ -0,0 +1,29 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const membersGroup = (props) => + props.categories ? ( + props.categories.map((item, i) => ( + <> + {" "} +
    +

    + {!!item.title && <>{item.title} } + {item.superProps.title} +

    + {item.children.map((item, i) => ( + <>{!item.hasOwnDocument && <> {__partials__.member(item)}} + ))}{" "} +
    + + )) + ) : ( + <> + {" "} +
    +

    {props.title}

    + {props.children.map((item, i) => ( + <>{!item.hasOwnDocument && <> {__partials__.member(item)}} + ))}{" "} +
    + + ); diff --git a/src/lib/output/themes/default-themes/default/partials/members.hbs b/src/lib/output/themes/default-themes/default/partials/members.hbs new file mode 100644 index 000000000..dcbc3fa68 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/members.hbs @@ -0,0 +1,20 @@ +{{#if categories}} + {{#each categories}} + {{#unless allChildrenHaveOwnDocument}} +
    +

    {{title}}

    + {{#each children}} + {{#unless hasOwnDocument}} + {{__partials__.member}} + {{/unless}} + {{/each}} +
    + {{/unless}} + {{/each}} +{{else}} + {{#each groups}} + {{#unless allChildrenHaveOwnDocument}} + {{__partials__.members.group}} + {{/unless}} + {{/each}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/members.tsx b/src/lib/output/themes/default-themes/default/partials/members.tsx new file mode 100644 index 000000000..3302c1952 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/members.tsx @@ -0,0 +1,22 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const members = (props) => + Boolean(props.categories) + ? props.categories.map((item, i) => ( + <> + {!item.allChildrenHaveOwnDocument && ( + <> + {" "} +
    +

    {item.title}

    + {item.children.map((item, i) => ( + <>{!item.hasOwnDocument && <> {__partials__.member(item)}} + ))}{" "} +
    + + )} + + )) + : props.groups.map((item, i) => ( + <>{!item.allChildrenHaveOwnDocument && <> {__partials__.membersGroup(item)}} + )); diff --git a/src/lib/output/themes/default-themes/default/partials/navigation.hbs b/src/lib/output/themes/default-themes/default/partials/navigation.hbs new file mode 100644 index 000000000..278c73e5b --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/navigation.hbs @@ -0,0 +1,26 @@ +{{#if isVisible}} + {{#if isLabel}} +
  • + {{{wbr title}}} +
  • + {{else}} + {{#if isGlobals}} +
  • + {{{wbr title}}} +
  • + {{else}} +
  • + {{{wbr title}}} + {{#if isInPath}} + {{#if children}} +
      + {{#each children}} + {{__partials__.navigation}} + {{/each}} +
    + {{/if}} + {{/if}} +
  • + {{/if}} + {{/if}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/navigation.tsx b/src/lib/output/themes/default-themes/default/partials/navigation.tsx new file mode 100644 index 000000000..a2eff7aaa --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/navigation.tsx @@ -0,0 +1,38 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const navigation = (props) => + Boolean(props.isVisible) && + (props.isLabel ? ( + <> + {" "} +
  • + {wbr(TODO)} +
  • + + ) : props.isGlobals ? ( + <> + {" "} +
  • + + {wbr(TODO)} + +
  • + + ) : ( + <> + {" "} +
  • + {wbr(TODO)} + {!!props.isInPath && !!props.children && ( + <> + {" "} +
      + {props.children.map((item, i) => ( + <> {__partials__.navigation(item)} + ))}{" "} +
    + + )}{" "} +
  • + + )); diff --git a/src/lib/output/themes/default-themes/default/partials/parameter.hbs b/src/lib/output/themes/default-themes/default/partials/parameter.hbs new file mode 100644 index 000000000..20c50d288 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/parameter.hbs @@ -0,0 +1,134 @@ +
      + {{#if signatures}} +
    • +
        + {{#each signatures}} +
      • + {{__partials__.member.signature.title hideName=true }} +
      • + {{/each}} +
      + +
        + {{#each signatures}} +
      • {{__partials__.member.signature.body hideSources=true }}
      • + {{/each}} +
      +
    • + {{/if}} + {{#if indexSignature}} +
    • +
      + [ + {{#each indexSignature.parameters}} + {{#if flags.isRest}}...{{/if}}{{name}}: {{__partials__.type}} + {{/each}} + ]:  + {{__partials__.type}} +
      + + + {{__partials__.comment}} + + + {{#if indexSignature.type.declaration}} + + {{__partials__.parameter}} + + {{/if}} +
    • + {{/if}} + {{#each children}} + {{#if signatures}} +
    • +
      + {{#if flags.isRest}}...{{/if}} + {{{wbr name}}} + + {{#if isOptional}}?{{/if}} + :  + + function +
      + + {{__partials__.member.signatures}} +
    • + {{else}}{{#if type}} {{! standard type }} +
    • +
      + {{#each flags}} + {{this}}  + {{/each}} + {{#if flags.isRest}}...{{/if}} + + {{{wbr superProps.name}}} + + {{#if superProps.flags.isOptional}}?{{/if}} + :  + + {{__partials__.type}} + +
      + + {{__partials__.comment}} + + {{#if children}} + {{__partials__.parameter}} + {{/if}} + + {{#if type.declaration}} + + {{__partials__.parameter}} + + {{/if}} +
    • + {{else}} {{! getter/setter }} + {{! getter }} +
    • +
      + {{#each flags}} + {{this}}  + {{/each}} + get  + {{{wbr superProps.name}}} + ():  + + {{__partials__.type}} + +
      + + {{__partials__.comment }} +
    • +
      + {{! setter }} +
    • +
      + {{#each flags}} + {{this}}  + {{/each}} + set  + {{{wbr superProps.name}}} + ( + {{#each parameters}} + {{name}} + : + {{#if type}} + + {{__partials__.type}} + + {{else}} + any + {{/if}} + {{/each}} + ):  + + {{__partials__.type}} + +
      + + {{__partials__.comment }} +
    • +
      + {{/if}}{{/if}} + {{/each}} +
    diff --git a/src/lib/output/themes/default-themes/default/partials/parameter.tsx b/src/lib/output/themes/default-themes/default/partials/parameter.tsx new file mode 100644 index 000000000..e9dd88873 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/parameter.tsx @@ -0,0 +1,211 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const parameter = (props) => ( + <> +
      + {!!props.signatures && ( + <> + {" "} +
    • +
        + {props.signatures.map((item, i) => ( + <> + {" "} +
      • + + {__partials__["memberSignatureTitle"](item, { hideName: true })} + +
      • + + ))}{" "} +
      + +
        + {props.signatures.map((item, i) => ( + <> + {" "} +
      • + {__partials__["memberSignatureBody"](item, { hideSources: true })} +
      • + + ))}{" "} +
      +
    • + + )} + {!!props.indexSignature && ( + <> + {" "} +
    • +
      + + [ + {props.indexSignature.parameters.map((item, i) => ( + <> + {" "} + {!!item.flags.isRest && ...} + {item.name}: + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ))}{" "} + ]:  + {With(props, props.indexSignature.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +
      + {With(props, props.indexSignature, (superProps, props) => ( + <>{__partials__.comment(props)} + ))} + {!!props.indexSignature.type.declaration && ( + <> + {" "} + {With(props, props.indexSignature.type.declaration, (superProps, props) => ( + <>{__partials__.parameter(props)} + ))} + + )}{" "} +
    • + + )} + {props.children.map((item, i) => ( + <> + {!!item.signatures ? ( + <> + {" "} +
    • +
      + + {!!item.flags.isRest && ...} + {wbr(TODO)} + {!!item.isOptional && "?"}: + function + +
      + + {__partials__.memberSignatures(item)} +
    • + + ) : item.type ? ( + <> + {" "} + {/* standard type */} +
    • +
      + + {item.flags.map((item, i) => ( + <> + {" "} + {item} + + ))}{" "} + {!!item.flags.isRest && ...} + {With(item, item.type, (superProps, props) => ( + <> + {wbr(TODO)} + + {!!props.superProps.flags.isOptional && "?"}: + + {__partials__.type(props)} + + ))} + +
      + {__partials__.comment(item)} + {!!item.children && <> {__partials__.parameter(item)}} + {!!item.type.declaration && ( + <> + {" "} + {With(item, item.type.declaration, (superProps, props) => ( + <>{__partials__.parameter(props)} + ))} + + )}{" "} +
    • + + ) : ( + <> + {" "} + {/* getter/setter */} + {With(item, item.getSignature, (superProps, props) => ( + <> + {" "} + {/* getter */} +
    • +
      + + {props.flags.map((item, i) => ( + <> + {" "} + {item} + + ))}{" "} + get  + {wbr(TODO)} + ():  + {With(props, props.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +
      + + {__partials__.comment(props)} +
    • + + ))} + {With(item, item.setSignature, (superProps, props) => ( + <> + {" "} + {/* setter */} +
    • +
      + + {props.flags.map((item, i) => ( + <> + {" "} + {item} + + ))}{" "} + set  + {wbr(TODO)} + ( + {props.parameters.map((item, i) => ( + <> + {" "} + {item.name} + : + {!!item.type ? ( + <> + {" "} + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ) : ( + <> + {" "} + any + + )} + + ))}{" "} + ):  + {With(props, props.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +
      + + {__partials__.comment(props)} +
    • + + ))} + + )} + + ))} +
    + +); diff --git a/src/lib/output/themes/default-themes/default/partials/toc.hbs b/src/lib/output/themes/default-themes/default/partials/toc.hbs new file mode 100644 index 000000000..fca80fde2 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/toc.hbs @@ -0,0 +1,10 @@ +
  • + {{{wbr title}}} + {{#if children}} +
      + {{#each children}} + {{__partials__.toc}} + {{/each}} +
    + {{/if}} +
  • diff --git a/src/lib/output/themes/default-themes/default/partials/toc.root.hbs b/src/lib/output/themes/default-themes/default/partials/toc.root.hbs new file mode 100644 index 000000000..5c6cf6842 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/toc.root.hbs @@ -0,0 +1,18 @@ +{{! {{#if isInPath}} +{{! }} +{{!
      }} +{{! {{/if}} +
    • + {{{wbr title}}} + {{#if children}} +
        + {{#each children}} + {{__partials__.toc}} + {{/each}} +
      + {{/if}} +
    • +{{! {{#if isInPath}} +{{!
    }} +{{!
      }} +{{! {{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/toc.root.tsx b/src/lib/output/themes/default-themes/default/partials/toc.root.tsx new file mode 100644 index 000000000..b7e4e0862 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/toc.root.tsx @@ -0,0 +1,29 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const tocRoot = (props) => ( + <> + {/* {{#if isInPath*/} + {/*
    */} + {/*
      */} + {/* {{/if*/} +
    • + + {wbr(TODO)} + + {!!props.children && ( + <> + {" "} +
        + {props.children.map((item, i) => ( + <> {__partials__.toc(item)} + ))}{" "} +
      + + )} +
    • + {/* {{#if isInPath*/} + {/*
    */} + {/*
      */} + {/* {{/if*/} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/toc.tsx b/src/lib/output/themes/default-themes/default/partials/toc.tsx new file mode 100644 index 000000000..661002bb4 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/toc.tsx @@ -0,0 +1,21 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const toc = (props) => ( + <> +
    • + + {wbr(TODO)} + + {!!props.children && ( + <> + {" "} +
        + {props.children.map((item, i) => ( + <> {__partials__.toc(item)} + ))}{" "} +
      + + )} +
    • + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.hbs new file mode 100644 index 000000000..947d612a8 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.hbs @@ -0,0 +1,5 @@ + + + {{__partials__.type needsParens=true}} + [] + diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.tsx new file mode 100644 index 000000000..e92587591 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/array.tsx @@ -0,0 +1,14 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { ArrayType } from "../../../../typedoc/src/lib/models"; +export const array = (props: ArrayType) => ( + <> + {With(props, props.elementType, (superProps, props) => ( + <> + {__partials__.type(props, { needsParens: true })} + [] + + ))} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.hbs new file mode 100644 index 000000000..50483fb95 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.hbs @@ -0,0 +1,22 @@ + + {{#if needsParens}} + ( + {{/if}} + + {{__partials__.type needsParens=true}} + + extends + + {{__partials__.type}} + + ? + + {{__partials__.type}} + + : + + {{__partials__.type}} + + {{#if needsParens}} + ) + {{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.tsx new file mode 100644 index 000000000..fd6cb0304 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/conditional.tsx @@ -0,0 +1,35 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { ConditionalType } from "../../../../typedoc/src/lib/models"; +export const conditional = (props: ConditionalType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( + <> + {!!needsParens && ( + <> + {" "} + ( + + )}{" "} + {With(props, props.checkType, (superProps, props) => ( + <>{__partials__.type(props, { needsParens: true })} + ))} + extends + {With(props, props.extendsType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + ? + {With(props, props.trueType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + : + {With(props, props.falseType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + {!!needsParens && ( + <> + {" "} + ) + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/index.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/index.tsx new file mode 100644 index 000000000..4b59e9bea --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/index.tsx @@ -0,0 +1,45 @@ +import { array } from "./array"; +import { conditional } from "./conditional"; +import { indexedAccess } from "./indexedAccess"; +import { inferred } from "./inferred"; +import { intersection } from "./intersection"; +import { intrinsic } from "./intrinsic"; +import { literal } from "./literal"; +import { mapped } from "./mapped"; +import { namedTupleMember } from "./named-tuple-member"; +import { optional } from "./optional"; +import { predicate } from "./predicate"; +import { query } from "./query"; +import { reference } from "./reference"; +import { reflection } from "./reflection"; +import { rest } from "./rest"; +import { templateLiteral } from "./template-literal"; +import { tuple } from "./tuple"; +import { typeOperator } from "./typeOperator"; +import { typeParameter } from "./typeParameter"; +import { union } from "./union"; +import { unknown } from "./unknown"; + +export const typePartials = { + array, + conditional, + indexedAccess, + inferred, + intersection, + intrinsic, + literal, + mapped, + "named-tuple-member": namedTupleMember, + optional, + predicate, + query, + reference, + reflection, + rest, + "template-literal": templateLiteral, + tuple, + typeOperator, + typeParameter, + union, + unknown, +}; diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.hbs new file mode 100644 index 000000000..100aa0ee0 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.hbs @@ -0,0 +1,9 @@ + + + {{__partials__.type}} + + [ + + {{__partials__.type}} + + ] diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.tsx new file mode 100644 index 000000000..3738d59b8 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/indexedAccess.tsx @@ -0,0 +1,16 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { IndexedAccessType } from "../../../../typedoc/src/lib/models"; +export const indexedAccess = (props: IndexedAccessType) => ( + <> + {With(props, props.objectType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + [ + {With(props, props.indexType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + ] + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.hbs new file mode 100644 index 000000000..bcc4cbade --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.hbs @@ -0,0 +1,2 @@ + + infer {{name}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.tsx new file mode 100644 index 000000000..68321ba1a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/inferred.tsx @@ -0,0 +1,8 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { InferredType } from "../../../../typedoc/src/lib/models"; +export const inferred = (props: InferredType) => ( + <> + infer {props.name} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.hbs new file mode 100644 index 000000000..faecc0abe --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.hbs @@ -0,0 +1,13 @@ + + {{#if needsParens}} + ( + {{/if}} + {{#each types}} + {{#unless @first}} + & + {{/unless}} + {{__partials__.type needsParens=true}} + {{/each}} + {{#if needsParens}} + ) + {{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.tsx new file mode 100644 index 000000000..00e91db8a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intersection.tsx @@ -0,0 +1,31 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { IntersectionType } from "../../../../typedoc/src/lib/models"; +export const intersection = (props: IntersectionType) => ( + <> + {!!needsParens && ( + <> + {" "} + ( + + )} + {props.types.map((item, i) => ( + <> + {!item.first && ( + <> + {" "} + & + + )}{" "} + {__partials__.type(props, { needsParens: true })} + + ))} + {!!needsParens && ( + <> + {" "} + ) + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.hbs new file mode 100644 index 000000000..15bc6f331 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.hbs @@ -0,0 +1,2 @@ + + {{name}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.tsx new file mode 100644 index 000000000..5dd28ff00 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/intrinsic.tsx @@ -0,0 +1,8 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { IntrinsicType } from "../../../../typedoc/src/lib/models"; +export const intrinsic = (props: IntrinsicType) => ( + <> + {props.name} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.hbs new file mode 100644 index 000000000..ed583b5ac --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.hbs @@ -0,0 +1,2 @@ + + {{stringify value}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.tsx new file mode 100644 index 000000000..96cc8c728 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/literal.tsx @@ -0,0 +1,8 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { LiteralType } from "../../../../typedoc/src/lib/models"; +export const literal = (props: LiteralType) => ( + <> + {props.stringify} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.hbs new file mode 100644 index 000000000..3b34cccf7 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.hbs @@ -0,0 +1,42 @@ + + { + + readonly + + + + -readonly + + + + [ + {{parameter}} + in + + + {{__partials__.type}} + + + + as + {{__partials__.type}} + + + ] + + ?: + + + + -?: + + + : + + + + + {{__partials__.type}} + + + } diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.tsx new file mode 100644 index 000000000..0f96258a6 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/mapped.tsx @@ -0,0 +1,51 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { MappedType } from "../../../../typedoc/src/lib/models"; +export const mapped = (props: MappedType) => ( + <> + {"{"} + + readonly + + + + -readonly + + + + [ + {props.parameter} + in + + {With(props, props.parameterType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + {With(props, props.nameType, (superProps, props) => ( + <> + as + {__partials__.type(props)} + + ))} + + ] + + ?: + + + + -?: + + + : + + + + {With(props, props.templateType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + {"}"} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.hbs new file mode 100644 index 000000000..ef3a749a2 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.hbs @@ -0,0 +1,10 @@ + + {{name}} + {{#if isOptional}} + ?: + {{else}} + : + {{/if}} + + {{__partials__.type}} + diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.tsx new file mode 100644 index 000000000..884d2a5a5 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/named-tuple-member.tsx @@ -0,0 +1,23 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { NamedTupleMember } from "../../../../typedoc/src/lib/models"; +export const namedTupleMember = (props: NamedTupleMember) => ( + <> + {props.name} + {!!props.isOptional ? ( + <> + {" "} + ?: + + ) : ( + <> + {" "} + : + + )}{" "} + {With(props, props.element, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.hbs new file mode 100644 index 000000000..9ce1e2a6c --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.hbs @@ -0,0 +1,5 @@ + + + {{__partials__.type}} + + ? diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.tsx new file mode 100644 index 000000000..15ae82d3e --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/optional.tsx @@ -0,0 +1,12 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { OptionalType } from "../../../../typedoc/src/lib/models"; +export const optional = (props: OptionalType) => ( + <> + {With(props, props.elementType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + ? + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/options.ts b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/options.ts new file mode 100644 index 000000000..55ca07443 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/options.ts @@ -0,0 +1,3 @@ +export interface TypeInlinePartialsOptions { + needsParens?: boolean; +} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.hbs new file mode 100644 index 000000000..df8ceb584 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.hbs @@ -0,0 +1,11 @@ + + {{#if asserts}} + asserts + {{/if}} + {{name}} + {{#if targetType}} + is + + {{__partials__.type}} + + {{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.tsx new file mode 100644 index 000000000..590ad4598 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/predicate.tsx @@ -0,0 +1,24 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { PredicateType } from "../../../../typedoc/src/lib/models"; +export const predicate = (props: PredicateType) => ( + <> + {!!props.asserts && ( + <> + {" "} + asserts + + )}{" "} + {props.name} + {!!props.targetType && ( + <> + {" "} + is + {With(props, props.targetType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.hbs new file mode 100644 index 000000000..ebaf7ff78 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.hbs @@ -0,0 +1,5 @@ + + typeof + + {{__partials__.type}} + diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.tsx new file mode 100644 index 000000000..1d29ce7de --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/query.tsx @@ -0,0 +1,12 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { QueryType } from "../../../../typedoc/src/lib/models"; +export const query = (props: QueryType) => ( + <> + typeof + {With(props, props.queryType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.hbs new file mode 100644 index 000000000..279304ffd --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.hbs @@ -0,0 +1,20 @@ + + {{#if getReflection}} + + + {{name}} + + + {{else}} + {{name}} + {{/if}} + {{#if typeArguments}} + < + {{#each typeArguments}} + {{#unless @first}} + , + {{/unless}} + {{__partials__.type}} + {{/each}} + > + {{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.tsx new file mode 100644 index 000000000..7c396fd59 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reference.tsx @@ -0,0 +1,15 @@ +import {With, __partials__, Compact, IfCond, IfNotCond, Markdown} from '../../../lib'; +import React from 'react'; +import { ReferenceType } from '../../../../typedoc/src/lib/models'; +export const reference = (props: ReferenceType) => <> + {!!props.getReflection ? <> { With(props, props.getReflection, (superProps, props) => (<> + + {props.name} + + )) } + : <> {props.name} + }{!!props.typeArguments && <> < + {props.typeArguments.map((item, i) => <>{!item.first && <> , + } {__partials__.type(item)} + )} > + }; diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.hbs new file mode 100644 index 000000000..4baac1cc4 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.hbs @@ -0,0 +1,91 @@ + +{{#if declaration.children}} {{! object literal }} + { + {{#each declaration.children}} + {{#unless @first}} + ; + {{/unless}} + + {{#if getSignature}} + {{#if setSignature}} + {{name}} + : + {{#if getSignature.type}} + + {{__partials__.type}} + + {{else}} + any + {{/if}} + {{else}} + get + {{name}} + (): + {{#if getSignature.type}} + + {{__partials__.type}} + + {{else}} + any + {{/if}} + {{/if}} + {{else}} + {{#if setSignature}} + set + {{name}} + ( + {{! Rather hacky to use each here... but we know there is exactly one. }} + {{#each setSignature.parameters}} + {{name}} + : + {{#if type}} + + {{__partials__.type}} + + {{else}} + any + {{/if}} + {{/each}} + ) + {{else}} + {{name}} + {{#if flags.isOptional }} + ?: + {{else}} + : + {{/if}} + {{#if type}} + + {{__partials__.type}} + + {{else}} + any + {{/if}} + {{/if}} + {{/if}} + {{/each}} + } +{{else if declaration.signatures}} + {{#if "(lookup declaration.signatures 1)" }} {{! more than one signature}} + { + {{#each declaration.signatures}} + {{__partials__.member.signature.title hideName=true}} + {{#unless @last}} + ; + {{/unless}} + {{/each}} + } + {{else}} + {{#if needsParens}} + ( + {{/if}} + + {{__partials__.member.signature.title hideName=true arrowStyle=true}} + + {{#if needsParens}} + ) + {{/if}} + {{/if}} +{{else}} + {} +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.tsx new file mode 100644 index 000000000..6c9722ce9 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/reflection.tsx @@ -0,0 +1,177 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { ReflectionType } from "../../../../typedoc/src/lib/models"; +export const reflection = (props: ReflectionType) => ( + <> + {!!props.declaration.children ? ( + <> + {" "} + {/* object literal */} + {"{"} + {props.declaration.children.map((item, i) => ( + <> + {!item.first && ( + <> + {" "} + ; + + )} + {!!item.getSignature ? ( + item.setSignature ? ( + <> + {" "} + {item.name} + : + {!!item.getSignature.type ? ( + <> + {" "} + {With(item, item.getSignature.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ) : ( + <> + {" "} + any + + )} + + ) : ( + <> + {" "} + get + {item.name} + (): + {!!item.getSignature.type ? ( + <> + {" "} + {With(item, item.getSignature.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ) : ( + <> + {" "} + any + + )} + + ) + ) : item.setSignature ? ( + <> + {" "} + set + {item.name} + ( + {/* Rather hacky to use each here... but we know there is exactly one. */} + {item.setSignature.parameters.map((item, i) => ( + <> + {" "} + {item.name} + : + {!!item.type ? ( + <> + {" "} + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ) : ( + <> + {" "} + any + + )} + + ))}{" "} + ) + + ) : ( + <> + {" "} + {item.name} + {!!item.flags.isOptional ? ( + <> + {" "} + ?: + + ) : ( + <> + {" "} + : + + )} + {!!item.type ? ( + <> + {" "} + {With(item, item.type, (superProps, props, itesleep, 100osleep, 100 + m = props) => ( + <>{__partials__.type(item)} + ))} + + ) : ( + <> + {" "} + any + + )} + + )} + + ))}{" "} + {"}"} + + ) : props.declaration.signatures ? ( + <> + {" "} + {Boolean("(lookup declaration.signatures 1)") ? ( + <> + {" "} + {/* more than one signature*/} + {"{"} + {props.declaration.signatures.map((item, i) => ( + <> + {" "} + {__partials__["memberSignatureTitle"](item, { hideName: true })} + {!item.last && ( + <> + {" "} + ; + + )} + + ))}{" "} + {"}"} + + ) : ( + <> + {!!needsParens && ( + <> + {" "} + ( + + )}{" "} + {With(props, props.declaration.signatures[0], (superProps, props) => ( + <>{__partials__["memberSignatureTitle"](props, { hideName: true, arrowStyle: true })} + ))} + {!!needsParens && ( + <> + {" "} + ) + + )} + + )} + + ) : ( + <> + {" "} + + {"{"} + {"}"} + + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.hbs new file mode 100644 index 000000000..5b82d4a38 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.hbs @@ -0,0 +1,5 @@ + + ... + + {{__partials__.type}} + diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.tsx new file mode 100644 index 000000000..463c9e9cc --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/rest.tsx @@ -0,0 +1,12 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { RestType } from "../../../../typedoc/src/lib/models"; +export const rest = (props: RestType) => ( + <> + ... + {With(props, props.elementType, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.hbs new file mode 100644 index 000000000..99aa97a5a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.hbs @@ -0,0 +1,16 @@ + + ` + {{#if head}} + {{head}} + {{/if}} + {{#each tail}} + ${ + + {{__partials__.type}} + + } + {{#if this.[1]}} + {{this.[1]}} + {{/if}} + {{/each}} + ` diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx new file mode 100644 index 000000000..22e037423 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx @@ -0,0 +1,14 @@ +import {With, __partials__, Compact, IfCond, IfNotCond, Markdown} from '../../../lib'; +import React from 'react'; +import { TemplateLiteralType } from '../../../../typedoc/src/lib/models'; +export const templateLiteral = (props: TemplateLiteralType) => <> + ` + {!!props.head && <> {props.head} + }{props.tail.map((item, i) => <> ${"{"} + { With(item, item.this.[0], (superProps, props) => (<> + {__partials__.type(props)} + )) } + {"}"} + {!!item.1 && <> {item.1} + })} ` +; diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.hbs new file mode 100644 index 000000000..a08214172 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.hbs @@ -0,0 +1,9 @@ + + [ + {{#each elements}} + {{#unless @first}} + , + {{/unless}} + {{__partials__.type}} + {{/each}} + ] diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.tsx new file mode 100644 index 000000000..392823abd --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/tuple.tsx @@ -0,0 +1,21 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { TupleType } from "../../../../typedoc/src/lib/models"; +export const tuple = (props: TupleType) => ( + <> + [ + {props.elements.map((item, i) => ( + <> + {!item.first && ( + <> + {" "} + , + + )}{" "} + {__partials__.type(item)} + + ))}{" "} + ] + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.hbs new file mode 100644 index 000000000..e913f4e6c --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.hbs @@ -0,0 +1,5 @@ + + {{operator}} + + {{__partials__.type}} + diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.tsx new file mode 100644 index 000000000..d78b3aa06 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeOperator.tsx @@ -0,0 +1,12 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { TypeOperatorType } from "../../../../typedoc/src/lib/models"; +export const typeOperator = (props: TypeOperatorType) => ( + <> + {props.operator} + {With(props, props.target, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.hbs new file mode 100644 index 000000000..15bc6f331 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.hbs @@ -0,0 +1,2 @@ + + {{name}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.tsx new file mode 100644 index 000000000..fc8fa79c4 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/typeParameter.tsx @@ -0,0 +1,8 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { TypeParameterType } from "../../../../typedoc/src/lib/models"; +export const typeParameter = (props: TypeParameterType) => ( + <> + {props.name} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.hbs new file mode 100644 index 000000000..97d140b2f --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.hbs @@ -0,0 +1,13 @@ + + {{#if needsParens}} + ( + {{/if}} + {{#each types}} + {{#unless @first}} + | + {{/unless}} + {{__partials__.type needsParens=true}} + {{/each}} + {{#if needsParens}} + ) + {{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.tsx new file mode 100644 index 000000000..a4311e469 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/union.tsx @@ -0,0 +1,31 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, Compact, IfCond, IfNotCond, Markdown, __partials__ } from "../../../lib"; +import React from "react"; +import { UnionType } from "../../../../typedoc/src/lib/models"; +export const union = (props: UnionType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( + <> + {!!needsParens && ( + <> + {" "} + ( + + )} + {props.types.map((item, i) => ( + <> + {i !== 0 && ( + <> + {" "} + | + + )}{" "} + {__partials__.type(item, { needsParens: true })} + + ))} + {!!needsParens && ( + <> + {" "} + ) + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.hbs b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.hbs new file mode 100644 index 000000000..e69de29bb diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.tsx new file mode 100644 index 000000000..f6cad1ca6 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/unknown.tsx @@ -0,0 +1,5 @@ +import { TypeInlinePartialsOptions } from "./options"; +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../../lib"; +import React from "react"; +import { UnknownType } from "../../../../typedoc/src/lib/models"; +export const unknown = (props: UnknownType) => <>; diff --git a/src/lib/output/themes/default-themes/default/partials/type.hbs b/src/lib/output/themes/default-themes/default/partials/type.hbs new file mode 100644 index 000000000..595d3ad73 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type.hbs @@ -0,0 +1,15 @@ +{{! Each type gets its own inline helper to determine how it is rendered. }} +{{! The name of the helper is the value of the 'type' property on the type.}} + +{{! +The type helper accepts an optional needsParens parameter that is checked +if an inner type may result in invalid output without them. For example: +1 | 2[] !== (1 | 2)[] +() => 1 | 2 !== (() => 1) | 2 +}} + +{{#if this}} + {{__partials__.lookup.dot.typeString }} +{{else}} + void +{{/if}} diff --git a/src/lib/output/themes/default-themes/default/partials/type.tsx b/src/lib/output/themes/default-themes/default/partials/type.tsx new file mode 100644 index 000000000..c568a6bea --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/type.tsx @@ -0,0 +1,33 @@ +import { + With, + relativeURL, + wbr, + Compact, + IfCond, + IfNotCond, + Markdown, + __partials__, +} from "../../lib"; +import React from "react"; +import { TypeInlinePartialsOptions } from "./type-inline-partials/options"; +import { Type } from "../../../../../models"; +export const type = (props: Type, options?: TypeInlinePartialsOptions) => ( + <> + {/* Each type gets its own inline helper to determine how it is rendered. */} + {/* The name of the helper is the value of the 'type' property on the type.*/} + {/* + The type helper accepts an optional needsParens parameter that is checked + if an inner type may result in invalid output without them. For example: + 1 | 2[] !== (1 | 2)[] + () => 1 | 2 !== (() => 1) | 2 + */} + {Boolean(props) ? ( + <> {__partials__[props.type](props)} + ) : ( + <> + {" "} + void + + )} + +); diff --git a/src/lib/output/themes/default-themes/default/partials/typeAndParent.hbs b/src/lib/output/themes/default-themes/default/partials/typeAndParent.hbs new file mode 100644 index 000000000..6a0bb8b3c --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/typeAndParent.hbs @@ -0,0 +1,43 @@ + + {{#if this}} + {{#if elementType}} + + {{__partials__.typeAndParent}} + + [] + {{else}} + {{#if reflection}} + + {{#if reflection.parent.parent.url}} + {{reflection.parent.parent.name}} + {{else}} + {{reflection.parent.parent.name}} + {{/if}} + . + {{#if reflection.parent.url}} + {{reflection.parent.name}} + {{else}} + {{reflection.parent.name}} + {{/if}} + + + {{#if reflection.parent.url}} + {{reflection.parent.name}} + {{else}} + {{reflection.parent.name}} + {{/if}} + . + {{#if reflection.url}} + {{reflection.name}} + {{else}} + {{reflection.name}} + {{/if}} + + {{else}} + {{this}} + {{/if}} + {{/if}} + {{else}} + void + {{/if}} + diff --git a/src/lib/output/themes/default-themes/default/partials/typeAndParent.tsx b/src/lib/output/themes/default-themes/default/partials/typeAndParent.tsx new file mode 100644 index 000000000..4357ce580 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/typeAndParent.tsx @@ -0,0 +1,65 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown, isSignature } from "../../lib"; +import React from "react"; +export const typeAndParent = (props) => ( + <> + + {Boolean(props) ? ( + props.elementType ? ( + <> + {" "} + {With(props, props.elementType, (superProps, props) => ( + <>{__partials__.typeAndParent(props)} + ))} + [] + + ) : props.reflection ? ( + <> + {" "} + + {!!props.reflection.parent.parent.url ? ( + <> + {" "} + {props.reflection.parent.parent.name} + + ) : ( + <> {props.reflection.parent.parent.name} + )}{" "} + . + {!!props.reflection.parent.url ? ( + <> + {" "} + {props.reflection.parent.name} + + ) : ( + <> {props.reflection.parent.name} + )}{" "} + + + {!!props.reflection.parent.url ? ( + <> + {" "} + {props.reflection.parent.name} + + ) : ( + <> {props.reflection.parent.name} + )}{" "} + . + {!!props.reflection.url ? ( + <> + {" "} + {props.reflection.name} + + ) : ( + <> {props.reflection.name} + )}{" "} + + + ) : ( + <> {props} + ) + ) : ( + " void\n" + )} + + +); diff --git a/src/lib/output/themes/default-themes/default/partials/typeParameters.hbs b/src/lib/output/themes/default-themes/default/partials/typeParameters.hbs new file mode 100644 index 000000000..dbf3ba874 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/typeParameters.hbs @@ -0,0 +1,17 @@ +
        + {{#each typeParameters}} +
      • +

        + {{name}} + {{#if type}} + + {{__partials__.type}} + {{/if}} + {{#if default}} +  = {{__partials__.type}} + {{/if}} +

        + {{__partials__.comment}} +
      • + {{/each}} +
      diff --git a/src/lib/output/themes/default-themes/default/partials/typeParameters.tsx b/src/lib/output/themes/default-themes/default/partials/typeParameters.tsx new file mode 100644 index 000000000..cc900a92f --- /dev/null +++ b/src/lib/output/themes/default-themes/default/partials/typeParameters.tsx @@ -0,0 +1,39 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const typeParameters = (props) => ( + <> +
        + {props.typeParameters.map((item, i) => ( + <> + {" "} +
      • +

        + + {item.name} + {!!item.type && ( + <> + {" "} + + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + )} + {!!item.default && ( + <> + {" "} +  = + {With(item, item.default, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + )}{" "} + +

        + {__partials__.comment(item)} +
      • + + ))} +
      + +); diff --git a/src/lib/output/themes/default-themes/default/templates/index.hbs b/src/lib/output/themes/default-themes/default/templates/index.hbs new file mode 100644 index 000000000..21ebf8ab1 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/templates/index.hbs @@ -0,0 +1,3 @@ +
      + {{{model.readme}}} +
      diff --git a/src/lib/output/themes/default-themes/default/templates/index.tsx b/src/lib/output/themes/default-themes/default/templates/index.tsx new file mode 100644 index 000000000..38c886689 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/templates/index.tsx @@ -0,0 +1,10 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +import { ProjectReflection } from "../../../typedoc/src"; +export const component = (props: { model: ProjectReflection }) => ( + <> +
      + {props.model.readme} +
      + +); diff --git a/src/lib/output/themes/default-themes/default/templates/reflection.hbs b/src/lib/output/themes/default-themes/default/templates/reflection.hbs new file mode 100644 index 000000000..c1d0c8312 --- /dev/null +++ b/src/lib/output/themes/default-themes/default/templates/reflection.hbs @@ -0,0 +1,79 @@ + + {{#if hasComment}} +
      + {{__partials__.comment}} +
      + {{/if}} +
      + +{{#if model.typeParameters}} +
      +

      Type parameters

      + {{__partials__.typeParameters}} +
      +{{/if}} + +{{#if model.typeHierarchy}} +
      +

      Hierarchy

      + {{__partials__.hierarchy}} +
      +{{/if}} + +{{#if model.implementedTypes}} +
      +

      Implements

      +
        + {{#each model.implementedTypes}} +
      • {{__partials__.type}}
      • + {{/each}} +
      +
      +{{/if}} + +{{#if model.implementedBy}} +
      +

      Implemented by

      +
        + {{#each model.implementedBy}} +
      • {{__partials__.type}}
      • + {{/each}} +
      +
      +{{/if}} + +{{#if model.signatures}} +
      +

      Callable

      + {{__partials__.member.signatures}} +
      +{{/if}} + +{{#if model.indexSignature}} +
      +

      Indexable

      +
      + [ + {{#each model.indexSignature.parameters}} + {{name}}: {{__partials__.type}} + {{/each}} + ]:  + {{__partials__.type}} +
      + + + {{__partials__.comment}} + + + {{#if model.indexSignature.type.declaration}} + + {{__partials__.parameter}} + + {{/if}} +
      +{{/if}} + + + {{__partials__.index}} + {{__partials__.members}} + diff --git a/src/lib/output/themes/default-themes/default/templates/reflection.tsx b/src/lib/output/themes/default-themes/default/templates/reflection.tsx new file mode 100644 index 000000000..1e5448b8a --- /dev/null +++ b/src/lib/output/themes/default-themes/default/templates/reflection.tsx @@ -0,0 +1,130 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +import { DeclarationReflection } from "../../../typedoc/src"; +export const component = (props: { model: DeclarationReflection }) => ( + <> + {With(props, props.model, (superProps, props) => ( + <> + {!!props.hasComment && ( + <> + {" "} +
      {__partials__.comment(props)}
      + + )} + + ))} + + {!!props.model.typeParameters && ( + <> + {" "} +
      +

      Type parameters

      + {With(props, props.model, (superProps, props) => ( + <>{__partials__.typeParameters(props)} + ))} +
      + + )} + {!!props.model.typeHierarchy && ( + <> + {" "} +
      +

      Hierarchy

      + {With(props, props.model.typeHierarchy, (superProps, props) => ( + <>{__partials__.hierarchy(props)} + ))} +
      + + )} + {!!props.model.implementedTypes && ( + <> + {" "} +
      +

      Implements

      +
        + {props.model.implementedTypes!.map((item, i) => ( + <> + {" "} +
      • + {__partials__.type(item)} +
      • + + ))}{" "} +
      +
      + + )} + {!!props.model.implementedBy && ( + <> + {" "} +
      +

      Implemented by

      +
        + {props.model.implementedBy!.map((item, i) => ( + <> + {" "} +
      • + {__partials__.type(item)} +
      • + + ))}{" "} +
      +
      + + )} + {!!props.model.signatures && ( + <> + {" "} +
      +

      Callable

      + {With(props, props.model, (superProps, props) => ( + <>{__partials__["memberSignatures"](props)} + ))} +
      + + )} + {!!props.model.indexSignature && ( + <> + {" "} +
      +

      Indexable

      +
      + + [ + {props.model.indexSignature.parameters!.map((item, i) => ( + <> + {" "} + {item.name}: + {With(item, item.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + + ))}{" "} + ]:  + {With(props, props.model.indexSignature!.type, (superProps, props) => ( + <>{__partials__.type(props)} + ))} + +
      + {With(props, props.model.indexSignature, (superProps, props) => ( + <>{__partials__.comment(props)} + ))} + {!!props.model.indexSignature.type.declaration && ( + <> + {" "} + {With(props, props.model.indexSignature.type.declaration, (superProps, props) => ( + <>{__partials__.parameter(props)} + ))} + + )}{" "} +
      + + )} + {With(props, props.model, (superProps, props) => ( + <> + {__partials__.index(props)} + {__partials__.members(props)} + + ))} + +); diff --git a/src/lib/output/themes/default-themes/lib.tsx b/src/lib/output/themes/default-themes/lib.tsx new file mode 100644 index 000000000..8194f32f6 --- /dev/null +++ b/src/lib/output/themes/default-themes/lib.tsx @@ -0,0 +1,76 @@ +import React from "react"; +import { renderToStaticMarkup } from "react-dom/server"; +import { SignatureReflection, Reflection, ReflectionKind } from "../../../.."; + +/** + * Helper created solely to make it easier to find-and-replace refactor + * all handlebars {{#with}} blocks into JSX. + * + * First two arguments are passed to the callback. Callback's return value is + * returned. + * + * Usage typically looks like this: + * + * { With(props, props.foo, (superProps, props, item = props) => <>Markup) } + */ +export function With( + superProps: A, + props: B, + cb: (superProps: A, props: B) => C +): C { + return cb(superProps, props); +} + +// export function IfCond(props: {cond: string, children: T}) { +// if(props.cond) return props.children; +// else return undefined; +// } +export class IfCond extends React.Component<{ cond: boolean }> { + render() { + if (this.props.cond) return this.props.children; + else return undefined; + } +} +export class IfNotCond extends React.Component<{ cond: boolean }> { + render() { + if (!this.props.cond) return this.props.children; + else return undefined; + } +} + +declare global { + namespace JSX { + interface IntrinsicElements { + markdown: {}; + compact: {}; + } + } +} +export function markdown(text: string) { + return <>{text}; +} +export function Markdown(props: { children: string | undefined }) { + return <>{props.children}; +} + +export function Compact(props: { children: T }) { + // TODO should be implemented to remove all newlines from the input + return <>{props.children}; + // const markup = renderToStaticMarkup(<>{props.children}); + // return ; +} + +export function isSignature( + reflection: Reflection +): reflection is SignatureReflection { + return !!(reflection.kind & ReflectionKind.SomeSignature); +} + +export function relativeURL(url: string) { + return url ? this.getRelativeUrl(url) : url; +} +export function wbr(TODO) { + return TODO; +} + +export { __partials__ } from "./partials"; diff --git a/src/lib/output/themes/default-themes/minimal/layouts/default.hbs b/src/lib/output/themes/default-themes/minimal/layouts/default.hbs new file mode 100644 index 000000000..299c1cea2 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/layouts/default.hbs @@ -0,0 +1,43 @@ + + + + + + {{model.name}} | {{project.name}} + + + + + + +{{__partials__.header}} + + + +
      +
      + {{#if model.readme}} +
      + {{{model.readme}}} +
      + {{/if}} + + {{{contents}}} + {{__partials__.footer}} +
      +
      + + + +{{__partials__.analytics}} + + + diff --git a/src/lib/output/themes/default-themes/minimal/layouts/default.tsx b/src/lib/output/themes/default-themes/minimal/layouts/default.tsx new file mode 100644 index 000000000..cefc34195 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/layouts/default.tsx @@ -0,0 +1,48 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const component = (props) => ( + <> + + + + + + {props.model.name} | {props.project.name} + + + + + + + {__partials__.header(props)} + + + +
      +
      + {!!props.model.readme && ( + <> + {" "} +
      + {props.model.readme} +
      + + )} + {props.contents} + {__partials__.footer(props)} +
      +
      + + + + {__partials__.analytics(props)} + + + +); diff --git a/src/lib/output/themes/default-themes/minimal/partials/header.hbs b/src/lib/output/themes/default-themes/minimal/partials/header.hbs new file mode 100644 index 000000000..e4924d946 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/partials/header.hbs @@ -0,0 +1,38 @@ +
      +
      +
      +
      + +
      +
      + Options +
      +
      + All +
        +
      • Public
      • +
      • Public/Protected
      • +
      • All
      • +
      +
      + + + + + {{#unless settings.excludeExternals}} + + + {{/unless}} + + + +
      +
      + Menu +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/src/lib/output/themes/default-themes/minimal/partials/header.tsx b/src/lib/output/themes/default-themes/minimal/partials/header.tsx new file mode 100644 index 000000000..1ba9881ee --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/partials/header.tsx @@ -0,0 +1,58 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const component = (props) => ( +
      +
      +
      +
      + +
      +
      + + Options + +
      +
      + All +
        +
      • Public
      • +
      • Public/Protected
      • +
      • + All +
      • +
      +
      + + + + + {!props.settings.excludeExternals && ( + <> + {" "} + + + + )} + + +
      +
      + + Menu + +
      +
      +
      +
      +
      +); diff --git a/src/lib/output/themes/default-themes/minimal/partials/member.hbs b/src/lib/output/themes/default-themes/minimal/partials/member.hbs new file mode 100644 index 000000000..ef76ee0e1 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/partials/member.hbs @@ -0,0 +1,31 @@ +
      + + {{#if name}} +

      {{#each flags}}{{this}} {{/each}}{{{wbr name}}}

      + {{/if}} + + {{#if signatures}} + {{__partials__.member.signatures}} + {{else}}{{#if hasGetterOrSetter}} + {{__partials__.member.getterSetter}} + {{else}}{{#if tryGetTargetReflectionDeep}} + {{__partials__.member.reference}} + {{else}} + {{__partials__.member.declaration}} + {{/if}}{{/if}}{{/if}} + + {{#unless isContainer}} + {{#each groups}} + {{#each children}} + {{#unless hasOwnDocument}} + {{__partials__.member}} + {{/unless}} + {{/each}} + {{/each}} + {{/unless}} +
      + +{{#if isContainer}} + {{__partials__.index}} + {{__partials__.members}} +{{/if}} diff --git a/src/lib/output/themes/default-themes/minimal/partials/member.tsx b/src/lib/output/themes/default-themes/minimal/partials/member.tsx new file mode 100644 index 000000000..f5aab33e0 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/partials/member.tsx @@ -0,0 +1,48 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const component = (props) => ( + <> +
      + + {!!props.name && ( + <> + {" "} +

      + {props.flags.map((item, i) => ( + <> + {item}{" "} + + ))} + {wbr(TODO)} +

      + + )} + {!!props.signatures ? ( + <> {__partials__["memberSignatures"](props)} + ) : props.hasGetterOrSetter ? ( + <>{__partials__["memberGetterSetter"](props)} + ) : props.tryGetTargetReflectionDeep ? ( + <>{__partials__["memberReference"](props)} + ) : ( + <> {__partials__["memberDeclaration"](props)} + )} + + {!Boolean(props.isContainer) && + props.groups.map((item, i) => ( + <> + {item.children.map((item, i) => ( + <>{!item.hasOwnDocument && <> {__partials__.member(item)}} + ))} + + ))} +
      + + {!!props.isContainer && ( + <> + {" "} + {__partials__.index(props)} + {__partials__.members(props)} + + )} + +); diff --git a/src/lib/output/themes/default-themes/minimal/templates/index.hbs b/src/lib/output/themes/default-themes/minimal/templates/index.hbs new file mode 100644 index 000000000..3301c5bc4 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/templates/index.hbs @@ -0,0 +1,16 @@ + + {{__partials__.comment}} + + +{{#if model.typeHierarchy}} +
      +

      Hierarchy

      + {{__partials__.hierarchy}} +
      +{{/if}} + + +
      + {{__partials__.index}} + {{__partials__.members}} +
      diff --git a/src/lib/output/themes/default-themes/minimal/templates/index.tsx b/src/lib/output/themes/default-themes/minimal/templates/index.tsx new file mode 100644 index 000000000..b3586e8d0 --- /dev/null +++ b/src/lib/output/themes/default-themes/minimal/templates/index.tsx @@ -0,0 +1,34 @@ +import { With, relativeURL, wbr, __partials__, Compact, IfCond, IfNotCond, Markdown } from "../../lib"; +import React from "react"; +export const component = (props) => ( + <> + {With(props, props.model, (superProps, props) => ( + <>{__partials__.comment(props)} + ))} + + {!!props.model.typeHierarchy && ( + <> + {" "} +
      +

      Hierarchy

      + {With(props, props.model.typeHierarchy, (superProps, props) => ( + <>{__partials__.hierarchy(props)} + ))} +
      + + )} + {With(props, props.model, (superProps, props) => ( + <> +
      + +
      + {__partials__.index(props)} + {__partials__.members(props)} + + ))} + +); diff --git a/src/lib/output/themes/default-themes/partials.tsx b/src/lib/output/themes/default-themes/partials.tsx new file mode 100644 index 000000000..741213eba --- /dev/null +++ b/src/lib/output/themes/default-themes/partials.tsx @@ -0,0 +1,51 @@ +import { analytics } from "./default/partials/analytics"; +import { breadcrumb } from "./default/partials/breadcrumb"; +import { comment } from "./default/partials/comment"; +import { footer } from "./default/partials/footer"; +import { header } from "./default/partials/header"; +import { hierarchy } from "./default/partials/hierarchy"; +import { index } from "./default/partials/index"; +import { member } from "./default/partials/member"; +import { memberDeclaration } from "./default/partials/member.declaration"; +import { memberGetterSetter } from "./default/partials/member.getterSetter"; +import { memberReference } from "./default/partials/member.reference"; +import { memberSignatureBody } from "./default/partials/member.signature.body"; +import { memberSignatureTitle } from "./default/partials/member.signature.title"; +import { memberSignatures } from "./default/partials/member.signatures"; +import { memberSources } from "./default/partials/member.sources"; +import { members } from "./default/partials/members"; +import { membersGroup } from "./default/partials/members.group"; +import { navigation } from "./default/partials/navigation"; +import { parameter } from "./default/partials/parameter"; +import { toc } from "./default/partials/toc"; +import { tocRoot } from "./default/partials/toc.root"; +import { type } from "./default/partials/type"; +import { typeAndParent } from "./default/partials/typeAndParent"; +import { typeParameters } from "./default/partials/typeParameters"; + +export const __partials__ = { + analytics, + breadcrumb, + comment, + footer, + header, + hierarchy, + index, + member, + memberDeclaration, + memberGetterSetter, + memberReference, + memberSignatureBody, + memberSignatureTitle, + memberSignatures, + memberSources, + members, + membersGroup, + navigation, + parameter, + toc, + tocRoot, + type, + typeAndParent, + typeParameters, +}; diff --git a/src/lib/output/themes/default-themes/plugin.js b/src/lib/output/themes/default-themes/plugin.js new file mode 100644 index 000000000..e69de29bb diff --git a/tsconfig.json b/tsconfig.json index aa8b5be3d..fdde6f23f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,9 +27,14 @@ // Output "outDir": "dist/", "rootDir": "src/", - "newLine": "LF" + "newLine": "LF", + + "jsx": "react" }, - "include": ["src/**/*.ts"], + "include": [ + "src/**/*.ts", + "src/**/*.tsx" + ], "exclude": [ "src/test/converter/**/*.ts", "src/test/converter2/**/*.ts", From 98f385815c7db8d82fc57b49eaefe0e014abe436 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Sun, 18 Jul 2021 00:43:34 -0400 Subject: [PATCH 02/33] WIP --- package-lock.json | 104 ++++++++++++++++++- package.json | 2 + src/lib/output/helpers/if-cond.ts | 42 -------- src/lib/output/helpers/if-signature.ts | 9 -- src/lib/output/helpers/wbr.ts | 21 ---- src/lib/output/helpers/wbr.tsx | 25 +++++ src/lib/output/themes/DefaultTheme.ts | 8 +- src/lib/output/themes/default-themes/lib.tsx | 6 +- tsconfig.json | 3 +- 9 files changed, 135 insertions(+), 85 deletions(-) delete mode 100644 src/lib/output/helpers/if-cond.ts delete mode 100644 src/lib/output/helpers/if-signature.ts delete mode 100644 src/lib/output/helpers/wbr.ts create mode 100644 src/lib/output/helpers/wbr.tsx diff --git a/package-lock.json b/package-lock.json index f5fd4ab25..b8375e52d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,8 @@ "marked": "^2.1.1", "minimatch": "^3.0.0", "progress": "^2.0.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", "shiki": "^0.9.3", "typedoc-default-themes": "^0.12.10" }, @@ -36,7 +38,7 @@ "typescript": "^4.3.4" }, "engines": { - "node": ">= 12.20.0" + "node": ">= 12.10.0" }, "peerDependencies": { "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x" @@ -2054,8 +2056,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.13.1", @@ -2229,6 +2230,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2697,6 +2709,14 @@ "node": ">=6" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2943,6 +2963,31 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, "node_modules/readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -3069,6 +3114,15 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -5338,8 +5392,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.13.1", @@ -5473,6 +5526,14 @@ } } }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5846,6 +5907,11 @@ } } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6021,6 +6087,25 @@ "safe-buffer": "^5.1.0" } }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, "readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -6108,6 +6193,15 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", diff --git a/package.json b/package.json index c5b4becfa..241aa2bb1 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ "marked": "^2.1.1", "minimatch": "^3.0.0", "progress": "^2.0.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", "shiki": "^0.9.3", "typedoc-default-themes": "^0.12.10" }, diff --git a/src/lib/output/helpers/if-cond.ts b/src/lib/output/helpers/if-cond.ts deleted file mode 100644 index 94a33c589..000000000 --- a/src/lib/output/helpers/if-cond.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Handlebars if helper with condition. - * - * @param v1 The first value to be compared. - * @param operator The operand to perform on the two given values. - * @param v2 The second value to be compared - * @param options The current handlebars object. - * @param this The current handlebars this. - * @returns {*} - */ -export function ifCond( - this: any, - v1: any, - operator: any, - v2: any, - options: any -) { - switch (operator) { - case "==": - return v1 == v2 ? options.fn(this) : options.inverse(this); - case "===": - return v1 === v2 ? options.fn(this) : options.inverse(this); - case "!=": - return v1 != v2 ? options.fn(this) : options.inverse(this); - case "!==": - return v1 !== v2 ? options.fn(this) : options.inverse(this); - case "<": - return v1 < v2 ? options.fn(this) : options.inverse(this); - case "<=": - return v1 <= v2 ? options.fn(this) : options.inverse(this); - case ">": - return v1 > v2 ? options.fn(this) : options.inverse(this); - case ">=": - return v1 >= v2 ? options.fn(this) : options.inverse(this); - case "&&": - return v1 && v2 ? options.fn(this) : options.inverse(this); - case "||": - return v1 || v2 ? options.fn(this) : options.inverse(this); - default: - return options.inverse(this); - } -} diff --git a/src/lib/output/helpers/if-signature.ts b/src/lib/output/helpers/if-signature.ts deleted file mode 100644 index 671600d6b..000000000 --- a/src/lib/output/helpers/if-signature.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { SignatureReflection } from "../../models/reflections/signature"; - -export function ifSignature(this: any, obj: any, arg: any) { - if (obj instanceof SignatureReflection) { - return arg.fn(this); - } else { - return arg.inverse(this); - } -} diff --git a/src/lib/output/helpers/wbr.ts b/src/lib/output/helpers/wbr.ts deleted file mode 100644 index ee7ee8394..000000000 --- a/src/lib/output/helpers/wbr.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as Handlebars from "handlebars"; - -/** - * Insert word break tags ```` into the given string. - * - * Breaks the given string at ``_``, ``-`` and capital letters. - * - * @param str The string that should be split. - * @return The original string containing ```` tags where possible. - */ -export function wbr(this: any, options: any): Handlebars.SafeString { - let str: string = typeof options === "string" ? options : options.fn(this); - str = Handlebars.escapeExpression(str); - - str = str.replace(/=/g, "="); // because 3D would be converted to 3D, use decimal format instead - - str = str.replace(/([^_-][_-])([^_-])/g, (_m, a, b) => a + "" + b); - str = str.replace(/([^A-Z])([A-Z][^A-Z])/g, (_m, a, b) => a + "" + b); - - return new Handlebars.SafeString(str); -} diff --git a/src/lib/output/helpers/wbr.tsx b/src/lib/output/helpers/wbr.tsx new file mode 100644 index 000000000..c244c0677 --- /dev/null +++ b/src/lib/output/helpers/wbr.tsx @@ -0,0 +1,25 @@ +import React from 'react'; + +/** + * Insert word break tags ```` into the given string. + * + * Breaks the given string at ``_``, ``-`` and capital letters. + * + * @param str The string that should be split. + * @return The original string containing ```` tags where possible. + */ +export function wbr(str: string): (string | Element)[] { + // TODO surely there is a better way to do this, but I'm tired. + const ret: (string | Element)[] = []; + const re = /^[\s\S]*?(?:([^_-][_-])(?=[^_-])|([^A-Z])(?=[A-Z][^A-Z]))/g; + let match: RegExpExecArray | null; + let i = 0; + while((match = re.exec(str))) { + ret.push(match[0]); + ret.push(); + i += match.index + match[0].length; + } + ret.push(str.slice(i)); + + return ret; +} diff --git a/src/lib/output/themes/DefaultTheme.ts b/src/lib/output/themes/DefaultTheme.ts index a53498883..821cd8c24 100644 --- a/src/lib/output/themes/DefaultTheme.ts +++ b/src/lib/output/themes/DefaultTheme.ts @@ -56,25 +56,25 @@ export class DefaultTheme extends Theme { kind: [ReflectionKind.Class], isLeaf: false, directory: "classes", - template: "reflection.hbs", + template: this.reflection.bind(this) }, { kind: [ReflectionKind.Interface], isLeaf: false, directory: "interfaces", - template: "reflection.hbs", + template: this.reflection.bind(this) }, { kind: [ReflectionKind.Enum], isLeaf: false, directory: "enums", - template: "reflection.hbs", + template: this.reflection.bind(this) }, { kind: [ReflectionKind.Namespace, ReflectionKind.Module], isLeaf: false, directory: "modules", - template: "reflection.hbs", + template: this.reflection.bind(this) }, ]; diff --git a/src/lib/output/themes/default-themes/lib.tsx b/src/lib/output/themes/default-themes/lib.tsx index 8194f32f6..77ed4265c 100644 --- a/src/lib/output/themes/default-themes/lib.tsx +++ b/src/lib/output/themes/default-themes/lib.tsx @@ -1,5 +1,4 @@ import React from "react"; -import { renderToStaticMarkup } from "react-dom/server"; import { SignatureReflection, Reflection, ReflectionKind } from "../../../.."; /** @@ -26,7 +25,7 @@ export function With( // else return undefined; // } export class IfCond extends React.Component<{ cond: boolean }> { - render() { + override render() { if (this.props.cond) return this.props.children; else return undefined; } @@ -63,7 +62,8 @@ export function Compact(props: { children: T }) { export function isSignature( reflection: Reflection ): reflection is SignatureReflection { - return !!(reflection.kind & ReflectionKind.SomeSignature); + // return !!(reflection.kind & ReflectionKind.SomeSignature); + return reflection instanceof SignatureReflection; } export function relativeURL(url: string) { diff --git a/tsconfig.json b/tsconfig.json index fdde6f23f..ad573cca6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,7 +29,8 @@ "rootDir": "src/", "newLine": "LF", - "jsx": "react" + "jsx": "react", + "esModuleInterop": true }, "include": [ "src/**/*.ts", From de07445cfc6dfeae9ba3e8e566934a4201ceda45 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Sun, 18 Jul 2021 21:58:09 -0400 Subject: [PATCH 03/33] WIP --- .../partials/type-inline-partials/template-literal.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx index 22e037423..10f6e5b96 100644 --- a/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx +++ b/src/lib/output/themes/default-themes/default/partials/type-inline-partials/template-literal.tsx @@ -1,14 +1,14 @@ import {With, __partials__, Compact, IfCond, IfNotCond, Markdown} from '../../../lib'; import React from 'react'; -import { TemplateLiteralType } from '../../../../typedoc/src/lib/models'; +import { TemplateLiteralType } from '../../../../../../models'; export const templateLiteral = (props: TemplateLiteralType) => <> ` {!!props.head && <> {props.head} }{props.tail.map((item, i) => <> ${"{"} - { With(item, item.this.[0], (superProps, props) => (<> + { With(item, item.this[0], (superProps, props) => (<> {__partials__.type(props)} )) } {"}"} - {!!item.1 && <> {item.1} + {!!item[1] && <> {item[1]} })} ` ; From 308f31b4b2eaa791463711c99c30b722c849cf3a Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Sat, 24 Jul 2021 04:15:36 -0400 Subject: [PATCH 04/33] whole lotta WIP --- .prettierrc.json | 4 +- src/lib/models/reflections/abstract.ts | 4 + src/lib/output/events.ts | 19 +-- src/lib/output/helpers/wbr.tsx | 2 +- src/lib/output/models/UrlMapping.ts | 12 +- src/lib/output/renderer.ts | 6 +- .../default/layouts/default.tsx | 15 ++- .../default/partials/analytics.tsx | 2 +- .../default/partials/breadcrumb.tsx | 8 +- .../default/partials/comment.tsx | 2 +- .../default/partials/footer.tsx | 2 +- .../default/partials/header.tsx | 9 +- .../default/partials/hierarchy.tsx | 19 +-- .../default-themes/default/partials/index.tsx | 122 +++++------------- .../default/partials/member.declaration.tsx | 2 +- .../default/partials/member.getterSetter.tsx | 47 +++---- .../default/partials/member.reference.tsx | 19 +-- .../partials/member.signature.body.tsx | 4 +- .../partials/member.signature.title.tsx | 23 ++-- .../default/partials/member.signatures.tsx | 9 +- .../default/partials/member.sources.tsx | 2 +- .../default/partials/member.tsx | 4 +- .../default/partials/members.group.tsx | 4 +- .../default/partials/members.tsx | 2 +- .../default/partials/navigation.tsx | 2 +- .../default/partials/parameter.tsx | 33 +++-- .../default/partials/toc.root.tsx | 17 +-- .../default-themes/default/partials/toc.tsx | 2 +- .../partials/type-inline-partials/array.tsx | 4 +- .../type-inline-partials/conditional.tsx | 4 +- .../type-inline-partials/indexedAccess.tsx | 4 +- .../type-inline-partials/inferred.tsx | 4 +- .../type-inline-partials/intersection.tsx | 8 +- .../type-inline-partials/intrinsic.tsx | 4 +- .../partials/type-inline-partials/literal.tsx | 8 +- .../partials/type-inline-partials/mapped.tsx | 4 +- .../named-tuple-member.tsx | 4 +- .../type-inline-partials/optional.tsx | 4 +- .../type-inline-partials/predicate.tsx | 4 +- .../partials/type-inline-partials/query.tsx | 4 +- .../type-inline-partials/reference.tsx | 60 ++++++--- .../type-inline-partials/reflection.tsx | 36 +++--- .../partials/type-inline-partials/rest.tsx | 4 +- .../type-inline-partials/template-literal.tsx | 2 +- .../partials/type-inline-partials/tuple.tsx | 7 +- .../type-inline-partials/typeOperator.tsx | 4 +- .../type-inline-partials/typeParameter.tsx | 4 +- .../partials/type-inline-partials/union.tsx | 4 +- .../partials/type-inline-partials/unknown.tsx | 4 +- .../default-themes/default/partials/type.tsx | 2 +- .../default/partials/typeAndParent.tsx | 2 +- .../default/partials/typeParameters.tsx | 2 +- .../default/templates/index.tsx | 2 +- .../default/templates/reflection.tsx | 2 +- src/lib/output/themes/default-themes/lib.tsx | 21 +-- .../minimal/layouts/default.tsx | 7 +- .../minimal/partials/header.tsx | 2 +- .../minimal/partials/member.tsx | 2 +- .../minimal/templates/index.tsx | 2 +- tsconfig.json | 3 +- 60 files changed, 287 insertions(+), 337 deletions(-) diff --git a/.prettierrc.json b/.prettierrc.json index 0967ef424..9fcfde7a6 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1 +1,3 @@ -{} +{ + "printWidth": 120 +} diff --git a/src/lib/models/reflections/abstract.ts b/src/lib/models/reflections/abstract.ts index 5cda6f101..025ff7cd7 100644 --- a/src/lib/models/reflections/abstract.ts +++ b/src/lib/models/reflections/abstract.ts @@ -216,6 +216,10 @@ export class ReflectionFlags extends Array { return this.hasFlag(ReflectionFlag.Readonly); } + get isExported() { + return TODO as boolean; + } + setFlag(flag: ReflectionFlag, set: boolean) { switch (flag) { case ReflectionFlag.Private: diff --git a/src/lib/output/events.ts b/src/lib/output/events.ts index 8a89dc1a4..1d2e895d9 100644 --- a/src/lib/output/events.ts +++ b/src/lib/output/events.ts @@ -3,7 +3,7 @@ import * as Path from "path"; import { Event } from "../utils/events"; import { ProjectReflection } from "../models/reflections/project"; -import { UrlMapping } from "./models/UrlMapping"; +import { RenderTemplate, UrlMapping } from "./models/UrlMapping"; import { NavigationItem } from "./models/NavigationItem"; import { LegendItem } from "./plugins/LegendPlugin"; @@ -66,13 +66,13 @@ export class RendererEvent extends Event { * @param mapping The mapping that defines the generated [[PageEvent]] state. * @returns A newly created [[PageEvent]] instance. */ - public createPageEvent(mapping: UrlMapping): PageEvent { - const event = new PageEvent(PageEvent.BEGIN); + public createPageEvent(mapping: UrlMapping): PageEvent { + const event = new PageEvent(PageEvent.BEGIN); event.project = this.project; event.settings = this.settings; event.url = mapping.url; event.model = mapping.model; - event.templateName = mapping.template; + event.template = mapping.template; event.filename = Path.join(this.outputDirectory, mapping.url); return event; } @@ -87,7 +87,7 @@ export class RendererEvent extends Event { * @see [[Renderer.EVENT_BEGIN_PAGE]] * @see [[Renderer.EVENT_END_PAGE]] */ -export class PageEvent extends Event { +export class PageEvent extends Event { /** * The project the renderer is currently processing. */ @@ -111,17 +111,12 @@ export class PageEvent extends Event { /** * The model that should be rendered on this page. */ - model: any; + model!: Model; /** * The template that should be used to render this page. */ - template?: TemplateDelegate; - - /** - * The name of the template that should be used to render this page. - */ - templateName!: string; + template!: RenderTemplate; /** * The primary navigation structure of this page. diff --git a/src/lib/output/helpers/wbr.tsx b/src/lib/output/helpers/wbr.tsx index c244c0677..b30e2a59d 100644 --- a/src/lib/output/helpers/wbr.tsx +++ b/src/lib/output/helpers/wbr.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import * as React from 'react'; /** * Insert word break tags ```` into the given string. diff --git a/src/lib/output/models/UrlMapping.ts b/src/lib/output/models/UrlMapping.ts index b7c8a0f2c..e306dd46b 100644 --- a/src/lib/output/models/UrlMapping.ts +++ b/src/lib/output/models/UrlMapping.ts @@ -1,16 +1,20 @@ +import { ReactElement } from "react"; + /** * */ -export class UrlMapping { +export class UrlMapping { url: string; - model: any; + model: Model; - template: string; + template: RenderTemplate; - constructor(url: string, model: any, template: string) { + constructor(url: string, model: any, template: RenderTemplate) { this.url = url; this.model = model; this.template = template; } } + +export type RenderTemplate = (data: T) => ReactElement | string; diff --git a/src/lib/output/renderer.ts b/src/lib/output/renderer.ts index a76b0fe93..35df1ce70 100644 --- a/src/lib/output/renderer.ts +++ b/src/lib/output/renderer.ts @@ -24,6 +24,7 @@ import { Component, ChildableComponent } from "../utils/component"; import { BindOption } from "../utils"; import { loadHighlighter } from "../utils/highlighter"; import { Theme as ShikiTheme } from "shiki"; +import {renderToStaticMarkup} from 'react-dom/server'; /** * The renderer processes a [[ProjectReflection]] using a [[BaseTheme]] instance and writes @@ -148,10 +149,7 @@ export class Renderer extends ChildableComponent< this.theme!.resources.templates.getResource( page.templateName )!.getTemplate(); - page.contents = page.template(page, { - allowProtoMethodsByDefault: true, - allowProtoPropertiesByDefault: true, - }); + page.contents = renderToStaticMarkup(page.template(page)); this.trigger(PageEvent.END, page); if (page.isDefaultPrevented) { diff --git a/src/lib/output/themes/default-themes/default/layouts/default.tsx b/src/lib/output/themes/default-themes/default/layouts/default.tsx index 1439a8aa6..a89090cd9 100644 --- a/src/lib/output/themes/default-themes/default/layouts/default.tsx +++ b/src/lib/output/themes/default-themes/default/layouts/default.tsx @@ -1,6 +1,7 @@ import { With, relativeURL, wbr, __partials__, IfCond, IfNotCond, Markdown } from "../../lib"; -import React from "react"; -export const defaultLayout = (props) => ( +import * as React from "react"; +import { PageEvent } from "../../../../events"; +export const defaultLayout = (props: PageEvent) => ( <> @@ -15,8 +16,8 @@ export const defaultLayout = (props) => ( - - + + {__partials__.header(props)} @@ -27,7 +28,7 @@ export const defaultLayout = (props) => (
      Menu diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index 6f1c8d9c5..e376dd96b 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index c27e98257..79f6cd63b 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/classes/flattened.FlattenedClass.html b/src/test/renderer/specs/classes/flattened.FlattenedClass.html index ba5e21837..757f53cde 100644 --- a/src/test/renderer/specs/classes/flattened.FlattenedClass.html +++ b/src/test/renderer/specs/classes/flattened.FlattenedClass.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/classes/mixin.Base.html b/src/test/renderer/specs/classes/mixin.Base.html index c3bd856cc..960665bad 100644 --- a/src/test/renderer/specs/classes/mixin.Base.html +++ b/src/test/renderer/specs/classes/mixin.Base.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html index 290374397..f4408be48 100644 --- a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html +++ b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index b124f0e3b..14053e779 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/enums/enumerations.Directions.html b/src/test/renderer/specs/enums/enumerations.Directions.html index c275b07bd..02ff3a6fc 100644 --- a/src/test/renderer/specs/enums/enumerations.Directions.html +++ b/src/test/renderer/specs/enums/enumerations.Directions.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/enums/enumerations.Size-1.html b/src/test/renderer/specs/enums/enumerations.Size-1.html index 99956ef53..fd384780b 100644 --- a/src/test/renderer/specs/enums/enumerations.Size-1.html +++ b/src/test/renderer/specs/enums/enumerations.Size-1.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/index.html b/src/test/renderer/specs/index.html index ad8bda63c..73d1795fe 100644 --- a/src/test/renderer/specs/index.html +++ b/src/test/renderer/specs/index.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/classes.NameInterface.html b/src/test/renderer/specs/interfaces/classes.NameInterface.html index ae62e19da..f517403ca 100644 --- a/src/test/renderer/specs/interfaces/classes.NameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.NameInterface.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu @@ -75,13 +75,23 @@

      Interface NameInterface

      Links - these should all point to the name property:

      @@ -101,7 +111,9 @@

      Hierarchy

      Implemented by

      @@ -138,17 +150,31 @@

      name

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      Links - these should point to the containing interface

      diff --git a/src/test/renderer/specs/interfaces/classes.PrintInterface.html b/src/test/renderer/specs/interfaces/classes.PrintInterface.html index ceef668c1..3ad72f40c 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintInterface.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index d92ed7df1..5fe7d849d 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu @@ -94,7 +94,9 @@

      Hierarchy

      Implemented by

      @@ -134,17 +136,31 @@

      name

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      Links - these should point to the containing interface

      diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index 408a98bff..0a6f103af 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index 44946afa9..da6deb99c 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index 6fa3a9a56..4a81b3ea2 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 7884a9dc0..47b9340e8 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index d0bba525d..b1051362a 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html index 66c503deb..a935b7372 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html index e1d9f3fa5..d4701dec8 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules.html b/src/test/renderer/specs/modules.html index 1462b7297..4228ca937 100644 --- a/src/test/renderer/specs/modules.html +++ b/src/test/renderer/specs/modules.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/access.PrivateModule.html b/src/test/renderer/specs/modules/access.PrivateModule.html index 61277bae2..9b8356a44 100644 --- a/src/test/renderer/specs/modules/access.PrivateModule.html +++ b/src/test/renderer/specs/modules/access.PrivateModule.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/access.html b/src/test/renderer/specs/modules/access.html index dcf28bc29..ce4d91fde 100644 --- a/src/test/renderer/specs/modules/access.html +++ b/src/test/renderer/specs/modules/access.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/classes.html b/src/test/renderer/specs/modules/classes.html index bbb1a3935..f04d9c27f 100644 --- a/src/test/renderer/specs/modules/classes.html +++ b/src/test/renderer/specs/modules/classes.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/default_export.html b/src/test/renderer/specs/modules/default_export.html index 909008ac4..ea9f0c7ff 100644 --- a/src/test/renderer/specs/modules/default_export.html +++ b/src/test/renderer/specs/modules/default_export.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/enumerations.Size.html b/src/test/renderer/specs/modules/enumerations.Size.html index 94f9d44f8..336292e9c 100644 --- a/src/test/renderer/specs/modules/enumerations.Size.html +++ b/src/test/renderer/specs/modules/enumerations.Size.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/enumerations.html b/src/test/renderer/specs/modules/enumerations.html index a5df86c33..251dec8a1 100644 --- a/src/test/renderer/specs/modules/enumerations.html +++ b/src/test/renderer/specs/modules/enumerations.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/flattened.html b/src/test/renderer/specs/modules/flattened.html index 107599fe0..a4a54f082 100644 --- a/src/test/renderer/specs/modules/flattened.html +++ b/src/test/renderer/specs/modules/flattened.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/functions.html b/src/test/renderer/specs/modules/functions.html index 2c7dde2d1..c182630ce 100644 --- a/src/test/renderer/specs/modules/functions.html +++ b/src/test/renderer/specs/modules/functions.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/functions.moduleFunction.html b/src/test/renderer/specs/modules/functions.moduleFunction.html index 3fa01d83d..d85e38253 100644 --- a/src/test/renderer/specs/modules/functions.moduleFunction.html +++ b/src/test/renderer/specs/modules/functions.moduleFunction.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/generics.html b/src/test/renderer/specs/modules/generics.html index b77e46145..4209bf228 100644 --- a/src/test/renderer/specs/modules/generics.html +++ b/src/test/renderer/specs/modules/generics.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/markdown.html b/src/test/renderer/specs/modules/markdown.html index f1a12bf59..97fdb8bc7 100644 --- a/src/test/renderer/specs/modules/markdown.html +++ b/src/test/renderer/specs/modules/markdown.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/mixin.html b/src/test/renderer/specs/modules/mixin.html index 6c1fbd4cb..1d9016ed2 100644 --- a/src/test/renderer/specs/modules/mixin.html +++ b/src/test/renderer/specs/modules/mixin.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/mod.html b/src/test/renderer/specs/modules/mod.html index 7286595be..56fe3d1b3 100644 --- a/src/test/renderer/specs/modules/mod.html +++ b/src/test/renderer/specs/modules/mod.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/mod2.html b/src/test/renderer/specs/modules/mod2.html index 63b5a5115..ad1b62556 100644 --- a/src/test/renderer/specs/modules/mod2.html +++ b/src/test/renderer/specs/modules/mod2.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html index 9fead8150..0f5213090 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/modules.MyModule.html b/src/test/renderer/specs/modules/modules.MyModule.html index 467aeb11f..59a2b8cfc 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/modules.html b/src/test/renderer/specs/modules/modules.html index 73df77ab4..bc3cdcd6f 100644 --- a/src/test/renderer/specs/modules/modules.html +++ b/src/test/renderer/specs/modules/modules.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/single_export.html b/src/test/renderer/specs/modules/single_export.html index 23dd0d4cb..943d2c5f5 100644 --- a/src/test/renderer/specs/modules/single_export.html +++ b/src/test/renderer/specs/modules/single_export.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu diff --git a/src/test/renderer/specs/modules/weird_names.html b/src/test/renderer/specs/modules/weird_names.html index 3f7147cb3..df702b861 100644 --- a/src/test/renderer/specs/modules/weird_names.html +++ b/src/test/renderer/specs/modules/weird_names.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - - - + +
      Menu From c040fd80db074cb1b9980a454c1a5d19a41aaa39 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Mon, 26 Jul 2021 15:40:18 -0400 Subject: [PATCH 12/33] wip --- src/lib/output/plugins/LayoutPlugin.ts | 2 +- src/lib/output/renderer.ts | 1 - src/test/prettier-utils.ts | 1 + .../specs/classes/access.PrivateClass.html | 14 ++-- .../specs/classes/classes.BaseClass.html | 26 +++----- .../specs/classes/classes.GenericClass.html | 14 ++-- .../classes/classes.NonGenericClass.html | 14 ++-- .../specs/classes/classes.SubClassA.html | 46 +++++-------- .../specs/classes/classes.SubClassB.html | 14 ++-- .../default_export.ExportedClassName.html | 14 ++-- .../specs/classes/default_export.default.html | 14 ++-- .../classes/flattened.FlattenedClass.html | 14 ++-- .../renderer/specs/classes/mixin.Base.html | 14 ++-- .../classes/mixin.SomeClassWithMixin.html | 14 ++-- .../specs/classes/single_export.export_.html | 14 ++-- .../specs/enums/enumerations.Directions.html | 14 ++-- .../specs/enums/enumerations.Size-1.html | 14 ++-- src/test/renderer/specs/index.html | 14 ++-- .../interfaces/classes.NameInterface.html | 66 ++++++------------- .../interfaces/classes.PrintInterface.html | 14 ++-- .../classes.PrintNameInterface.html | 46 +++++-------- .../renderer/specs/interfaces/generics.A.html | 14 ++-- .../specs/interfaces/generics.AB.html | 14 ++-- .../specs/interfaces/generics.ABNumber.html | 14 ++-- .../specs/interfaces/generics.ABString.html | 14 ++-- .../renderer/specs/interfaces/generics.B.html | 14 ++-- .../specs/interfaces/mixin.Mixin1Type.html | 14 ++-- .../specs/interfaces/mixin.Mixin2Type.html | 14 ++-- src/test/renderer/specs/modules.html | 14 ++-- .../specs/modules/access.PrivateModule.html | 14 ++-- src/test/renderer/specs/modules/access.html | 14 ++-- src/test/renderer/specs/modules/classes.html | 14 ++-- .../specs/modules/default_export.html | 14 ++-- .../specs/modules/enumerations.Size.html | 14 ++-- .../renderer/specs/modules/enumerations.html | 14 ++-- .../renderer/specs/modules/flattened.html | 14 ++-- .../renderer/specs/modules/functions.html | 14 ++-- .../modules/functions.moduleFunction.html | 14 ++-- src/test/renderer/specs/modules/generics.html | 14 ++-- src/test/renderer/specs/modules/markdown.html | 14 ++-- src/test/renderer/specs/modules/mixin.html | 14 ++-- src/test/renderer/specs/modules/mod.html | 14 ++-- src/test/renderer/specs/modules/mod2.html | 14 ++-- .../modules/modules.MyModule.MySubmodule.html | 14 ++-- .../specs/modules/modules.MyModule.html | 14 ++-- src/test/renderer/specs/modules/modules.html | 14 ++-- .../renderer/specs/modules/single_export.html | 14 ++-- .../renderer/specs/modules/weird_names.html | 14 ++-- 48 files changed, 349 insertions(+), 413 deletions(-) diff --git a/src/lib/output/plugins/LayoutPlugin.ts b/src/lib/output/plugins/LayoutPlugin.ts index 64a995582..2cea0606f 100644 --- a/src/lib/output/plugins/LayoutPlugin.ts +++ b/src/lib/output/plugins/LayoutPlugin.ts @@ -26,6 +26,6 @@ export class LayoutPlugin extends RendererComponent { const layout = this.owner .theme!.getDefaultLayoutTemplate(); const templateOutput = layout(page); - page.contents = typeof templateOutput === 'string' ? templateOutput : renderToStaticMarkup(templateOutput); + page.contents = typeof templateOutput === 'string' ? templateOutput : '' + renderToStaticMarkup(templateOutput); } } diff --git a/src/lib/output/renderer.ts b/src/lib/output/renderer.ts index 590d4c572..22ffcf4ab 100644 --- a/src/lib/output/renderer.ts +++ b/src/lib/output/renderer.ts @@ -9,7 +9,6 @@ import * as Path from "path"; import * as fs from "fs"; -import * as util from "util"; // eslint-disable-next-line const ProgressBar = require("progress"); diff --git a/src/test/prettier-utils.ts b/src/test/prettier-utils.ts index 84ee13100..2f1fa7da7 100644 --- a/src/test/prettier-utils.ts +++ b/src/test/prettier-utils.ts @@ -3,6 +3,7 @@ import * as prettier from 'prettier'; export function canonicalizeHtml(text: string) { return prettier.format(text, { parser: 'html-tests', + useTabs: true, plugins: [{ languages: [{ name: 'html-tests', diff --git a/src/test/renderer/specs/classes/access.PrivateClass.html b/src/test/renderer/specs/classes/access.PrivateClass.html index 8ac4edf45..7d1ee78b0 100644 --- a/src/test/renderer/specs/classes/access.PrivateClass.html +++ b/src/test/renderer/specs/classes/access.PrivateClass.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/classes.BaseClass.html b/src/test/renderer/specs/classes/classes.BaseClass.html index 4d970eb52..0642329f1 100644 --- a/src/test/renderer/specs/classes/classes.BaseClass.html +++ b/src/test/renderer/specs/classes/classes.BaseClass.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu @@ -76,12 +76,8 @@

      Class BaseClass

      [[include:class-example.md]]

      Links:

      @@ -104,9 +100,7 @@

      Hierarchy

      Implements

      diff --git a/src/test/renderer/specs/classes/classes.GenericClass.html b/src/test/renderer/specs/classes/classes.GenericClass.html index 857cf6a33..58fdc3e12 100644 --- a/src/test/renderer/specs/classes/classes.GenericClass.html +++ b/src/test/renderer/specs/classes/classes.GenericClass.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/classes.NonGenericClass.html b/src/test/renderer/specs/classes/classes.NonGenericClass.html index 69ed2d140..aae1ea08b 100644 --- a/src/test/renderer/specs/classes/classes.NonGenericClass.html +++ b/src/test/renderer/specs/classes/classes.NonGenericClass.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/classes.SubClassA.html b/src/test/renderer/specs/classes/classes.SubClassA.html index f3dc6a76b..ebf7a7a3a 100644 --- a/src/test/renderer/specs/classes/classes.SubClassA.html +++ b/src/test/renderer/specs/classes/classes.SubClassA.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu @@ -93,9 +93,7 @@

      Hierarchy

      Implements

      @@ -209,31 +207,17 @@

      name

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      Links - these should point to the containing interface

      diff --git a/src/test/renderer/specs/classes/classes.SubClassB.html b/src/test/renderer/specs/classes/classes.SubClassB.html index b679f302f..24ceecf73 100644 --- a/src/test/renderer/specs/classes/classes.SubClassB.html +++ b/src/test/renderer/specs/classes/classes.SubClassB.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index e376dd96b..6f1c8d9c5 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index 79f6cd63b..c27e98257 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/flattened.FlattenedClass.html b/src/test/renderer/specs/classes/flattened.FlattenedClass.html index 757f53cde..ba5e21837 100644 --- a/src/test/renderer/specs/classes/flattened.FlattenedClass.html +++ b/src/test/renderer/specs/classes/flattened.FlattenedClass.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/mixin.Base.html b/src/test/renderer/specs/classes/mixin.Base.html index 960665bad..c3bd856cc 100644 --- a/src/test/renderer/specs/classes/mixin.Base.html +++ b/src/test/renderer/specs/classes/mixin.Base.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html index f4408be48..290374397 100644 --- a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html +++ b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index 14053e779..b124f0e3b 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/enums/enumerations.Directions.html b/src/test/renderer/specs/enums/enumerations.Directions.html index 02ff3a6fc..c275b07bd 100644 --- a/src/test/renderer/specs/enums/enumerations.Directions.html +++ b/src/test/renderer/specs/enums/enumerations.Directions.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/enums/enumerations.Size-1.html b/src/test/renderer/specs/enums/enumerations.Size-1.html index fd384780b..99956ef53 100644 --- a/src/test/renderer/specs/enums/enumerations.Size-1.html +++ b/src/test/renderer/specs/enums/enumerations.Size-1.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/index.html b/src/test/renderer/specs/index.html index 73d1795fe..ad8bda63c 100644 --- a/src/test/renderer/specs/index.html +++ b/src/test/renderer/specs/index.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/classes.NameInterface.html b/src/test/renderer/specs/interfaces/classes.NameInterface.html index f517403ca..ae62e19da 100644 --- a/src/test/renderer/specs/interfaces/classes.NameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.NameInterface.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu @@ -75,23 +75,13 @@

      Interface NameInterface

      Links - these should all point to the name property:

      @@ -111,9 +101,7 @@

      Hierarchy

      Implemented by

      @@ -150,31 +138,17 @@

      name

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      Links - these should point to the containing interface

      diff --git a/src/test/renderer/specs/interfaces/classes.PrintInterface.html b/src/test/renderer/specs/interfaces/classes.PrintInterface.html index 3ad72f40c..ceef668c1 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintInterface.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index 5fe7d849d..d92ed7df1 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu @@ -94,9 +94,7 @@

      Hierarchy

      Implemented by

      @@ -136,31 +134,17 @@

      name

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      Links - these should point to the containing interface

      diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index 0a6f103af..408a98bff 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index da6deb99c..44946afa9 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index 4a81b3ea2..6fa3a9a56 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 47b9340e8..7884a9dc0 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index b1051362a..d0bba525d 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html index a935b7372..66c503deb 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html index d4701dec8..e1d9f3fa5 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules.html b/src/test/renderer/specs/modules.html index 4228ca937..1462b7297 100644 --- a/src/test/renderer/specs/modules.html +++ b/src/test/renderer/specs/modules.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/access.PrivateModule.html b/src/test/renderer/specs/modules/access.PrivateModule.html index 9b8356a44..61277bae2 100644 --- a/src/test/renderer/specs/modules/access.PrivateModule.html +++ b/src/test/renderer/specs/modules/access.PrivateModule.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/access.html b/src/test/renderer/specs/modules/access.html index ce4d91fde..dcf28bc29 100644 --- a/src/test/renderer/specs/modules/access.html +++ b/src/test/renderer/specs/modules/access.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/classes.html b/src/test/renderer/specs/modules/classes.html index f04d9c27f..bbb1a3935 100644 --- a/src/test/renderer/specs/modules/classes.html +++ b/src/test/renderer/specs/modules/classes.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/default_export.html b/src/test/renderer/specs/modules/default_export.html index ea9f0c7ff..909008ac4 100644 --- a/src/test/renderer/specs/modules/default_export.html +++ b/src/test/renderer/specs/modules/default_export.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/enumerations.Size.html b/src/test/renderer/specs/modules/enumerations.Size.html index 336292e9c..94f9d44f8 100644 --- a/src/test/renderer/specs/modules/enumerations.Size.html +++ b/src/test/renderer/specs/modules/enumerations.Size.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/enumerations.html b/src/test/renderer/specs/modules/enumerations.html index 251dec8a1..a5df86c33 100644 --- a/src/test/renderer/specs/modules/enumerations.html +++ b/src/test/renderer/specs/modules/enumerations.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/flattened.html b/src/test/renderer/specs/modules/flattened.html index a4a54f082..107599fe0 100644 --- a/src/test/renderer/specs/modules/flattened.html +++ b/src/test/renderer/specs/modules/flattened.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/functions.html b/src/test/renderer/specs/modules/functions.html index c182630ce..2c7dde2d1 100644 --- a/src/test/renderer/specs/modules/functions.html +++ b/src/test/renderer/specs/modules/functions.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/functions.moduleFunction.html b/src/test/renderer/specs/modules/functions.moduleFunction.html index d85e38253..3fa01d83d 100644 --- a/src/test/renderer/specs/modules/functions.moduleFunction.html +++ b/src/test/renderer/specs/modules/functions.moduleFunction.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/generics.html b/src/test/renderer/specs/modules/generics.html index 4209bf228..b77e46145 100644 --- a/src/test/renderer/specs/modules/generics.html +++ b/src/test/renderer/specs/modules/generics.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/markdown.html b/src/test/renderer/specs/modules/markdown.html index 97fdb8bc7..f1a12bf59 100644 --- a/src/test/renderer/specs/modules/markdown.html +++ b/src/test/renderer/specs/modules/markdown.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/mixin.html b/src/test/renderer/specs/modules/mixin.html index 1d9016ed2..6c1fbd4cb 100644 --- a/src/test/renderer/specs/modules/mixin.html +++ b/src/test/renderer/specs/modules/mixin.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/mod.html b/src/test/renderer/specs/modules/mod.html index 56fe3d1b3..7286595be 100644 --- a/src/test/renderer/specs/modules/mod.html +++ b/src/test/renderer/specs/modules/mod.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/mod2.html b/src/test/renderer/specs/modules/mod2.html index ad1b62556..63b5a5115 100644 --- a/src/test/renderer/specs/modules/mod2.html +++ b/src/test/renderer/specs/modules/mod2.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html index 0f5213090..9fead8150 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/modules.MyModule.html b/src/test/renderer/specs/modules/modules.MyModule.html index 59a2b8cfc..467aeb11f 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/modules.html b/src/test/renderer/specs/modules/modules.html index bc3cdcd6f..73df77ab4 100644 --- a/src/test/renderer/specs/modules/modules.html +++ b/src/test/renderer/specs/modules/modules.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/single_export.html b/src/test/renderer/specs/modules/single_export.html index 943d2c5f5..23dd0d4cb 100644 --- a/src/test/renderer/specs/modules/single_export.html +++ b/src/test/renderer/specs/modules/single_export.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu diff --git a/src/test/renderer/specs/modules/weird_names.html b/src/test/renderer/specs/modules/weird_names.html index df702b861..3f7147cb3 100644 --- a/src/test/renderer/specs/modules/weird_names.html +++ b/src/test/renderer/specs/modules/weird_names.html @@ -7,7 +7,7 @@ - +
      @@ -16,8 +16,8 @@
      - - + + + +
      Menu From 9b477d81072435374cafb81f9e5dddba18b764cf Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Mon, 26 Jul 2021 15:44:20 -0400 Subject: [PATCH 13/33] wip --- package.json | 1 + src/test/prettier-utils.ts | 1 + src/test/renderer.test.ts | 5 +++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4dc1a047c..1ed3296f9 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "@types/prettier": "^2.3.2", "@typescript-eslint/eslint-plugin": "^4.27.0", "@typescript-eslint/parser": "^4.27.0", + "ansidiff": "^1.0.0", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^7.0.0", "css-loader": "^5.0.1", diff --git a/src/test/prettier-utils.ts b/src/test/prettier-utils.ts index 2f1fa7da7..716adc9c5 100644 --- a/src/test/prettier-utils.ts +++ b/src/test/prettier-utils.ts @@ -4,6 +4,7 @@ export function canonicalizeHtml(text: string) { return prettier.format(text, { parser: 'html-tests', useTabs: true, + printWidth: 600, plugins: [{ languages: [{ name: 'html-tests', diff --git a/src/test/renderer.test.ts b/src/test/renderer.test.ts index 2a0adf4a3..728a49dea 100644 --- a/src/test/renderer.test.ts +++ b/src/test/renderer.test.ts @@ -5,6 +5,7 @@ import { TSConfigReader } from "../lib/utils/options"; import { readdirSync, readFileSync, statSync } from "fs"; import { remove } from "../lib/utils/fs"; import { canonicalizeHtml } from "./prettier-utils"; +const ansidiff = require("ansidiff"); function getFileIndex(base: string, dir = "", results: string[] = []) { const files = readdirSync(Path.join(base, dir)); @@ -42,8 +43,8 @@ function compareDirectories(a: string, b: string) { .replace("\r", "") .replace(gitHubRegExp, "%GITHUB%"); if(file.endsWith('.html')) { - aSrc = canonicalizeHtml(aSrc); - bSrc = canonicalizeHtml(bSrc); + aSrc = canonicalizeHtml(aSrc).trim(); + bSrc = canonicalizeHtml(bSrc).trim(); } if (aSrc !== bSrc) { From b975fdcb53a9bf8e7235460b25c4804d0eace004 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Mon, 26 Jul 2021 15:51:21 -0400 Subject: [PATCH 14/33] wip --- src/test/renderer/specs/classes/access.PrivateClass.html | 6 +++--- src/test/renderer/specs/classes/classes.BaseClass.html | 6 +++--- src/test/renderer/specs/classes/classes.GenericClass.html | 6 +++--- .../renderer/specs/classes/classes.NonGenericClass.html | 6 +++--- src/test/renderer/specs/classes/classes.SubClassA.html | 6 +++--- src/test/renderer/specs/classes/classes.SubClassB.html | 6 +++--- .../specs/classes/default_export.ExportedClassName.html | 6 +++--- src/test/renderer/specs/classes/default_export.default.html | 6 +++--- .../renderer/specs/classes/flattened.FlattenedClass.html | 6 +++--- src/test/renderer/specs/classes/mixin.Base.html | 6 +++--- .../renderer/specs/classes/mixin.SomeClassWithMixin.html | 6 +++--- src/test/renderer/specs/classes/single_export.export_.html | 6 +++--- src/test/renderer/specs/enums/enumerations.Directions.html | 6 +++--- src/test/renderer/specs/enums/enumerations.Size-1.html | 6 +++--- src/test/renderer/specs/index.html | 6 +++--- .../renderer/specs/interfaces/classes.NameInterface.html | 6 +++--- .../renderer/specs/interfaces/classes.PrintInterface.html | 6 +++--- .../specs/interfaces/classes.PrintNameInterface.html | 6 +++--- src/test/renderer/specs/interfaces/generics.A.html | 6 +++--- src/test/renderer/specs/interfaces/generics.AB.html | 6 +++--- src/test/renderer/specs/interfaces/generics.ABNumber.html | 6 +++--- src/test/renderer/specs/interfaces/generics.ABString.html | 6 +++--- src/test/renderer/specs/interfaces/generics.B.html | 6 +++--- src/test/renderer/specs/interfaces/mixin.Mixin1Type.html | 6 +++--- src/test/renderer/specs/interfaces/mixin.Mixin2Type.html | 6 +++--- src/test/renderer/specs/modules.html | 6 +++--- src/test/renderer/specs/modules/access.PrivateModule.html | 6 +++--- src/test/renderer/specs/modules/access.html | 6 +++--- src/test/renderer/specs/modules/classes.html | 6 +++--- src/test/renderer/specs/modules/default_export.html | 6 +++--- src/test/renderer/specs/modules/enumerations.Size.html | 6 +++--- src/test/renderer/specs/modules/enumerations.html | 6 +++--- src/test/renderer/specs/modules/flattened.html | 6 +++--- src/test/renderer/specs/modules/functions.html | 6 +++--- .../renderer/specs/modules/functions.moduleFunction.html | 6 +++--- src/test/renderer/specs/modules/generics.html | 6 +++--- src/test/renderer/specs/modules/markdown.html | 6 +++--- src/test/renderer/specs/modules/mixin.html | 6 +++--- src/test/renderer/specs/modules/mod.html | 6 +++--- src/test/renderer/specs/modules/mod2.html | 6 +++--- .../specs/modules/modules.MyModule.MySubmodule.html | 6 +++--- src/test/renderer/specs/modules/modules.MyModule.html | 6 +++--- src/test/renderer/specs/modules/modules.html | 6 +++--- src/test/renderer/specs/modules/single_export.html | 6 +++--- src/test/renderer/specs/modules/weird_names.html | 6 +++--- 45 files changed, 135 insertions(+), 135 deletions(-) diff --git a/src/test/renderer/specs/classes/access.PrivateClass.html b/src/test/renderer/specs/classes/access.PrivateClass.html index 7d1ee78b0..ac29bf596 100644 --- a/src/test/renderer/specs/classes/access.PrivateClass.html +++ b/src/test/renderer/specs/classes/access.PrivateClass.html @@ -7,7 +7,7 @@ - +
      @@ -37,9 +37,9 @@
    • All
    - + - + diff --git a/src/test/renderer/specs/classes/classes.BaseClass.html b/src/test/renderer/specs/classes/classes.BaseClass.html index 0642329f1..e74568a9f 100644 --- a/src/test/renderer/specs/classes/classes.BaseClass.html +++ b/src/test/renderer/specs/classes/classes.BaseClass.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/classes.GenericClass.html b/src/test/renderer/specs/classes/classes.GenericClass.html index 58fdc3e12..c41f15d05 100644 --- a/src/test/renderer/specs/classes/classes.GenericClass.html +++ b/src/test/renderer/specs/classes/classes.GenericClass.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/classes.NonGenericClass.html b/src/test/renderer/specs/classes/classes.NonGenericClass.html index aae1ea08b..19f5906db 100644 --- a/src/test/renderer/specs/classes/classes.NonGenericClass.html +++ b/src/test/renderer/specs/classes/classes.NonGenericClass.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/classes.SubClassA.html b/src/test/renderer/specs/classes/classes.SubClassA.html index ebf7a7a3a..aeee033b2 100644 --- a/src/test/renderer/specs/classes/classes.SubClassA.html +++ b/src/test/renderer/specs/classes/classes.SubClassA.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/classes.SubClassB.html b/src/test/renderer/specs/classes/classes.SubClassB.html index 24ceecf73..aaaf39f0c 100644 --- a/src/test/renderer/specs/classes/classes.SubClassB.html +++ b/src/test/renderer/specs/classes/classes.SubClassB.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index 6f1c8d9c5..64698b980 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index c27e98257..d0590f135 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/flattened.FlattenedClass.html b/src/test/renderer/specs/classes/flattened.FlattenedClass.html index ba5e21837..47e54a5b0 100644 --- a/src/test/renderer/specs/classes/flattened.FlattenedClass.html +++ b/src/test/renderer/specs/classes/flattened.FlattenedClass.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/mixin.Base.html b/src/test/renderer/specs/classes/mixin.Base.html index c3bd856cc..72b5a90fd 100644 --- a/src/test/renderer/specs/classes/mixin.Base.html +++ b/src/test/renderer/specs/classes/mixin.Base.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html index 290374397..4011d925e 100644 --- a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html +++ b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index b124f0e3b..f8a1e8f73 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/enums/enumerations.Directions.html b/src/test/renderer/specs/enums/enumerations.Directions.html index c275b07bd..237053741 100644 --- a/src/test/renderer/specs/enums/enumerations.Directions.html +++ b/src/test/renderer/specs/enums/enumerations.Directions.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/enums/enumerations.Size-1.html b/src/test/renderer/specs/enums/enumerations.Size-1.html index 99956ef53..333b473b8 100644 --- a/src/test/renderer/specs/enums/enumerations.Size-1.html +++ b/src/test/renderer/specs/enums/enumerations.Size-1.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/index.html b/src/test/renderer/specs/index.html index ad8bda63c..f01ccba49 100644 --- a/src/test/renderer/specs/index.html +++ b/src/test/renderer/specs/index.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/classes.NameInterface.html b/src/test/renderer/specs/interfaces/classes.NameInterface.html index ae62e19da..b786c328e 100644 --- a/src/test/renderer/specs/interfaces/classes.NameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.NameInterface.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/classes.PrintInterface.html b/src/test/renderer/specs/interfaces/classes.PrintInterface.html index ceef668c1..7121db31b 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintInterface.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index d92ed7df1..440f48d5d 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index 408a98bff..0ecd30a37 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index 44946afa9..4263fb41d 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index 6fa3a9a56..2d4ee38ad 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 7884a9dc0..5cc23ddcb 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index d0bba525d..172bc2ba7 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html index 66c503deb..d582b3f7f 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html index e1d9f3fa5..5fc5b9e99 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules.html b/src/test/renderer/specs/modules.html index 1462b7297..41a249231 100644 --- a/src/test/renderer/specs/modules.html +++ b/src/test/renderer/specs/modules.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/access.PrivateModule.html b/src/test/renderer/specs/modules/access.PrivateModule.html index 61277bae2..0bc2bffeb 100644 --- a/src/test/renderer/specs/modules/access.PrivateModule.html +++ b/src/test/renderer/specs/modules/access.PrivateModule.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/access.html b/src/test/renderer/specs/modules/access.html index dcf28bc29..4753cff4b 100644 --- a/src/test/renderer/specs/modules/access.html +++ b/src/test/renderer/specs/modules/access.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/classes.html b/src/test/renderer/specs/modules/classes.html index bbb1a3935..48f814824 100644 --- a/src/test/renderer/specs/modules/classes.html +++ b/src/test/renderer/specs/modules/classes.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/default_export.html b/src/test/renderer/specs/modules/default_export.html index 909008ac4..12186104e 100644 --- a/src/test/renderer/specs/modules/default_export.html +++ b/src/test/renderer/specs/modules/default_export.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/enumerations.Size.html b/src/test/renderer/specs/modules/enumerations.Size.html index 94f9d44f8..861eac175 100644 --- a/src/test/renderer/specs/modules/enumerations.Size.html +++ b/src/test/renderer/specs/modules/enumerations.Size.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/enumerations.html b/src/test/renderer/specs/modules/enumerations.html index a5df86c33..465e1d922 100644 --- a/src/test/renderer/specs/modules/enumerations.html +++ b/src/test/renderer/specs/modules/enumerations.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/flattened.html b/src/test/renderer/specs/modules/flattened.html index 107599fe0..9f4954433 100644 --- a/src/test/renderer/specs/modules/flattened.html +++ b/src/test/renderer/specs/modules/flattened.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/functions.html b/src/test/renderer/specs/modules/functions.html index 2c7dde2d1..0c0bd729d 100644 --- a/src/test/renderer/specs/modules/functions.html +++ b/src/test/renderer/specs/modules/functions.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/functions.moduleFunction.html b/src/test/renderer/specs/modules/functions.moduleFunction.html index 3fa01d83d..3fe9d6974 100644 --- a/src/test/renderer/specs/modules/functions.moduleFunction.html +++ b/src/test/renderer/specs/modules/functions.moduleFunction.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/generics.html b/src/test/renderer/specs/modules/generics.html index b77e46145..94493b622 100644 --- a/src/test/renderer/specs/modules/generics.html +++ b/src/test/renderer/specs/modules/generics.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/markdown.html b/src/test/renderer/specs/modules/markdown.html index f1a12bf59..0474205e1 100644 --- a/src/test/renderer/specs/modules/markdown.html +++ b/src/test/renderer/specs/modules/markdown.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/mixin.html b/src/test/renderer/specs/modules/mixin.html index 6c1fbd4cb..0ae564753 100644 --- a/src/test/renderer/specs/modules/mixin.html +++ b/src/test/renderer/specs/modules/mixin.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/mod.html b/src/test/renderer/specs/modules/mod.html index 7286595be..3f73ba3d5 100644 --- a/src/test/renderer/specs/modules/mod.html +++ b/src/test/renderer/specs/modules/mod.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/mod2.html b/src/test/renderer/specs/modules/mod2.html index 63b5a5115..a645a0b7e 100644 --- a/src/test/renderer/specs/modules/mod2.html +++ b/src/test/renderer/specs/modules/mod2.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html index 9fead8150..1dcefd3a3 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/modules.MyModule.html b/src/test/renderer/specs/modules/modules.MyModule.html index 467aeb11f..4c4a6b41d 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/modules.html b/src/test/renderer/specs/modules/modules.html index 73df77ab4..58242e7c6 100644 --- a/src/test/renderer/specs/modules/modules.html +++ b/src/test/renderer/specs/modules/modules.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/single_export.html b/src/test/renderer/specs/modules/single_export.html index 23dd0d4cb..4093feb71 100644 --- a/src/test/renderer/specs/modules/single_export.html +++ b/src/test/renderer/specs/modules/single_export.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + diff --git a/src/test/renderer/specs/modules/weird_names.html b/src/test/renderer/specs/modules/weird_names.html index 3f7147cb3..eeea17307 100644 --- a/src/test/renderer/specs/modules/weird_names.html +++ b/src/test/renderer/specs/modules/weird_names.html @@ -7,7 +7,7 @@ - +
    @@ -37,9 +37,9 @@
  • All
  • - + - + From 1642f9f769b23bc15359573e2bdbf37f648d30b9 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Mon, 26 Jul 2021 19:41:38 -0400 Subject: [PATCH 15/33] spec updates --- .../specs/classes/access.PrivateClass.html | 128 +++++------------- .../specs/classes/classes.BaseClass.html | 32 ++--- .../specs/classes/classes.GenericClass.html | 28 ++-- .../classes/classes.NonGenericClass.html | 28 ++-- .../specs/classes/classes.SubClassA.html | 28 ++-- .../specs/classes/classes.SubClassB.html | 28 ++-- .../default_export.ExportedClassName.html | 28 ++-- .../specs/classes/default_export.default.html | 28 ++-- .../classes/flattened.FlattenedClass.html | 28 ++-- .../renderer/specs/classes/mixin.Base.html | 28 ++-- .../classes/mixin.SomeClassWithMixin.html | 28 ++-- .../specs/classes/single_export.export_.html | 28 ++-- .../specs/enums/enumerations.Directions.html | 24 ++-- .../specs/enums/enumerations.Size-1.html | 24 ++-- src/test/renderer/specs/index.html | 12 +- .../interfaces/classes.NameInterface.html | 28 ++-- .../interfaces/classes.PrintInterface.html | 28 ++-- .../classes.PrintNameInterface.html | 32 ++--- .../renderer/specs/interfaces/generics.A.html | 28 ++-- .../specs/interfaces/generics.AB.html | 36 ++--- .../specs/interfaces/generics.ABNumber.html | 28 ++-- .../specs/interfaces/generics.ABString.html | 28 ++-- .../renderer/specs/interfaces/generics.B.html | 28 ++-- .../specs/interfaces/mixin.Mixin1Type.html | 28 ++-- .../specs/interfaces/mixin.Mixin2Type.html | 28 ++-- src/test/renderer/specs/modules.html | 12 +- .../specs/modules/access.PrivateModule.html | 16 +-- src/test/renderer/specs/modules/access.html | 16 +-- src/test/renderer/specs/modules/classes.html | 16 +-- .../specs/modules/default_export.html | 16 +-- .../specs/modules/enumerations.Size.html | 16 +-- .../renderer/specs/modules/enumerations.html | 16 +-- .../renderer/specs/modules/flattened.html | 16 +-- .../renderer/specs/modules/functions.html | 16 +-- .../modules/functions.moduleFunction.html | 16 +-- src/test/renderer/specs/modules/generics.html | 16 +-- src/test/renderer/specs/modules/markdown.html | 16 +-- src/test/renderer/specs/modules/mixin.html | 16 +-- src/test/renderer/specs/modules/mod.html | 16 +-- src/test/renderer/specs/modules/mod2.html | 16 +-- .../modules/modules.MyModule.MySubmodule.html | 16 +-- .../specs/modules/modules.MyModule.html | 16 +-- src/test/renderer/specs/modules/modules.html | 16 +-- .../renderer/specs/modules/single_export.html | 16 +-- .../renderer/specs/modules/weird_names.html | 16 +-- 45 files changed, 412 insertions(+), 696 deletions(-) diff --git a/src/test/renderer/specs/classes/access.PrivateClass.html b/src/test/renderer/specs/classes/access.PrivateClass.html index ac29bf596..0db6bba2b 100644 --- a/src/test/renderer/specs/classes/access.PrivateClass.html +++ b/src/test/renderer/specs/classes/access.PrivateClass.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@ diff --git a/src/test/renderer/specs/classes/classes.BaseClass.html b/src/test/renderer/specs/classes/classes.BaseClass.html index e74568a9f..178bbf447 100644 --- a/src/test/renderer/specs/classes/classes.BaseClass.html +++ b/src/test/renderer/specs/classes/classes.BaseClass.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class BaseClass

    @@ -87,12 +81,8 @@

    Hierarchy

  • BaseClass
  • diff --git a/src/test/renderer/specs/classes/classes.GenericClass.html b/src/test/renderer/specs/classes/classes.GenericClass.html index c41f15d05..7c3ffae76 100644 --- a/src/test/renderer/specs/classes/classes.GenericClass.html +++ b/src/test/renderer/specs/classes/classes.GenericClass.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class GenericClass<T>

    @@ -94,9 +88,7 @@

    Hierarchy

  • GenericClass
  • diff --git a/src/test/renderer/specs/classes/classes.NonGenericClass.html b/src/test/renderer/specs/classes/classes.NonGenericClass.html index 19f5906db..ee07f056f 100644 --- a/src/test/renderer/specs/classes/classes.NonGenericClass.html +++ b/src/test/renderer/specs/classes/classes.NonGenericClass.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class NonGenericClass

    @@ -81,9 +75,7 @@

    Hierarchy

  • GenericClass<SubClassB>
      -
    • - NonGenericClass -
    • +
    • NonGenericClass
  • diff --git a/src/test/renderer/specs/classes/classes.SubClassA.html b/src/test/renderer/specs/classes/classes.SubClassA.html index aeee033b2..e310eacbb 100644 --- a/src/test/renderer/specs/classes/classes.SubClassA.html +++ b/src/test/renderer/specs/classes/classes.SubClassA.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class SubClassA

    @@ -83,9 +77,7 @@

    Hierarchy

  • BaseClass
      -
    • - SubClassA -
    • +
    • SubClassA
  • diff --git a/src/test/renderer/specs/classes/classes.SubClassB.html b/src/test/renderer/specs/classes/classes.SubClassB.html index aaaf39f0c..e67da4ab3 100644 --- a/src/test/renderer/specs/classes/classes.SubClassB.html +++ b/src/test/renderer/specs/classes/classes.SubClassB.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class SubClassB

    @@ -82,9 +76,7 @@

    Hierarchy

  • BaseClass
      -
    • - SubClassB -
    • +
    • SubClassB
  • diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index 64698b980..8765ac13b 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class ExportedClassName

    @@ -81,9 +75,7 @@

    Class ExportedClassName

    Hierarchy

      -
    • - ExportedClassName -
    • +
    • ExportedClassName
    diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index d0590f135..16136f18a 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class default

    @@ -80,9 +74,7 @@

    Class default

    Hierarchy

      -
    • - default -
    • +
    • default
    diff --git a/src/test/renderer/specs/classes/flattened.FlattenedClass.html b/src/test/renderer/specs/classes/flattened.FlattenedClass.html index 47e54a5b0..5f7568877 100644 --- a/src/test/renderer/specs/classes/flattened.FlattenedClass.html +++ b/src/test/renderer/specs/classes/flattened.FlattenedClass.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class FlattenedClass

    @@ -78,9 +72,7 @@

    Class FlattenedClass

    Hierarchy

      -
    • - FlattenedClass -
    • +
    • FlattenedClass
    diff --git a/src/test/renderer/specs/classes/mixin.Base.html b/src/test/renderer/specs/classes/mixin.Base.html index 72b5a90fd..e8af277fd 100644 --- a/src/test/renderer/specs/classes/mixin.Base.html +++ b/src/test/renderer/specs/classes/mixin.Base.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class Base

    @@ -78,9 +72,7 @@

    Class Base

    Hierarchy

      -
    • - Base -
    • +
    • Base
    diff --git a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html index 4011d925e..e4c4bace5 100644 --- a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html +++ b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class SomeClassWithMixin

    @@ -81,9 +75,7 @@

    Hierarchy

  • __type<{ prototype: any } & typeof Base, this> & __type<typeof Base, this> & Base<this>
      -
    • - SomeClassWithMixin -
    • +
    • SomeClassWithMixin
  • diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index f8a1e8f73..450788592 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Class export=

    @@ -80,9 +74,7 @@

    Class export=

    Hierarchy

      -
    • - export= -
    • +
    • export=
    diff --git a/src/test/renderer/specs/enums/enumerations.Directions.html b/src/test/renderer/specs/enums/enumerations.Directions.html index 237053741..c493a249a 100644 --- a/src/test/renderer/specs/enums/enumerations.Directions.html +++ b/src/test/renderer/specs/enums/enumerations.Directions.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Enumeration Directions

    diff --git a/src/test/renderer/specs/enums/enumerations.Size-1.html b/src/test/renderer/specs/enums/enumerations.Size-1.html index 333b473b8..87440ce93 100644 --- a/src/test/renderer/specs/enums/enumerations.Size-1.html +++ b/src/test/renderer/specs/enums/enumerations.Size-1.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Enumeration Size

    diff --git a/src/test/renderer/specs/index.html b/src/test/renderer/specs/index.html index f01ccba49..73d1795fe 100644 --- a/src/test/renderer/specs/index.html +++ b/src/test/renderer/specs/index.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu diff --git a/src/test/renderer/specs/interfaces/classes.NameInterface.html b/src/test/renderer/specs/interfaces/classes.NameInterface.html index b786c328e..949051a25 100644 --- a/src/test/renderer/specs/interfaces/classes.NameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.NameInterface.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface NameInterface

    @@ -91,9 +85,7 @@

    Hierarchy

  • NameInterface
  • diff --git a/src/test/renderer/specs/interfaces/classes.PrintInterface.html b/src/test/renderer/specs/interfaces/classes.PrintInterface.html index 7121db31b..f2ccaa426 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintInterface.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface PrintInterface

    @@ -81,9 +75,7 @@

    Hierarchy

  • PrintInterface
  • diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index 440f48d5d..064ada44a 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface PrintNameInterface

    @@ -78,15 +72,11 @@

    Interface PrintNameInterface

    Hierarchy

    diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index 0ecd30a37..fc05a5a7f 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface A<T>

    @@ -94,9 +88,7 @@

    Hierarchy

  • A
  • diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index 4263fb41d..3c41edfc6 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface AB<T>

    @@ -92,21 +86,15 @@

    T

    Hierarchy

      -
    • - A<T> -
    • +
    • A<T>
    • B<T, boolean> diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index 2d4ee38ad..1d98f2dbe 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface ABNumber

    @@ -81,9 +75,7 @@

    Hierarchy

  • AB<number>
      -
    • - ABNumber -
    • +
    • ABNumber
  • diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 5cc23ddcb..57896df2a 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface ABString

    @@ -81,9 +75,7 @@

    Hierarchy

  • AB<string>
      -
    • - ABString -
    • +
    • ABString
  • diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index 172bc2ba7..42e80a3c0 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface B<T, C>

    @@ -102,9 +96,7 @@

    Hierarchy

  • B
  • diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html index d582b3f7f..d5387cf7d 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface Mixin1Type

    @@ -81,9 +75,7 @@

    Hierarchy

  • Mixin<typeof Mixin1Func>
      -
    • - Mixin1Type -
    • +
    • Mixin1Type
  • diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html index 5fc5b9e99..d6ae5c70f 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,15 +51,9 @@

    Interface Mixin2Type

    @@ -81,9 +75,7 @@

    Hierarchy

  • Mixin<typeof Mixin2>
      -
    • - Mixin2Type -
    • +
    • Mixin2Type
  • diff --git a/src/test/renderer/specs/modules.html b/src/test/renderer/specs/modules.html index 41a249231..4228ca937 100644 --- a/src/test/renderer/specs/modules.html +++ b/src/test/renderer/specs/modules.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu diff --git a/src/test/renderer/specs/modules/access.PrivateModule.html b/src/test/renderer/specs/modules/access.PrivateModule.html index 0bc2bffeb..c28f3b9fa 100644 --- a/src/test/renderer/specs/modules/access.PrivateModule.html +++ b/src/test/renderer/specs/modules/access.PrivateModule.html @@ -16,8 +16,8 @@
    - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • access
    • diff --git a/src/test/renderer/specs/modules/access.html b/src/test/renderer/specs/modules/access.html index 4753cff4b..9f6912a96 100644 --- a/src/test/renderer/specs/modules/access.html +++ b/src/test/renderer/specs/modules/access.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • access
    • diff --git a/src/test/renderer/specs/modules/classes.html b/src/test/renderer/specs/modules/classes.html index 48f814824..ecf8b3795 100644 --- a/src/test/renderer/specs/modules/classes.html +++ b/src/test/renderer/specs/modules/classes.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • classes
    • diff --git a/src/test/renderer/specs/modules/default_export.html b/src/test/renderer/specs/modules/default_export.html index 12186104e..b6846a424 100644 --- a/src/test/renderer/specs/modules/default_export.html +++ b/src/test/renderer/specs/modules/default_export.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • default-export
    • diff --git a/src/test/renderer/specs/modules/enumerations.Size.html b/src/test/renderer/specs/modules/enumerations.Size.html index 861eac175..ab3950206 100644 --- a/src/test/renderer/specs/modules/enumerations.Size.html +++ b/src/test/renderer/specs/modules/enumerations.Size.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • enumerations
    • diff --git a/src/test/renderer/specs/modules/enumerations.html b/src/test/renderer/specs/modules/enumerations.html index 465e1d922..ff6441b04 100644 --- a/src/test/renderer/specs/modules/enumerations.html +++ b/src/test/renderer/specs/modules/enumerations.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • enumerations
    • diff --git a/src/test/renderer/specs/modules/flattened.html b/src/test/renderer/specs/modules/flattened.html index 9f4954433..ea089dd61 100644 --- a/src/test/renderer/specs/modules/flattened.html +++ b/src/test/renderer/specs/modules/flattened.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • flattened
    • diff --git a/src/test/renderer/specs/modules/functions.html b/src/test/renderer/specs/modules/functions.html index 0c0bd729d..60acd0984 100644 --- a/src/test/renderer/specs/modules/functions.html +++ b/src/test/renderer/specs/modules/functions.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • functions
    • diff --git a/src/test/renderer/specs/modules/functions.moduleFunction.html b/src/test/renderer/specs/modules/functions.moduleFunction.html index 3fe9d6974..b46bf2e34 100644 --- a/src/test/renderer/specs/modules/functions.moduleFunction.html +++ b/src/test/renderer/specs/modules/functions.moduleFunction.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • functions
    • diff --git a/src/test/renderer/specs/modules/generics.html b/src/test/renderer/specs/modules/generics.html index 94493b622..8cd3c9eb6 100644 --- a/src/test/renderer/specs/modules/generics.html +++ b/src/test/renderer/specs/modules/generics.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • generics
    • diff --git a/src/test/renderer/specs/modules/markdown.html b/src/test/renderer/specs/modules/markdown.html index 0474205e1..afbf262e8 100644 --- a/src/test/renderer/specs/modules/markdown.html +++ b/src/test/renderer/specs/modules/markdown.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • markdown
    • diff --git a/src/test/renderer/specs/modules/mixin.html b/src/test/renderer/specs/modules/mixin.html index 0ae564753..00e6a41b6 100644 --- a/src/test/renderer/specs/modules/mixin.html +++ b/src/test/renderer/specs/modules/mixin.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • mixin
    • diff --git a/src/test/renderer/specs/modules/mod.html b/src/test/renderer/specs/modules/mod.html index 3f73ba3d5..c9060ae58 100644 --- a/src/test/renderer/specs/modules/mod.html +++ b/src/test/renderer/specs/modules/mod.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • mod
    • diff --git a/src/test/renderer/specs/modules/mod2.html b/src/test/renderer/specs/modules/mod2.html index a645a0b7e..325680ff0 100644 --- a/src/test/renderer/specs/modules/mod2.html +++ b/src/test/renderer/specs/modules/mod2.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • mod2
    • diff --git a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html index 1dcefd3a3..ce1820ede 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • modules
    • diff --git a/src/test/renderer/specs/modules/modules.MyModule.html b/src/test/renderer/specs/modules/modules.MyModule.html index 4c4a6b41d..41d1334f9 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • modules
    • diff --git a/src/test/renderer/specs/modules/modules.html b/src/test/renderer/specs/modules/modules.html index 58242e7c6..6c5cce4bf 100644 --- a/src/test/renderer/specs/modules/modules.html +++ b/src/test/renderer/specs/modules/modules.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • modules
    • diff --git a/src/test/renderer/specs/modules/single_export.html b/src/test/renderer/specs/modules/single_export.html index 4093feb71..13d7e0280 100644 --- a/src/test/renderer/specs/modules/single_export.html +++ b/src/test/renderer/specs/modules/single_export.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • single-export
    • diff --git a/src/test/renderer/specs/modules/weird_names.html b/src/test/renderer/specs/modules/weird_names.html index eeea17307..5be50fd73 100644 --- a/src/test/renderer/specs/modules/weird_names.html +++ b/src/test/renderer/specs/modules/weird_names.html @@ -16,8 +16,8 @@
      - - - - + +
    Menu @@ -51,9 +51,7 @@
      -
    • - typedoc -
    • +
    • typedoc
    • weird-names
    • From be193d620772713a587814362ec74e760a77a6b3 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Tue, 27 Jul 2021 00:42:28 -0400 Subject: [PATCH 16/33] update specs --- .../specs/classes/classes.BaseClass.html | 148 ++++------------ .../specs/classes/classes.GenericClass.html | 120 ++++--------- .../classes/classes.NonGenericClass.html | 120 ++++--------- .../specs/classes/classes.SubClassA.html | 160 +++++------------- .../specs/classes/classes.SubClassB.html | 144 ++++------------ .../default_export.ExportedClassName.html | 76 +++------ .../specs/classes/default_export.default.html | 76 +++------ .../classes/flattened.FlattenedClass.html | 100 +++-------- .../renderer/specs/classes/mixin.Base.html | 112 +++--------- .../classes/mixin.SomeClassWithMixin.html | 136 ++++----------- .../specs/classes/single_export.export_.html | 72 ++------ .../specs/enums/enumerations.Directions.html | 88 +++------- .../specs/enums/enumerations.Size-1.html | 76 +++------ .../interfaces/classes.NameInterface.html | 100 +++-------- .../interfaces/classes.PrintInterface.html | 96 +++-------- .../classes.PrintNameInterface.html | 108 +++--------- .../renderer/specs/interfaces/generics.A.html | 104 +++--------- .../specs/interfaces/generics.AB.html | 112 +++--------- .../specs/interfaces/generics.ABNumber.html | 112 +++--------- .../specs/interfaces/generics.ABString.html | 112 +++--------- .../renderer/specs/interfaces/generics.B.html | 108 +++--------- .../specs/interfaces/mixin.Mixin1Type.html | 116 ++++--------- .../specs/interfaces/mixin.Mixin2Type.html | 124 ++++---------- 23 files changed, 630 insertions(+), 1890 deletions(-) diff --git a/src/test/renderer/specs/classes/classes.BaseClass.html b/src/test/renderer/specs/classes/classes.BaseClass.html index 178bbf447..5ce1ed6d0 100644 --- a/src/test/renderer/specs/classes/classes.BaseClass.html +++ b/src/test/renderer/specs/classes/classes.BaseClass.html @@ -434,51 +434,21 @@

      Returns string

    diff --git a/src/test/renderer/specs/classes/classes.GenericClass.html b/src/test/renderer/specs/classes/classes.GenericClass.html index 7c3ffae76..0b0149747 100644 --- a/src/test/renderer/specs/classes/classes.GenericClass.html +++ b/src/test/renderer/specs/classes/classes.GenericClass.html @@ -268,109 +268,49 @@

    Returns void

    diff --git a/src/test/renderer/specs/classes/classes.NonGenericClass.html b/src/test/renderer/specs/classes/classes.NonGenericClass.html index ee07f056f..1c66d61cc 100644 --- a/src/test/renderer/specs/classes/classes.NonGenericClass.html +++ b/src/test/renderer/specs/classes/classes.NonGenericClass.html @@ -246,109 +246,49 @@

    Returns void

    diff --git a/src/test/renderer/specs/classes/classes.SubClassA.html b/src/test/renderer/specs/classes/classes.SubClassA.html index e310eacbb..60bb71251 100644 --- a/src/test/renderer/specs/classes/classes.SubClassA.html +++ b/src/test/renderer/specs/classes/classes.SubClassA.html @@ -576,139 +576,59 @@

    Returns string

    diff --git a/src/test/renderer/specs/classes/classes.SubClassB.html b/src/test/renderer/specs/classes/classes.SubClassB.html index e67da4ab3..62c818fd1 100644 --- a/src/test/renderer/specs/classes/classes.SubClassB.html +++ b/src/test/renderer/specs/classes/classes.SubClassB.html @@ -408,127 +408,55 @@

    Returns string

    diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index 8765ac13b..220e1e687 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -166,51 +166,21 @@

    Returns string

    diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index 16136f18a..e0b018924 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -165,72 +165,34 @@

    Returns string

    diff --git a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html index e4c4bace5..ed2b3b657 100644 --- a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html +++ b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html @@ -241,121 +241,53 @@

    Returns

    diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index 450788592..465a1dec3 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -165,51 +165,21 @@

    Returns string

    diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index 064ada44a..e02686018 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -214,100 +214,46 @@

    Returns void

    diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index fc05a5a7f..c87c693a2 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -133,51 +133,21 @@

    Returns T< diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index 3c41edfc6..9bb8e839e 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -194,103 +194,47 @@

    Returns void

    diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index 1d98f2dbe..223ee1b3b 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -173,103 +173,47 @@

    Returns void

    diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 57896df2a..82a1a764c 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -173,103 +173,47 @@

    Returns void

    diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index 42e80a3c0..74f742cdc 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -170,100 +170,46 @@

    Returns void

    diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html index d5387cf7d..78b1802dd 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html @@ -163,106 +163,48 @@

    Returns

    diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html index d6ae5c70f..80baa1e58 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html @@ -194,112 +194,50 @@

    Returns

    From 2346df0a0568925e54a6e0da211d1dbded55679f Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Tue, 27 Jul 2021 10:16:35 -0400 Subject: [PATCH 17/33] wip --- src/lib/output/helpers/wbr.tsx | 4 +- .../output/themes/default/layouts/default.tsx | 27 ++++++++++--- .../themes/default/partials/breadcrumb.tsx | 1 - .../themes/default/partials/comment.tsx | 6 +-- .../output/themes/default/partials/header.tsx | 7 ++-- .../themes/default/partials/hierarchy.tsx | 31 ++++++-------- .../output/themes/default/partials/index.tsx | 2 +- .../default/partials/member.declaration.tsx | 3 +- .../default/partials/member.getterSetter.tsx | 4 +- .../default/partials/member.reference.tsx | 2 +- .../partials/member.signature.body.tsx | 6 +-- .../partials/member.signature.title.tsx | 27 +++++-------- .../default/partials/member.sources.tsx | 2 +- .../themes/default/partials/members.group.tsx | 16 ++++---- .../themes/default/partials/members.tsx | 6 +-- .../themes/default/partials/parameter.tsx | 2 +- .../themes/default/partials/toc.root.tsx | 40 +++++++------------ .../type-inline-partials/reference.tsx | 7 ++-- .../type-inline-partials/reflection.tsx | 15 ++----- .../partials/type-inline-partials/tuple.tsx | 5 +-- .../themes/default/partials/typeAndParent.tsx | 17 +++----- .../default/partials/typeParameters.tsx | 3 +- .../themes/default/templates/reflection.tsx | 7 ++-- src/lib/output/themes/lib.tsx | 5 ++- src/test/prettier-utils.ts | 23 ++++++----- src/test/renderer.test.ts | 28 ++++++++----- 26 files changed, 142 insertions(+), 154 deletions(-) diff --git a/src/lib/output/helpers/wbr.tsx b/src/lib/output/helpers/wbr.tsx index 268cbd47c..9fe91bda2 100644 --- a/src/lib/output/helpers/wbr.tsx +++ b/src/lib/output/helpers/wbr.tsx @@ -11,13 +11,13 @@ import * as React from 'react'; export function wbr(str: string): (string | React.ReactElement)[] { // TODO surely there is a better way to do this, but I'm tired. const ret: (string | React.ReactElement)[] = []; - const re = /^[\s\S]*?(?:([^_-][_-])(?=[^_-])|([^A-Z])(?=[A-Z][^A-Z]))/g; + const re = /[\s\S]*?(?:([^_-][_-])(?=[^_-])|([^A-Z])(?=[A-Z][^A-Z]))/g; let match: RegExpExecArray | null; let i = 0; while((match = re.exec(str))) { ret.push(match[0]); ret.push(); - i += match.index + match[0].length; + i += match[0].length; } ret.push(str.slice(i)); diff --git a/src/lib/output/themes/default/layouts/default.tsx b/src/lib/output/themes/default/layouts/default.tsx index 93a3aec6e..ac1900d40 100644 --- a/src/lib/output/themes/default/layouts/default.tsx +++ b/src/lib/output/themes/default/layouts/default.tsx @@ -33,11 +33,28 @@ export const defaultLayout = (props: PageEvent) => (
    diff --git a/src/lib/output/themes/default/partials/breadcrumb.tsx b/src/lib/output/themes/default/partials/breadcrumb.tsx index f2965d935..d7d5d3a08 100644 --- a/src/lib/output/themes/default/partials/breadcrumb.tsx +++ b/src/lib/output/themes/default/partials/breadcrumb.tsx @@ -11,7 +11,6 @@ export const breadcrumb = (props: Reflection): React.ReactElement | undefined =>
  • {props.url ? ( <> - {" "} {props.name} ) : ( diff --git a/src/lib/output/themes/default/partials/comment.tsx b/src/lib/output/themes/default/partials/comment.tsx index 0304ce850..3e00ba5bb 100644 --- a/src/lib/output/themes/default/partials/comment.tsx +++ b/src/lib/output/themes/default/partials/comment.tsx @@ -6,21 +6,21 @@ export const comment = (props: Reflection) => ( <> {With(props.comment, (props) => ( <> - {!!props.hasVisibleComponent && ( + {!!props.hasVisibleComponent() && ( <> {" "}
    {!!props.shortText && ( <> {" "} -
    +
    )} {!!props.text && ( {props.text} )} - {!!props.tags && ( + {props.tags?.length > 0 && ( <> {" "}
    diff --git a/src/lib/output/themes/default/partials/header.tsx b/src/lib/output/themes/default/partials/header.tsx index bec86b4bd..54ed7e20d 100644 --- a/src/lib/output/themes/default/partials/header.tsx +++ b/src/lib/output/themes/default/partials/header.tsx @@ -86,19 +86,18 @@ export const header = (props: PageEvent) => (

    - {props.model.kindString} + {props.model.kindString}{" "} {props.model.name} {hasTypeParameters(props.model) && ( <> - {" <"} + {"<"} {props.model.typeParameters.map((item, i) => ( <> - {" "} {i > 0 && ",\xA0"} {item.name} - ))}{" "} + ))} {">"} )}{" "} diff --git a/src/lib/output/themes/default/partials/hierarchy.tsx b/src/lib/output/themes/default/partials/hierarchy.tsx index fd95b9c5f..37c56b735 100644 --- a/src/lib/output/themes/default/partials/hierarchy.tsx +++ b/src/lib/output/themes/default/partials/hierarchy.tsx @@ -1,24 +1,19 @@ -import { With, __partials__ } from "../../lib"; +import { __partials__ } from "../../lib"; import * as React from "react"; import { DeclarationHierarchy } from "../../../../models"; export const hierarchy = (props: DeclarationHierarchy) => (
      - {props.types.map((item, i, l) => ( -
    • - {props.isTarget ? ( - {item.toString()} - ) : ( - __partials__.type(item) - )} - {i === l.length - 1 && ( - <> - {" "} - {With(props.next, (props) => ( - <>{__partials__.hierarchy(props)} - ))} - - )}{" "} -
    • - ))} + {props.types.map((item, i, l) => +
    • + {props.isTarget ? + {item.toString()} + : + __partials__.type(item) + } + {i === l.length - 1 && !!props.next && + __partials__.hierarchy(props.next) + } +
    • + )}
    ); diff --git a/src/lib/output/themes/default/partials/index.tsx b/src/lib/output/themes/default/partials/index.tsx index 0d229458e..8daa6f5d0 100644 --- a/src/lib/output/themes/default/partials/index.tsx +++ b/src/lib/output/themes/default/partials/index.tsx @@ -2,7 +2,7 @@ import { relativeURL, wbr, __partials__ } from "../../lib"; import * as React from "react"; import { ContainerReflection } from "../../../../models"; export const index = (props: ContainerReflection) => - props.categories ? ( + props.categories && props.categories.length > 0 ? ( <> {" "}
    diff --git a/src/lib/output/themes/default/partials/member.declaration.tsx b/src/lib/output/themes/default/partials/member.declaration.tsx index c30d68266..acf536783 100644 --- a/src/lib/output/themes/default/partials/member.declaration.tsx +++ b/src/lib/output/themes/default/partials/member.declaration.tsx @@ -18,8 +18,9 @@ export const memberDeclaration = (props: DeclarationReflection) => ( ))}{" "} {">"} - )}{" "} + )} {!!props.flags.isOptional && "?"}: + {" "} {With(props.type, (props) => ( <>{__partials__.type(props)} ))} diff --git a/src/lib/output/themes/default/partials/member.getterSetter.tsx b/src/lib/output/themes/default/partials/member.getterSetter.tsx index edd0e5adc..2f315176e 100644 --- a/src/lib/output/themes/default/partials/member.getterSetter.tsx +++ b/src/lib/output/themes/default/partials/member.getterSetter.tsx @@ -7,7 +7,7 @@ export const memberGetterSetter = (props: DeclarationReflection) => ( {!!props.getSignature && (
  • - get + get{" "} {props.name} {__partials__["memberSignatureTitle"](props.getSignature, { hideName: true })} @@ -16,7 +16,7 @@ export const memberGetterSetter = (props: DeclarationReflection) => ( {!!props.setSignature && (
  • - set + set{" "} {props.name} {__partials__["memberSignatureTitle"](props.setSignature, { hideName: true })} diff --git a/src/lib/output/themes/default/partials/member.reference.tsx b/src/lib/output/themes/default/partials/member.reference.tsx index bbb01f6b3..99a0acb1a 100644 --- a/src/lib/output/themes/default/partials/member.reference.tsx +++ b/src/lib/output/themes/default/partials/member.reference.tsx @@ -2,7 +2,7 @@ import { With, relativeURL, __partials__, IfCond, IfNotCond } from "../../lib"; import * as React from "react"; import { ReferenceReflection } from "../../../../models"; export const memberReference = (props: ReferenceReflection) => - props.tryGetTargetReflectionDeep ? ( + props.tryGetTargetReflectionDeep() ? ( <> {" "} {With(props.tryGetTargetReflectionDeep(), (targetReflection) => ( diff --git a/src/lib/output/themes/default/partials/member.signature.body.tsx b/src/lib/output/themes/default/partials/member.signature.body.tsx index 6fa719812..3d7825a4d 100644 --- a/src/lib/output/themes/default/partials/member.signature.body.tsx +++ b/src/lib/output/themes/default/partials/member.signature.body.tsx @@ -13,7 +13,7 @@ export const memberSignatureBody = (props: SignatureReflection, {hideSources = f {__partials__.typeParameters(props)} )} - {!!props.parameters && ( + {props.parameters && props.parameters.length > 0 && ( <> {" "}

    Parameters

    @@ -31,7 +31,7 @@ export const memberSignatureBody = (props: SignatureReflection, {hideSources = f ))}{" "} {!!item.flags.isRest && ...} - {item.name}: + {item.name}{": "} {With(item.type, (props) => ( <>{__partials__.type(props)} ))} @@ -65,7 +65,7 @@ export const memberSignatureBody = (props: SignatureReflection, {hideSources = f <> {" "}

    - Returns{" "} + {"Returns "} {With(props.type, (props) => ( <>{__partials__.type(props)} diff --git a/src/lib/output/themes/default/partials/member.signature.title.tsx b/src/lib/output/themes/default/partials/member.signature.title.tsx index ab7c9a08c..7bb85e3d1 100644 --- a/src/lib/output/themes/default/partials/member.signature.title.tsx +++ b/src/lib/output/themes/default/partials/member.signature.title.tsx @@ -7,42 +7,39 @@ export const memberSignatureTitle = (props: SignatureReflection, {hideName = fal <> {wbr(props.name)} ) : ( <> - {" "} {!!props.flags.isAbstract && ( <> - {" "} + {" test2"} abstract - )}{" "} + )}{" test3"} new )} {!!props.typeParameters && ( <> - {" "} {"<"} {props.typeParameters.map((item, i) => ( <> - {" "} - {i && ",\xA0"} + {i > 0 && ", "} {item.name} - ))}{" "} + ))} {">"} )} ( {props.parameters?.map((item, i) => ( <> - {" "} - {!!i && ",\xA0"} + {!!i && ", "} {!!item.flags.isRest && ...} {item.name} {!!item.flags.isOptional && "?"} - {!!item.defaultValue && "?"}: + {!!item.defaultValue && "?"} + {": "} {With(item.type, (props) => ( <>{__partials__.type(props)} @@ -53,17 +50,11 @@ export const memberSignatureTitle = (props: SignatureReflection, {hideName = fal {!!props.type && ( <> {arrowStyle ? ( - <> - {" "} ={">"} - ) : ( - <> - {" "} : - - )}{" "} - {!!props.type && __partials__.type(props.type)} + )} + {!!props.type && __partials__.type(props.type)} )} diff --git a/src/lib/output/themes/default/partials/member.sources.tsx b/src/lib/output/themes/default/partials/member.sources.tsx index 3b47b1d7d..855bbabf4 100644 --- a/src/lib/output/themes/default/partials/member.sources.tsx +++ b/src/lib/output/themes/default/partials/member.sources.tsx @@ -9,7 +9,7 @@ export const memberSources = (props: SignatureReflection | DeclarationReflection <> {" "}

    - Implementation of{" "} + {"Implementation of "} {__partials__.typeAndParent(props.implementationOf)}

    diff --git a/src/lib/output/themes/default/partials/members.group.tsx b/src/lib/output/themes/default/partials/members.group.tsx index 3dbe507ae..9195d03ac 100644 --- a/src/lib/output/themes/default/partials/members.group.tsx +++ b/src/lib/output/themes/default/partials/members.group.tsx @@ -2,15 +2,15 @@ import { assertIsDeclarationReflection, __partials__ } from "../../lib"; import * as React from "react"; import { ReflectionGroup } from "../../../../models"; -export const membersGroup = (props: ReflectionGroup) => - props.categories ? ( - props.categories.map((item) => ( +export const membersGroup = (group: ReflectionGroup) => + group.categories ? ( + group.categories.map((item) => ( <> {" "} -
    +

    {!!item.title && <>{item.title} } - {props.title} + {group.title}

    {item.children.map((item) => ( <>{!item.hasOwnDocument && <> {__partials__.member(assertIsDeclarationReflection(item))}} @@ -21,9 +21,9 @@ export const membersGroup = (props: ReflectionGroup) => ) : ( <> {" "} -
    -

    {props.title}

    - {props.children.map((item) => ( +
    +

    {group.title}

    + {group.children.map((item) => ( <>{!item.hasOwnDocument && <> {__partials__.member(assertIsDeclarationReflection(item))}} ))}{" "}
    diff --git a/src/lib/output/themes/default/partials/members.tsx b/src/lib/output/themes/default/partials/members.tsx index 1376009ac..292195d7c 100644 --- a/src/lib/output/themes/default/partials/members.tsx +++ b/src/lib/output/themes/default/partials/members.tsx @@ -2,10 +2,10 @@ import { assertIsDeclarationReflection, __partials__ } from "../../lib"; import * as React from "react"; import { ContainerReflection } from "../../../../models"; export const members = (props: ContainerReflection) => - props.categories + props.categories && props.categories.length > 0 ? props.categories.map((item) => ( <> - {!item.allChildrenHaveOwnDocument && ( + {!item.allChildrenHaveOwnDocument() && ( <> {" "}
    @@ -19,5 +19,5 @@ export const members = (props: ContainerReflection) => )) : props.groups?.map((item) => ( - <>{!item.allChildrenHaveOwnDocument && <> {__partials__.membersGroup(item)}} + <>{!item.allChildrenHaveOwnDocument() && <> {__partials__.membersGroup(item)}} )); diff --git a/src/lib/output/themes/default/partials/parameter.tsx b/src/lib/output/themes/default/partials/parameter.tsx index ab3e8eeff..32d28064f 100644 --- a/src/lib/output/themes/default/partials/parameter.tsx +++ b/src/lib/output/themes/default/partials/parameter.tsx @@ -105,7 +105,7 @@ export const parameter = (props: DeclarationReflection) => ( {!!item.flags.isRest && ...} {wbr(item.name)} - {!!item.flags.isOptional && "?"}: + {!!item.flags.isOptional && "?"}{": "} {__partials__.type(item.type)} diff --git a/src/lib/output/themes/default/partials/toc.root.tsx b/src/lib/output/themes/default/partials/toc.root.tsx index ff4c68348..4db1729e1 100644 --- a/src/lib/output/themes/default/partials/toc.root.tsx +++ b/src/lib/output/themes/default/partials/toc.root.tsx @@ -2,29 +2,19 @@ import { relativeURL, wbr, __partials__, classNames } from "../../lib"; import * as React from "react"; import { NavigationItem } from "../../../../.."; export const tocRoot = (item: NavigationItem) => ( - <> - {/* {{#if isInPath*/} - {/* */} - {/*
      */} - {/* {{/if*/} -
    • - - {wbr(item.title)} - - {!!item.children && ( - <> - {" "} -
        - {item.children.map((item) => ( - <> {__partials__.toc(item)} - ))}{" "} -
      - - )} -
    • - {/* {{#if isInPath*/} - {/*
    */} - {/*

  • @@ -74,7 +74,7 @@

    Class export=

    Hierarchy

      -
    • export=
    • +
    • export=
    @@ -108,7 +108,7 @@

    Constructors

    constructor

    • @@ -119,7 +119,7 @@

      constructor

      This is the constructor of the exported class.

      -

      Returns export=

      +

      Returns export=

    @@ -187,7 +187,7 @@

    Returns string
    • - export= + export=
      • constructor
      • exportedProperty
      • diff --git a/src/test/renderer/specs/index.html b/src/test/renderer/specs/index.html index 73d1795fe..b9e6a8667 100644 --- a/src/test/renderer/specs/index.html +++ b/src/test/renderer/specs/index.html @@ -49,9 +49,7 @@
        -
        -

        typedoc

        -
        +

        typedoc

    @@ -115,57 +113,24 @@

    Repeated Heading

    diff --git a/src/test/renderer/specs/modules.html b/src/test/renderer/specs/modules.html index 4228ca937..999e14873 100644 --- a/src/test/renderer/specs/modules.html +++ b/src/test/renderer/specs/modules.html @@ -49,9 +49,7 @@
    -
    -

    typedoc

    -
    +

    typedoc

    @@ -87,57 +85,24 @@

    Modules

    diff --git a/src/test/renderer/specs/modules/access.PrivateModule.html b/src/test/renderer/specs/modules/access.PrivateModule.html index c28f3b9fa..4f30f4e80 100644 --- a/src/test/renderer/specs/modules/access.PrivateModule.html +++ b/src/test/renderer/specs/modules/access.PrivateModule.html @@ -52,12 +52,8 @@

    Namespace PrivateModule

    @@ -107,9 +103,7 @@

    Returns void

    {With(props.indexSignature, (props) => ( - <>{__partials__.comment(props)} + <>{partials.comment(props)} ))} {isReflectionType(props.indexSignature.type) && !!props.indexSignature.type.declaration && ( <> {With(props.indexSignature.type.declaration, (props) => ( - <>{__partials__.parameter(props)} + <>{partials.parameter(props)} ))} )} @@ -86,7 +87,7 @@ export const parameter = (props: DeclarationReflection) => ( - {__partials__.memberSignatures(item)} + {partials.memberSignatures(item)} ) : item.type ? ( @@ -106,16 +107,16 @@ export const parameter = (props: DeclarationReflection) => ( {!!item.flags.isOptional && "?"}{": "} - {__partials__.type(item.type)} + {partials.type(item.type)} - {__partials__.comment(item)} - {!!item.children && <> {__partials__.parameter(item)}} + {partials.comment(item)} + {!!item.children && <> {partials.parameter(item)}} {isReflectionType(item.type) && !!item.type.declaration && ( <> {With(item.type.declaration, (props) => ( - <>{__partials__.parameter(props)} + <>{partials.parameter(props)} ))} )} @@ -142,12 +143,12 @@ export const parameter = (props: DeclarationReflection) => ( {wbr(item.name)} (): {With(props.type, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} - {__partials__.comment(props)} + {partials.comment(props)} ))} @@ -176,7 +177,7 @@ export const parameter = (props: DeclarationReflection) => ( <> {With(item.type, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ) : ( @@ -189,12 +190,12 @@ export const parameter = (props: DeclarationReflection) => ( ))} ): {With(props.type, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} - {__partials__.comment(props)} + {partials.comment(props)} ))} diff --git a/src/lib/output/themes/default/partials/toc.root.tsx b/src/lib/output/themes/default/partials/toc.root.tsx index 0205193b7..9ab3643cd 100644 --- a/src/lib/output/themes/default/partials/toc.root.tsx +++ b/src/lib/output/themes/default/partials/toc.root.tsx @@ -1,7 +1,8 @@ -import { relativeURL, wbr, __partials__, classNames } from "../../lib"; +import { wbr, classNames } from "../../lib"; +import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; import * as React from "react"; import { NavigationItem } from "../../../../.."; -export const tocRoot = (item: NavigationItem) => ( +export const tocRoot = ({relativeURL, partials }: DefaultThemeRenderContext) => (item: NavigationItem) => (
  • {wbr(item.title)} @@ -11,7 +12,7 @@ export const tocRoot = (item: NavigationItem) => (
      {item.children.map((item) => ( - <> {__partials__.toc(item)} + <> {partials.toc(item)} ))}
    diff --git a/src/lib/output/themes/default/partials/toc.tsx b/src/lib/output/themes/default/partials/toc.tsx index 691d1e2b0..fc57436aa 100644 --- a/src/lib/output/themes/default/partials/toc.tsx +++ b/src/lib/output/themes/default/partials/toc.tsx @@ -1,8 +1,9 @@ -import { classNames, relativeURL, wbr, __partials__ } from "../../lib"; +import { classNames, wbr } from "../../lib"; +import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; import * as React from "react"; import { NavigationItem } from "../../../models/NavigationItem"; -export const toc = (props: NavigationItem) => ( +export const toc = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: NavigationItem) => ( <>
  • @@ -13,7 +14,7 @@ export const toc = (props: NavigationItem) => (
      {props.children.map((item) => ( - <> {__partials__.toc(item)} + <> {partials.toc(item)} ))}
    diff --git a/src/lib/output/themes/default/partials/type-inline-partials/array.tsx b/src/lib/output/themes/default/partials/type-inline-partials/array.tsx index 9327090b6..b8bc6c6f0 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/array.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/array.tsx @@ -1,11 +1,12 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { ArrayType } from "../../../../../models"; -export const array = (props: ArrayType) => ( +export const array = ({partials }: DefaultThemeRenderContext) => (props: ArrayType) => ( <> {With(props.elementType, (props) => ( <> - {__partials__.type(props, { needsParens: true })} + {partials.type(props, { needsParens: true })} [] ))} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx b/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx index 31c2d53d6..33967185c 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx @@ -1,8 +1,9 @@ import { TypeInlinePartialsOptions } from "./options"; -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { ConditionalType } from "../../../../../models"; -export const conditional = (props: ConditionalType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( +export const conditional = ({partials }: DefaultThemeRenderContext) => (props: ConditionalType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( <> {!!needsParens && ( <> @@ -11,19 +12,19 @@ export const conditional = (props: ConditionalType, { needsParens = false }: Typ )} {With(props.checkType, (props) => ( - <>{__partials__.type(props, { needsParens: true })} + <>{partials.type(props, { needsParens: true })} ))} extends {With(props.extendsType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ? {With(props.trueType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} : {With(props.falseType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} {!!needsParens && ( <> diff --git a/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx b/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx index 2ef147add..54d99bf7a 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx @@ -1,14 +1,15 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { IndexedAccessType } from "../../../../../models"; -export const indexedAccess = (props: IndexedAccessType) => ( +export const indexedAccess = ({partials }: DefaultThemeRenderContext) => (props: IndexedAccessType) => ( <> {With(props.objectType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} [ {With(props.indexType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ] diff --git a/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx b/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx index 06a6e70e8..b4f750a34 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx @@ -1,7 +1,7 @@ -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { InferredType } from "../../../../../models"; -export const inferred = (props: InferredType) => ( +export const inferred = (_ctx: DefaultThemeRenderContext) => (props: InferredType) => ( <> infer {props.name} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx b/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx index d3a424b2c..0ac773a07 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx @@ -1,8 +1,8 @@ -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { IntersectionType } from "../../../../../models"; import { TypeInlinePartialsOptions } from "./options"; -export const intersection = (props: IntersectionType, {needsParens = false}: TypeInlinePartialsOptions = {}) => ( +export const intersection = ({partials }: DefaultThemeRenderContext) => (props: IntersectionType, {needsParens = false}: TypeInlinePartialsOptions = {}) => ( <> {!!needsParens && ( <> @@ -18,7 +18,7 @@ export const intersection = (props: IntersectionType, {needsParens = false}: Typ & )} - {__partials__.type(item, { needsParens: true })} + {partials.type(item, { needsParens: true })} ))} {!!needsParens && ( diff --git a/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx b/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx index b92f873b6..915b63894 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx @@ -1,7 +1,7 @@ -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { IntrinsicType } from "../../../../../models"; -export const intrinsic = (props: IntrinsicType) => ( +export const intrinsic = (_ctx: DefaultThemeRenderContext) => (props: IntrinsicType) => ( <> {props.name} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx b/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx index 4f95dad6b..6086aba1a 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx @@ -1,7 +1,8 @@ -import { __partials__, stringify } from "../../../lib"; +import { stringify } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { LiteralType } from "../../../../../models"; -export const literal = (props: LiteralType) => ( +export const literal = (_ctx: DefaultThemeRenderContext) => (props: LiteralType) => ( <> {stringify(props.value)} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx b/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx index 36369c825..087f5cbb3 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx @@ -1,7 +1,8 @@ -import { With, __partials__, IfCond, IfNotCond } from "../../../lib"; +import { With, IfCond, IfNotCond } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { MappedType } from "../../../../../models"; -export const mapped = (props: MappedType) => ( +export const mapped = ({partials }: DefaultThemeRenderContext) => (props: MappedType) => ( <> {"{"} @@ -18,13 +19,13 @@ export const mapped = (props: MappedType) => ( in {With(props.parameterType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} {With(props.nameType, (props) => ( <> as - {__partials__.type(props)} + {partials.type(props)} ))} @@ -42,7 +43,7 @@ export const mapped = (props: MappedType) => ( {With(props.templateType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} {"}"} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx b/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx index 6e8b0ebb2..9a9c9fa0c 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx @@ -1,7 +1,8 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { NamedTupleMember } from "../../../../../models"; -export const namedTupleMember = (props: NamedTupleMember) => ( +export const namedTupleMember = ({partials }: DefaultThemeRenderContext) => (props: NamedTupleMember) => ( <> {props.name} {props.isOptional ? ( @@ -16,7 +17,7 @@ export const namedTupleMember = (props: NamedTupleMember) => ( )} {With(props.element, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx b/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx index 1999404db..51fddfa4f 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx @@ -1,10 +1,11 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { OptionalType } from "../../../../../models"; -export const optional = (props: OptionalType) => ( +export const optional = ({partials }: DefaultThemeRenderContext) => (props: OptionalType) => ( <> {With(props.elementType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ? diff --git a/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx b/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx index 59a1331d8..9f43c8503 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx @@ -1,7 +1,8 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { PredicateType } from "../../../../../models"; -export const predicate = (props: PredicateType) => ( +export const predicate = ({partials }: DefaultThemeRenderContext) => (props: PredicateType) => ( <> {!!props.asserts && ( <> @@ -15,7 +16,7 @@ export const predicate = (props: PredicateType) => ( is {With(props.targetType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} )} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/query.tsx b/src/lib/output/themes/default/partials/type-inline-partials/query.tsx index a0aef5554..f64c44adb 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/query.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/query.tsx @@ -1,11 +1,12 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { QueryType } from "../../../../../models"; -export const query = (props: QueryType) => ( +export const query = ({partials }: DefaultThemeRenderContext) => (props: QueryType) => ( <> typeof {With(props.queryType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx b/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx index 07f1f5248..5492e040c 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx @@ -1,8 +1,8 @@ -import { __partials__, relativeURL } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { ReferenceType } from "../../../../../models"; -export const reference = (props: ReferenceType) => { +export const reference = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: ReferenceType) => { const reflection = props.getReflection(); return ( <> @@ -33,7 +33,7 @@ export const reference = (props: ReferenceType) => { , )} - {__partials__.type(item)} + {partials.type(item)} ))} {">"} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx b/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx index 1a8854f32..8daff70cf 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx @@ -1,8 +1,9 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { ReflectionType } from "../../../../../models"; import { TypeInlinePartialsOptions } from "./options"; -export const reflection = (props: ReflectionType, {needsParens = false}: TypeInlinePartialsOptions = {}) => ( +export const reflection = ({partials }: DefaultThemeRenderContext) => (props: ReflectionType, {needsParens = false}: TypeInlinePartialsOptions = {}) => ( <> {props.declaration.children ? ( <> @@ -27,7 +28,7 @@ export const reflection = (props: ReflectionType, {needsParens = false}: TypeInl <> {With(item.getSignature.type, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ) : ( @@ -47,7 +48,7 @@ export const reflection = (props: ReflectionType, {needsParens = false}: TypeInl <> {With(item.getSignature.type, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ) : ( @@ -74,7 +75,7 @@ export const reflection = (props: ReflectionType, {needsParens = false}: TypeInl <> {With(item.type, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ) : ( @@ -101,7 +102,7 @@ export const reflection = (props: ReflectionType, {needsParens = false}: TypeInl )} {item.type ? ( <> - {__partials__.type(item.type)} + {partials.type(item.type)} ) : ( <> @@ -124,7 +125,7 @@ export const reflection = (props: ReflectionType, {needsParens = false}: TypeInl {"{"} {props.declaration.signatures.map((item, i, l) => ( <> - {__partials__["memberSignatureTitle"](item, { hideName: true })} + {partials["memberSignatureTitle"](item, { hideName: true })} {i < l.length - 1 && ( <> ; @@ -142,7 +143,7 @@ export const reflection = (props: ReflectionType, {needsParens = false}: TypeInl )} {With(props.declaration.signatures[0], (props) => ( - <>{__partials__["memberSignatureTitle"](props, { hideName: true, arrowStyle: true })} + <>{partials["memberSignatureTitle"](props, { hideName: true, arrowStyle: true })} ))} {!!needsParens && ( <> diff --git a/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx b/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx index 328ebea77..28b3e62fc 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx @@ -1,11 +1,12 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { RestType } from "../../../../../models"; -export const rest = (props: RestType) => ( +export const rest = ({partials }: DefaultThemeRenderContext) => (props: RestType) => ( <> ... {With(props.elementType, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx b/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx index c3381354a..e62c4c2f2 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx @@ -1,15 +1,15 @@ -import {__partials__} from '../../../lib'; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from 'react'; import { TemplateLiteralType } from '../../../../../models'; -export const templateLiteral = (props: TemplateLiteralType) => <> +export const templateLiteral = ({partials }: DefaultThemeRenderContext) => (props: TemplateLiteralType) => <> ` { !!props.head && {props.head} } {props.tail.map((item) => <> {"${"} - { !!item[0] && __partials__.type(item[0]) } + { !!item[0] && partials.type(item[0]) } {"}"} { !!item[1] && {item[1]} } )} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx b/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx index 81a5de4ef..728b21bee 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx @@ -1,7 +1,7 @@ -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { TupleType } from "../../../../../models"; -export const tuple = (props: TupleType) => ( +export const tuple = ({partials }: DefaultThemeRenderContext) => (props: TupleType) => ( <> [ {props.elements.map((item, i) => ( @@ -11,7 +11,7 @@ export const tuple = (props: TupleType) => ( , )} - {__partials__.type(item)} + {partials.type(item)} ))} ] diff --git a/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx b/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx index 6f112672e..35cb53a32 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx @@ -1,11 +1,12 @@ -import { With, __partials__ } from "../../../lib"; +import { With } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { TypeOperatorType } from "../../../../../models"; -export const typeOperator = (props: TypeOperatorType) => ( +export const typeOperator = ({partials }: DefaultThemeRenderContext) => (props: TypeOperatorType) => ( <> {props.operator} {With(props.target, (props) => ( - <>{__partials__.type(props)} + <>{partials.type(props)} ))} ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx b/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx index e8e789d1c..b28cfd141 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx @@ -1,7 +1,7 @@ -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { TypeParameterType } from "../../../../../models"; -export const typeParameter = (props: TypeParameterType) => ( +export const typeParameter = (_ctx: DefaultThemeRenderContext) => (props: TypeParameterType) => ( <> {props.name} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/union.tsx b/src/lib/output/themes/default/partials/type-inline-partials/union.tsx index 4d7c33b77..9c402dcdf 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/union.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/union.tsx @@ -1,8 +1,8 @@ import { TypeInlinePartialsOptions } from "./options"; -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { UnionType } from "../../../../../models"; -export const union = (props: UnionType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( +export const union = ({partials }: DefaultThemeRenderContext) => (props: UnionType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( <> {!!needsParens && ( <> @@ -18,7 +18,7 @@ export const union = (props: UnionType, { needsParens = false }: TypeInlineParti | )} - {__partials__.type(item, { needsParens: true })} + {partials.type(item, { needsParens: true })} ))} {!!needsParens && ( diff --git a/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx b/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx index 87c20943d..cd4f824c1 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx @@ -1,4 +1,4 @@ -import { __partials__ } from "../../../lib"; +import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; import * as React from "react"; import { UnknownType } from "../../../../../models"; -export const unknown = (_props: UnknownType) => <>; +export const unknown = (_ctx: DefaultThemeRenderContext) => (_props: UnknownType) => <>; diff --git a/src/lib/output/themes/default/partials/type.tsx b/src/lib/output/themes/default/partials/type.tsx index 230537eeb..9535d1a68 100644 --- a/src/lib/output/themes/default/partials/type.tsx +++ b/src/lib/output/themes/default/partials/type.tsx @@ -1,11 +1,9 @@ -import { - __partials__, -} from "../../lib"; +import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; import * as React from "react"; import { TypeInlinePartialsOptions } from "./type-inline-partials/options"; import { Type } from "../../../../models"; -export const type = (props: Type, options?: TypeInlinePartialsOptions): React.ReactElement => { +export const type = ({partials }: DefaultThemeRenderContext) => (props: Type, options?: TypeInlinePartialsOptions): React.ReactElement => { /* Each type gets its own inline helper to determine how it is rendered. */ /* The name of the helper is the value of the 'type' property on the type.*/ /* @@ -15,8 +13,8 @@ export const type = (props: Type, options?: TypeInlinePartialsOptions): React.Re () => 1 | 2 !== (() => 1) | 2 */ if(props) { - const typeIdent = props.type as keyof typeof __partials__['typePartials']; - const renderFn = __partials__.typePartials[typeIdent] as TypeRenderTemplate; + const typeIdent = props.type as keyof typeof partials['typePartials']; + const renderFn = partials.typePartials[typeIdent] as TypeRenderTemplate; return renderFn(props, options); } else { return <> diff --git a/src/lib/output/themes/default/partials/typeAndParent.tsx b/src/lib/output/themes/default/partials/typeAndParent.tsx index bbc6ff3f4..7e91ec1f9 100644 --- a/src/lib/output/themes/default/partials/typeAndParent.tsx +++ b/src/lib/output/themes/default/partials/typeAndParent.tsx @@ -1,8 +1,9 @@ -import { With, relativeURL, __partials__, Compact, IfCond, IfNotCond, isSignature, hasElementType, isReferenceType } from "../../lib"; +import { With, Compact, IfCond, IfNotCond, isSignature, hasElementType, isReferenceType } from "../../lib"; +import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; import * as React from "react"; import { Type } from "../../../../models"; -export const typeAndParent = (props: Type) => ( +export const typeAndParent = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: Type) => ( <> {props ? ( @@ -10,7 +11,7 @@ export const typeAndParent = (props: Type) => ( <> {"bar "} {With(props.elementType, (props) => ( - <>{__partials__.typeAndParent(props)} + <>{partials.typeAndParent(props)} ))} [] diff --git a/src/lib/output/themes/default/partials/typeParameters.tsx b/src/lib/output/themes/default/partials/typeParameters.tsx index f5bdb5c05..39e82df67 100644 --- a/src/lib/output/themes/default/partials/typeParameters.tsx +++ b/src/lib/output/themes/default/partials/typeParameters.tsx @@ -1,8 +1,9 @@ -import { With, __partials__, Compact } from "../../lib"; +import { With, Compact } from "../../lib"; +import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; import * as React from "react"; import { TypeParameterContainer } from "../../../../models"; -export const typeParameters = (props: TypeParameterContainer) => ( +export const typeParameters = ({partials }: DefaultThemeRenderContext) => (props: TypeParameterContainer) => ( <>

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Constructor
    • Interface
    • Interface with type parameter
    • Protected property
    • Protected method
    • Private property
    • Private method
    • Enumeration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.BaseClass.html b/src/test/renderer/specs/classes/classes.BaseClass.html index 5ce1ed6d0..c5d8470a3 100644 --- a/src/test/renderer/specs/classes/classes.BaseClass.html +++ b/src/test/renderer/specs/classes/classes.BaseClass.html @@ -1,538 +1,44 @@ - - - - - - BaseClass | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class BaseClass

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +BaseClass | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    This is a simple base class.

    -
    -

    [[include:class-example.md]]

    -

    Links:

    - -
    -
    -
    -

    Hierarchy

    -

    [[include:class-example.md]]

    +

    Links:

    + -
  • - - -
    -

    Implements

    - -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - -
      -
    • - -

      Parameters

      -
        -
      • -
        name: string
        -
      • -
      -

      Returns BaseClass

      -
    • -
    • - -

      Parameters

      - -

      Returns BaseClass

      -
    • -
    -
    -
    -
    -

    Properties

    -
    - -

    Private internalClass

    -
    internalClass: InternalClass<keyof BaseClass>
    - -
    -
    +

    Hierarchy

    Implements

    Index

    Constructors

    constructor

    Properties

    Private internalClass

    internalClass: InternalClass<keyof BaseClass>

    This is an instance member of an internal class.

    -
    -
    -
    -
    - -

    Protected kind

    -
    kind: number
    - -
    -
    +

    Protected kind

    kind: number

    This is a simple protected member.

    -
    -
    -
    -
    - -

    name

    -
    name: string
    - -
    -
    +

    name

    name: string

    This is a simple public member.

    -
    -
    -
    -
    - -

    Static instance

    -
    instance: BaseClass
    - -
    -
    +

    Static instance

    instance: BaseClass

    This is a static member.

    -
    -

    Static members should not be inherited.

    -
    -
    -
    - -

    Static instances

    -
    instances: BaseClass[]
    - -
    -
    -
    -

    Methods

    -
    - -

    Abstract abstractMethod

    -
      -
    • abstractMethod(): void
    • -
    -
      -
    • - -

      Returns void

      -
    • -
    -
    -
    - -

    arrowFunction

    -
      -
    • arrowFunction(param2: string, param1: number): void
    • -
    -
      -
    • - -
      -
      +

      Static members should not be inherited.

      +

    Static instances

    instances: BaseClass[]

    Methods

    Abstract abstractMethod

    • abstractMethod(): void
    • Returns void

    arrowFunction

    • arrowFunction(param2: string, param1: number): void
    • This is a simple fat arrow function.

      -
      -
      -
      see
      -

      https://github.com/sebastian-lenz/typedoc/issues/37

      -
      -
      -
      -

      Parameters

      -
        -
      • -
        param2: string
        -
        -

        The second parameter needed by this function.

        -
        -
      • -
      • -
        param1: number
        -
        -

        The first parameter needed by this function.

        -
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    Private checkName

    -
      -
    • checkName(): boolean
    • -
    -

    Private checkName

    • checkName(): boolean
    • This is a private function.

      -
      -
      -

      Returns boolean

      -
    • -
    -
    -
    - -

    getName

    -
      -
    • getName(): string
    • -
    -

    getName

    • getName(): string
    • This is a simple member function.

      -
      -

      It should be inherited by all subclasses. This class has a static - member with the same name, both should be documented.

      -
      -

      Returns string

      -

      Return the name.

      -
    • -
    -
    -
    - -

    setName

    -
      -
    • setName(name: string): void
    • -
    -
      -
    • - -
      -
      +

      It should be inherited by all subclasses. This class has a static + member with the same name, both should be documented.

      +

      Returns string

      Return the name.

      +

    setName

    • setName(name: string): void
    • This is a simple member function.

      -
      -

      It should be inherited by all subclasses.

      -
      -

      Parameters

      -
        -
      • -
        name: string
        -
        -

        The new name.

        -
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    Static caTest

    -
      -
    • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string
    • -
    - -
    -
    - -

    Static getInstance

    - -
      -
    • - -
      -
      +

      It should be inherited by all subclasses.

      +

      Parameters

      • name: string

        The new name.

        +

      Returns void

    Static caTest

    • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

    Static getInstance

    • This is a static function.

      -
      -

      Static functions should not be inherited.

      -
      -

      Returns BaseClass

      -

      An instance of BaseClass.

      -
    • -
    -
    -
    - -

    Static getName

    -
      -
    • getName(): string
    • -
    -
      -
    • - -
      -
      +

      Static functions should not be inherited.

      +

      Returns BaseClass

      An instance of BaseClass.

      +

    Static getName

    • getName(): string
    • This is a simple static member function.

      -
      -

      Static functions should not be inherited. This class has a - member with the same name, both should be documented.

      -
      -

      Returns string

      -

      Return the name.

      -
    • -
    -
    -
    - - - - -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
      -
    • Enumeration
    • -
    -
      -
    • Protected property
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Static functions should not be inherited. This class has a + member with the same name, both should be documented.

    +

    Returns string

    Return the name.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Constructor
    • Property
    • Method
    • Interface
    • Interface with type parameter
    • Private property
    • Private method
    • Static property
    • Static method
    • Enumeration
    • Protected property

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.GenericClass.html b/src/test/renderer/specs/classes/classes.GenericClass.html index 0b0149747..08693420a 100644 --- a/src/test/renderer/specs/classes/classes.GenericClass.html +++ b/src/test/renderer/specs/classes/classes.GenericClass.html @@ -1,356 +1,18 @@ - - - - - - GenericClass | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class GenericClass<T>

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +GenericClass | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Class GenericClass<T>

    This is a generic class.

    -
    -
    -
    -
    -

    Type parameters

    -

    Type parameters

    -
    -
    -

    Hierarchy

    - -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    -
      -
    • new GenericClass<T>(p1: any, p2: T, p3: number, p4: number, p5: string): GenericClass<T>
    • -
    -
      -
    • - -
      -
      +

    Hierarchy

    Index

    Constructors

    Properties

    Methods

    Constructors

    constructor

    • new GenericClass<T>(p1: any, p2: T, p3: number, p4: number, p5: string): GenericClass<T>
    • Constructor short text.

      -
      -
      -

      Type parameters

      - -

      Parameters

      -
        -
      • -
        p1: any
        -
        -
        +

        Type parameters

        Parameters

        • p1: any

          Constructor param

          -
          -
          -
        • -
        • -
          p2: T
          -
          -
          +
        • p2: T

          Private string property

          -
          -
          -
        • -
        • -
          p3: number
          -
          -
          +
        • p3: number

          Public number property

          -
          -
          -
        • -
        • -
          p4: number
          -
          -
          +
        • p4: number

          Public implicit any property

          -
          -
          -
        • -
        • -
          p5: string
          -
          -
          +
        • p5: string

          Readonly property

          -
          -
          -
        • -
        -

        Returns GenericClass<T>

        -
      • -
      -
    -
    -
    -

    Properties

    -
    - -

    Protected p2

    -
    p2: T
    - -
    -
    - -

    p3

    -
    p3: number
    - -
    -
    - -

    Readonly p5

    -
    p5: string
    - -
    -
    - -

    value

    -
    value: T
    - -
    -
    -
    -

    Methods

    -
    - -

    getValue

    -
      -
    • getValue(): T
    • -
    -
      -
    • - -

      Returns T

      -
    • -
    -
    -
    - -

    setValue

    -
      -
    • setValue(value: T): void
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        value: T
        -
        -

        getValue is the counterpart.

        -
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Enumeration
    • -
    -
      -
    • Protected property
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Returns GenericClass<T>

    Properties

    Protected p2

    p2: T

    p3

    p3: number

    Readonly p5

    p5: string

    value

    value: T

    Methods

    getValue

    • getValue(): T
    • Returns T

    setValue

    • setValue(value: T): void
    • Parameters

      Returns void

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Property
    • Method
    • Interface
    • Interface with type parameter
    • Enumeration
    • Protected property

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.NonGenericClass.html b/src/test/renderer/specs/classes/classes.NonGenericClass.html index 1c66d61cc..a76a743f5 100644 --- a/src/test/renderer/specs/classes/classes.NonGenericClass.html +++ b/src/test/renderer/specs/classes/classes.NonGenericClass.html @@ -1,334 +1,11 @@ - - - - - - NonGenericClass | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class NonGenericClass

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +NonGenericClass | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Class NonGenericClass

    This a non generic class derived from a generic class.

    -
    -
    -
    -
    -

    Hierarchy

    - -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - -

    Hierarchy

    Index

    Constructors

    Properties

    Methods

    Constructors

    constructor

    • Constructor short text.

      -
      -
      -

      Parameters

      -
        -
      • -
        p1: any
        -
        -

        Constructor param

        -
        -
      • -
      • -
        p2: SubClassB
        -
        -

        Private string property

        -
        -
      • -
      • -
        p3: number
        -
        -

        Public number property

        -
        -
      • -
      • -
        p4: number
        -
        -

        Public implicit any property

        -
        -
      • -
      • -
        p5: string
        -
        -

        Readonly property

        -
        -
      • -
      -

      Returns NonGenericClass

      -
    • -
    -
    -
    -
    -

    Properties

    -
    - -

    Protected p2

    - - -
    -
    - -

    p3

    -
    p3: number
    - -
    -
    - -

    Readonly p5

    -
    p5: string
    - -
    -
    - -

    value

    -
    value: SubClassB
    - -
    -
    -
    -

    Methods

    -
    - -

    getValue

    - - -
    -
    - -

    setValue

    - - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    -
      -
    • Enumeration
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Parameters

    • p1: any

      Constructor param

      +
    • p2: SubClassB

      Private string property

      +
    • p3: number

      Public number property

      +
    • p4: number

      Public implicit any property

      +
    • p5: string

      Readonly property

      +

    Returns NonGenericClass

    Properties

    Protected p2

    p3

    p3: number

    Readonly p5

    p5: string

    value

    value: SubClassB

    Methods

    getValue

    setValue

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Interface
    • Interface with type parameter
    • Class
    • Class with type parameter
    • Enumeration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.SubClassA.html b/src/test/renderer/specs/classes/classes.SubClassA.html index 60bb71251..03e70107a 100644 --- a/src/test/renderer/specs/classes/classes.SubClassA.html +++ b/src/test/renderer/specs/classes/classes.SubClassA.html @@ -1,676 +1,71 @@ - - - - - - SubClassA | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class SubClassA

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +SubClassA | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    This is a class that extends another class.

    -
    -

    This class has no own constructor, so its constructor should be inherited - from BaseClass.

    -
    -
    -
    -

    Hierarchy

    - -
    -
    -

    Implements

    - -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Accessors

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - - -
    -
    -
    -

    Properties

    -
    - -

    Protected kind

    -
    kind: number
    - -
    -
    +

    This class has no own constructor, so its constructor should be inherited + from BaseClass.

    +

    Hierarchy

    Implements

    Index

    Constructors

    constructor

    Properties

    Protected kind

    kind: number

    This is a simple protected member.

    -
    -
    -
    -
    - -

    name

    -
    name: string
    - -
    -
    +

    name

    name: string

    This is a interface member of INameInterface.

    -
    -

    It should be inherited by all subinterfaces.

    -

    Links - these should all point to this property on the base class

    - -

    Links - these should point to the containing interface

    - -
    -
    -
    - -

    Static instance

    -
    instance: BaseClass
    - -
    -
    +

    It should be inherited by all subinterfaces.

    +

    Links - these should all point to this property on the base class

    + +

    Links - these should point to the containing interface

    + +

    Static instance

    instance: BaseClass

    This is a static member.

    -
    -

    Static members should not be inherited.

    -
    -
    -
    - -

    Static instances

    -
    instances: BaseClass[]
    - -
    -
    -
    -

    Accessors

    -
    - -

    nameProperty

    -
      -
    • get nameProperty(): string
    • -
    • set nameProperty(value: string): void
    • -
    -
      -
    • - -
      -
      +

      Static members should not be inherited.

      +

    Static instances

    instances: BaseClass[]

    Accessors

    nameProperty

    • get nameProperty(): string
    • set nameProperty(value: string): void
    • Returns the name. See BaseClass.name.

      -
      -
      -

      Returns string

      -

      The return value.

      -
    • -
    • - -
      -
      +

      Returns string

      The return value.

      +
    • Sets the name. See BaseClass.name.

      -
      -
      -

      Parameters

      -
        -
      • -
        value: string
        -
        -

        The new name.

        -
        -
      • -
      -

      Returns void

      -

      The return value.

      -
    • -
    -
    -
    - -

    readOnlyNameProperty

    -
      -
    • get readOnlyNameProperty(): string
    • -
    -
      -
    • - -
      -
      +

      Parameters

      • value: string

        The new name.

        +

      Returns void

      The return value.

      +

    readOnlyNameProperty

    • get readOnlyNameProperty(): string
    • Returns the name. See BaseClass.name.

      -
      -
      -

      Returns string

      -

      The return value.

      -
    • -
    -
    -
    - -

    writeOnlyNameProperty

    -
      -
    • set writeOnlyNameProperty(value: string): void
    • -
    -
      -
    • - -
      -
      +

      Returns string

      The return value.

      +

    writeOnlyNameProperty

    • set writeOnlyNameProperty(value: string): void
    • Sets the name. See BaseClass.name.

      -
      -
      -

      Parameters

      -
        -
      • -
        value: string
        -
        -
        +

        Parameters

        • value: string

          The new name.

          -
          -
          -
        • -
        -

        Returns void

        -

        The return value.

        -
      • -
      -
    -
    -
    -

    Methods

    -
    - -

    abstractMethod

    -
      -
    • abstractMethod(): void
    • -
    - -
    -
    - -

    arrowFunction

    -
      -
    • arrowFunction(param2: string, param1: number): void
    • -
    -

    Returns void

    The return value.

    +

    Methods

    abstractMethod

    • abstractMethod(): void

    arrowFunction

    • arrowFunction(param2: string, param1: number): void
    -
    -
    - -

    getName

    -
      -
    • getName(): string
    • -
    -

    getName

    • getName(): string
    • This is a simple member function.

      -
      -

      It should be inherited by all subclasses. This class has a static - member with the same name, both should be documented.

      -
      -

      Returns string

      -

      Return the name.

      -
    • -
    -
    -
    - -

    print

    -
      -
    • print(value: string): void
    • -
    -
      -
    • - -
      -
      +

      It should be inherited by all subclasses. This class has a static + member with the same name, both should be documented.

      +

      Returns string

      Return the name.

      +

    print

    • print(value: string): void
    • This is a simple interface function.

      -
      -
      -

      Parameters

      -
        -
      • -
        value: string
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    printName

    -
      -
    • printName(): void
    • -
    -

    printName

    • printName(): void
    -
    -
    - -

    setName

    -
      -
    • setName(name: string): void
    • -
    -

    setName

    • setName(name: string): void
    • This is a simple member function.

      -
      -

      It should be inherited by all subclasses.

      -
      -

      Parameters

      -
        -
      • -
        name: string
        -
        -

        The new name.

        -
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    Static caTest

    -
      -
    • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string
    • -
    - -
    -
    - -

    Static getInstance

    - -
      -
    • - -
      -
      +

      It should be inherited by all subclasses.

      +

      Parameters

      • name: string

        The new name.

        +

      Returns void

    Static caTest

    • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

    Static getInstance

    • This is a static function.

      -
      -

      Static functions should not be inherited.

      -
      -

      Returns BaseClass

      -

      An instance of BaseClass.

      -
    • -
    -
    -
    - -

    Static getName

    -
      -
    • getName(): string
    • -
    -
      -
    • - -
      -
      +

      Static functions should not be inherited.

      +

      Returns BaseClass

      An instance of BaseClass.

      +

    Static getName

    • getName(): string
    • This is a simple static member function.

      -
      -

      Static functions should not be inherited. This class has a - member with the same name, both should be documented.

      -
      -

      Returns string

      -

      Return the name.

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited method
    • -
    -
      -
    • Enumeration
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Static functions should not be inherited. This class has a + member with the same name, both should be documented.

    +

    Returns string

    Return the name.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Property
    • Method
    • Accessor
    • Interface
    • Interface with type parameter
    • Inherited constructor
    • Inherited method
    • Enumeration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.SubClassB.html b/src/test/renderer/specs/classes/classes.SubClassB.html index 62c818fd1..6c0c751c2 100644 --- a/src/test/renderer/specs/classes/classes.SubClassB.html +++ b/src/test/renderer/specs/classes/classes.SubClassB.html @@ -1,503 +1,35 @@ - - - - - - SubClassB | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class SubClassB

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +SubClassB | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    This is a class that extends another class.

    -
    -

    The constructor of the original class should be overwritten.

    -
    -
    -
    -

    Hierarchy

    - -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - - -
    -
    -
    -

    Properties

    -
    - -

    Protected kind

    -
    kind: number
    - -
    -
    +

    The constructor of the original class should be overwritten.

    +

    Hierarchy

    Index

    Constructors

    constructor

    Properties

    Protected kind

    kind: number

    This is a simple protected member.

    -
    -
    -
    -
    - -

    name

    -
    name: string
    - -
    -
    +

    name

    name: string

    This is a simple public member.

    -
    -
    -
    -
    - -

    Static instance

    -
    instance: BaseClass
    - -
    -
    +

    Static instance

    instance: BaseClass

    This is a static member.

    -
    -

    Static members should not be inherited.

    -
    -
    -
    - -

    Static instances

    -
    instances: BaseClass[]
    - -
    -
    -
    -

    Methods

    -
    - -

    abstractMethod

    -
      -
    • abstractMethod(): void
    • -
    - -
    -
    - -

    arrowFunction

    -
      -
    • arrowFunction(param2: string, param1: number): void
    • -
    -

    Static instances

    instances: BaseClass[]

    Methods

    abstractMethod

    • abstractMethod(): void

    arrowFunction

    • arrowFunction(param2: string, param1: number): void
    -
    -
    - -

    doSomething

    - - -
    -
    - -

    getName

    -
      -
    • getName(): string
    • -
    -

    doSomething

    getName

    • getName(): string
    • This is a simple member function.

      -
      -

      It should be inherited by all subclasses. This class has a static - member with the same name, both should be documented.

      -
      -

      Returns string

      -

      Return the name.

      -
    • -
    -
    -
    - -

    setName

    -
      -
    • setName(name: string): void
    • -
    -
      -
    • - -
      -
      +

      It should be inherited by all subclasses. This class has a static + member with the same name, both should be documented.

      +

      Returns string

      Return the name.

      +

    setName

    • setName(name: string): void
    • This is a simple member function.

      -
      -

      It should be inherited by all subclasses.

      -
      -

      Parameters

      -
        -
      • -
        name: string
        -
        -

        The new name.

        -
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    Static caTest

    -
      -
    • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string
    • -
    - -
    -
    - -

    Static getInstance

    - -
      -
    • - -
      -
      +

      It should be inherited by all subclasses.

      +

      Parameters

      • name: string

        The new name.

        +

      Returns void

    Static caTest

    • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

    Static getInstance

    • This is a static function.

      -
      -

      Static functions should not be inherited.

      -
      -

      Returns BaseClass

      -

      An instance of BaseClass.

      -
    • -
    -
    -
    - -

    Static getName

    -
      -
    • getName(): string
    • -
    -
      -
    • - -
      -
      +

      Static functions should not be inherited.

      +

      Returns BaseClass

      An instance of BaseClass.

      +

    Static getName

    • getName(): string
    • This is a simple static member function.

      -
      -

      Static functions should not be inherited. This class has a - member with the same name, both should be documented.

      -
      -

      Returns string

      -

      Return the name.

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Enumeration
    • -
    -
      -
    • Inherited method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Static functions should not be inherited. This class has a + member with the same name, both should be documented.

    +

    Returns string

    Return the name.

    +

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Constructor
    • Property
    • Method
    • Interface
    • Interface with type parameter
    • Enumeration
    • Inherited method

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index 220e1e687..f31a3509e 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -1,241 +1,12 @@ - - - - - - ExportedClassName | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class ExportedClassName

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +ExportedClassName | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    This class is exported under a different name. The exported name is "ExportedClassName"

    -
    -
    export {NotExportedClassName as ExportedClassName};
    +						
    export {NotExportedClassName as ExportedClassName};
     
    -
    -
    -
    -

    Hierarchy

    -
      -
    • ExportedClassName
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - -
      -
    • - -
      -
      +

    Hierarchy

    • ExportedClassName

    Index

    Constructors

    constructor

    • This is the constructor of the NotExportedClassName class.

      -
      -
      -

      Returns ExportedClassName

      -
    • -
    -
    -
    -
    -

    Properties

    -
    - -

    notExportedProperty

    -
    notExportedProperty: string
    - -
    -
    +

    Returns ExportedClassName

    Properties

    notExportedProperty

    notExportedProperty: string

    Property of NotExportedClassName class.

    -
    -
    -
    -
    -
    -

    Methods

    -
    - -

    getNotExportedProperty

    -
      -
    • getNotExportedProperty(): string
    • -
    -
      -
    • - -
      -
      +

    Methods

    getNotExportedProperty

    • getNotExportedProperty(): string
    • Method of NotExportedClassName class.

      -
      -
      -

      Returns string

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Enumeration
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Returns string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Constructor
    • Property
    • Method
    • Interface
    • Interface with type parameter
    • Enumeration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index e0b018924..3b3f89f85 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -1,240 +1,11 @@ - - - - - - default | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class default

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +default | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    This class is exported via es6 export syntax.

    -
    -
    export default class DefaultExportedClass
    +						
    export default class DefaultExportedClass
     
    -
    -
    -
    -

    Hierarchy

    -
      -
    • default
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Methods

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    - -
      -
    • - -
      -
      +

    Hierarchy

    • default

    Index

    Constructors

    constructor

    • This is the constructor of the default exported class.

      -
      -
      -

      Returns default

      -
    • -
    -
    -
    -
    -

    Properties

    -
    - -

    exportedProperty

    -
    exportedProperty: string
    - -
    -
    +

    Returns default

    Properties

    exportedProperty

    exportedProperty: string

    Property of default exported class.

    -
    -
    -
    -
    -
    -

    Methods

    -
    - -

    getExportedProperty

    -
      -
    • getExportedProperty(): string
    • -
    -
      -
    • - -
      -
      +

    Methods

    getExportedProperty

    • getExportedProperty(): string
    • Method of default exported class.

      -
      -
      -

      Returns string

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Namespace
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    -
      -
    • Enumeration
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - \ No newline at end of file +

    Returns string

    Legend

    • Namespace
    • Variable
    • Function
    • Function with type parameter
    • Type alias
    • Type alias with type parameter
    • Class
    • Class with type parameter
    • Constructor
    • Property
    • Method
    • Interface
    • Interface with type parameter
    • Enumeration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/src/test/renderer/specs/classes/flattened.FlattenedClass.html b/src/test/renderer/specs/classes/flattened.FlattenedClass.html index 6f370f3f7..6898da733 100644 --- a/src/test/renderer/specs/classes/flattened.FlattenedClass.html +++ b/src/test/renderer/specs/classes/flattened.FlattenedClass.html @@ -1,496 +1,41 @@ - - - - - - FlattenedClass | typedoc - - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class FlattenedClass

    -
    -
    -
    -
    -
    -
    -
    -
    -
    +FlattenedClass | typedoc
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Class FlattenedClass

    A class that contains members with flattened properties.

    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • FlattenedClass
    • -
    -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    -
      -
    • new FlattenedClass(options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }): FlattenedClass
    • -
    -
      -
    • - -
      -
      +

    Hierarchy

    • FlattenedClass

    Index

    Constructors

    constructor

    • new FlattenedClass(options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }): FlattenedClass
    • A constructor that accepts an option object defined inline.

      -
      -
      -

      Parameters

      -
        -
      • -
        options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }
        -
        -
        +

        Parameters

        • options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }

          The inline typed options object.

          -
          -
          -
            -
          • -
            Optional anotherValue?: string
            -
            -

            Another value on the options object parameter.

            -
            -
          • -
          • -
            Optional moreOptions?: { moreValues: number }
            -
            -

            A typed child object of the options object.

            -
            -
              -
            • -
              moreValues: number
              -
            • -
            -
          • -
          • -
            Optional value?: string
            -
            -

            A value on the options object parameter.

            -
            -
          • -
          -
        • -
        -

        Returns FlattenedClass

        -
      • -
      -
    -
    -
    -

    Properties

    -
    - -

    callback

    -
    callback: (param: number, optionalParam?: string) => string
    - -
    -
    +
    • Optional anotherValue?: string

      Another value on the options object parameter.

      +
    • Optional moreOptions?: { moreValues: number }

      A typed child object of the options object.

      +
      • moreValues: number
    • Optional value?: string

      A value on the options object parameter.

      +

    Returns FlattenedClass

    Properties

    callback

    callback: (param: number, optionalParam?: string) => string

    A member that holds a callback that requires a typed function signature.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (param: number, optionalParam?: string): string
      • -
      -
        -
      • -
        -
        +

        Type declaration

          • (param: number, optionalParam?: string): string
          • A member that holds a callback that requires a typed function signature.

            -
            -
            -

            Parameters

            -
              -
            • -
              param: number
              -
            • -
            • -
              Optional optionalParam: string
              -
            • -
            -

            Returns string

            -
          • -
          -
        • -
        -
        -
    -
    - -

    indexed

    -
    indexed: { test: string }
    - -
    -
    +

    Parameters

    • param: number
    • Optional optionalParam: string

    Returns string

    indexed

    indexed: { test: string }

    A member that holds an index signature.

    -
    -
    -
    param
    -

    The index property comment.

    -
    -
    param
    -

    A property of the index signature instance.

    -
    -
    -
    -
    -

    Type declaration

    -
      -
    • -
      [index: number]: { name: string; value?: number }
      -
        -
      • -
        name: string
        -
      • -
      • -
        Optional value?: number
        -
      • -
      -
    • -
    • -
      test: string
      -
    • -
    -
    -
    -
    - -

    multipleCallSignatures

    -
    multipleCallSignatures: { (): number; (value: number): FlattenedClass }
    - -
    -
    +
    param

    The index property comment.

    +
    param

    A property of the index signature instance.

    +

    Type declaration

    • [index: number]: { name: string; value?: number }
      • name: string
      • Optional value?: number
    • test: string

    multipleCallSignatures

    multipleCallSignatures: { (): number; (value: number): FlattenedClass }

    An object with multiple call signatures.

    -
    -
    -
    see
    -

    https://github.com/sebastian-lenz/typedoc/issues/27

    -
    -
    -
    -
    -

    Type declaration

    -
    -
    - -

    options

    -
    options: { anotherValue?: string; emptyObject: {}; moreOptions?: { moreValues: number }; value?: string }
    - -
    -
    +

    Parameters

    • value: number

      The desired value.

      +

    Returns FlattenedClass

    The calling Foo.

    +

    options

    options: { anotherValue?: string; emptyObject: {}; moreOptions?: { moreValues: number }; value?: string }

    A member that accepts an option object defined inline.

    -
    -
    -
    param
    -

    A value on the options object parameter.

    -
    -
    param
    -

    Another value on the options object parameter.

    -
    -
    param
    -

    A typed child object of the options object.

    -
    -
    param
    -

    A value of the typed child object.

    -
    -
    param
    -

    An empty object

    -
    -
    -
    -
    -

    Type declaration

    -
      -
    • -
      Optional anotherValue?: string
      -
    • -
    • -
      emptyObject: {}
      -
        -
      -
    • -
    • -
      Optional moreOptions?: { moreValues: number }
      -
        -
      • -
        moreValues: number
        -
      • -
      -
    • -
    • -
      Optional value?: string
      -
    • -
    -
    -
    -
    - -

    singleCallSignature

    -
    singleCallSignature: (...args: string[]) => () => string
    - -
    -
    +
    param

    A value on the options object parameter.

    +
    param

    Another value on the options object parameter.

    +
    param

    A typed child object of the options object.

    +
    param

    A value of the typed child object.

    +
    param

    An empty object

    +

    Type declaration

    • Optional anotherValue?: string
    • emptyObject: {}
      • Optional moreOptions?: { moreValues: number }
        • moreValues: number
      • Optional value?: string

      singleCallSignature

      singleCallSignature: (...args: string[]) => () => string

      Single call signature.

      -
      -
      -
      -

      Type declaration

      -
        -
      • -
          -
        • (...args: string[]): () => string
        • -
        -
          -
        • -
          -
          +

          Type declaration

            • (...args: string[]): () => string
            • Single call signature.

              -
              -
              -

              Parameters

              -
                -
              • -
                Rest ...args: string[]
                -
              • -
              -

              Returns () => string

              -
                -
              • -
                  -
                • (): string
                • -
                -
                  -
                • -

                  Returns string

                  -
                • -
                -
              • -
              -
            • -
            -
          • -
          -
          -
      -
      - -

      unionAndFunction

      -
      unionAndFunction: (() => 1) | 2
      - -
      -
      +

      Parameters

      • Rest ...args: string[]

      Returns () => string

        • (): string
        • Returns string

      unionAndFunction

      unionAndFunction: (() => 1) | 2

      Rendering edge case: the function needs to be wrapped in parens or the type changes.

      -
      -
      -
      - -
      - - - -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Interface
      • Interface with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/mixin.Base.html b/src/test/renderer/specs/classes/mixin.Base.html index e14f617aa..f8d6bc518 100644 --- a/src/test/renderer/specs/classes/mixin.Base.html +++ b/src/test/renderer/specs/classes/mixin.Base.html @@ -1,232 +1,3 @@ - - - - - - Base | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Class Base

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +Base | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Base class

      -
      -
      -
      -
      -

      Hierarchy

      -
        -
      • Base
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Constructors

      - -
      -
      -

      Properties

      - -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Constructors

      -
      - -

      constructor

      -
        -
      • new Base(): Base
      • -
      -
        -
      • - -

        Returns Base

        -
      • -
      -
      -
      -
      -

      Properties

      -
      - -

      baseProperty

      -
      baseProperty: string = "init"
      - -
      -
      -
      -

      Methods

      -
      - -

      baseMethod

      -
        -
      • baseMethod(): number
      • -
      -
        -
      • - -

        Returns number

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      • Method
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Hierarchy

      • Base

      Index

      Constructors

      Properties

      Methods

      Constructors

      constructor

      Properties

      baseProperty

      baseProperty: string = "init"

      Methods

      baseMethod

      • baseMethod(): number
      • Returns number

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html index ed2b3b657..9b6de129f 100644 --- a/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html +++ b/src/test/renderer/specs/classes/mixin.SomeClassWithMixin.html @@ -1,335 +1,3 @@ - - - - - - SomeClassWithMixin | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Class SomeClassWithMixin

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +SomeClassWithMixin | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class SomeClassWithMixin

      Class that inherits from Base and consumes Mixin1 and Mixin2, in order.

      -
      -
      -
      -
      -

      Hierarchy

      -
        -
      • - __type<{ prototype: any } & typeof Base, this> & __type<typeof Base, this> & Base<this> -
          -
        • SomeClassWithMixin
        • -
        -
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Constructors

      - -
      -
      -

      Properties

      - -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Constructors

      -
      - -

      constructor

      - -
        -
      • - -

        Returns SomeClassWithMixin

        -
      • -
      -
      -
      -
      -

      Properties

      -
      - -

      baseProperty

      -
      baseProperty: string = "init"
      - -
      -
      - -

      classWithMixinProperty

      -
      classWithMixinProperty: string = "init"
      - -
      -
      - -

      property1

      -
      property1: string = "init"
      - -
      -
      - -

      property2

      -
      property2: string = "init"
      - -
      -
      -
      -

      Methods

      -
      - -

      baseMethod

      -
        -
      • baseMethod(): number
      • -
      -
        -
      • - -

        Returns number

        -
      • -
      -
      -
      - -

      classWithMixinMethod

      -
        -
      • classWithMixinMethod(): string
      • -
      -
        -
      • - -

        Returns string

        -
      • -
      -
      -
      - -

      method1

      - -
        -
      • - -

        Parameters

        - -

        Returns Mixin1Type[]

        -
      • -
      -
      -
      - -

      method2

      - -
        -
      • - -

        Parameters

        - -

        Returns Mixin2Type

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      • Property
      • -
      • Method
      • -
      -
        -
      • Inherited constructor
      • -
      • Inherited property
      • -
      • Inherited method
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      baseProperty

      baseProperty: string = "init"

      classWithMixinProperty

      classWithMixinProperty: string = "init"

      property1

      property1: string = "init"

      property2

      property2: string = "init"

      Methods

      baseMethod

      • baseMethod(): number
      • Returns number

      classWithMixinMethod

      • classWithMixinMethod(): string
      • Returns string

      method1

      method2

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Property
      • Method
      • Inherited constructor
      • Inherited property
      • Inherited method
      • Interface
      • Interface with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index 2c7f011af..acd01804a 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -1,239 +1,11 @@ - - - - - - export= | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Class export=

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +export= | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This class is exported by being assigned to ´export´.

      -
      -
      export = SingleExportedClass;
      +						
      export = SingleExportedClass;
       
      -
      -
      -
      -

      Hierarchy

      -
        -
      • export=
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Constructors

      - -
      -
      -

      Properties

      - -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Constructors

      -
      - -

      constructor

      - -
        -
      • - -
        -
        +

      Hierarchy

      • export=

      Index

      Constructors

      constructor

      • This is the constructor of the exported class.

        -
        -
        -

        Returns export=

        -
      • -
      -
      -
      -
      -

      Properties

      -
      - -

      exportedProperty

      -
      exportedProperty: string
      - -
      -
      +

      Returns export=

      Properties

      exportedProperty

      exportedProperty: string

      Property of exported class.

      -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      getExportedProperty

      -
        -
      • getExportedProperty(): string
      • -
      -
        -
      • - -
        -
        +

      Methods

      getExportedProperty

      • getExportedProperty(): string
      • Method of exported class.

        -
        -
        -

        Returns string

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      • Method
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Returns string

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/enums/enumerations.Directions.html b/src/test/renderer/specs/enums/enumerations.Directions.html index 1f4a2b43e..2540d13b6 100644 --- a/src/test/renderer/specs/enums/enumerations.Directions.html +++ b/src/test/renderer/specs/enums/enumerations.Directions.html @@ -1,246 +1,15 @@ - - - - - - Directions | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Enumeration Directions

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +Directions | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Enumeration Directions

      This is a simple Enumeration.

      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Enumeration members

      - -
      -
      -
      -
      -
      -

      Enumeration members

      -
      - -

      Bottom

      -
      Bottom: = 2
      - -
      -
      +

      Index

      Enumeration members

      Bottom

      Bottom: = 2

      A simple enum member.

      -
      -
      -
      -
      - -

      Left

      -
      Left: = 3
      - -
      -
      +

      Left

      Left: = 3

      A simple enum member.

      -
      -
      -
      -
      - -

      Right

      -
      Right: = 1
      - -
      -
      +

      Right

      Right: = 1

      A simple enum member.

      -
      -
      -
      -
      - -

      Top

      -
      Top: = 0
      - -
      -
      +

      Top

      Top: = 0

      A simple enum member.

      -
      -
      -
      -
      - -

      TopLeft

      -
      TopLeft: = 3
      - -
      -
      +

      TopLeft

      TopLeft: = 3

      A composite enum member.

      -
      -
      -
      -
      - -

      TopRight

      -
      TopRight: = 1
      - -
      -
      +

      TopRight

      TopRight: = 1

      A composite enum member.

      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/enums/enumerations.Size-1.html b/src/test/renderer/specs/enums/enumerations.Size-1.html index f2b01178b..8326979f0 100644 --- a/src/test/renderer/specs/enums/enumerations.Size-1.html +++ b/src/test/renderer/specs/enums/enumerations.Size-1.html @@ -1,205 +1,10 @@ - - - - - - Size | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Enumeration Size

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +Size | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Enumeration Size

      This is a enumeration extended by a module.

      -
      -

      You should see both the enum members and the module members.

      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Enumeration members

      - -
      -
      -
      -
      -
      -

      Enumeration members

      -
      - -

      Large

      -
      Large: = 2
      - -
      -
      +

      You should see both the enum members and the module members.

      +

      Index

      Enumeration members

      Enumeration members

      Large

      Large: = 2

      A simple enum member.

      -
      -
      -
      -
      - -

      Medium

      -
      Medium: = 1
      - -
      -
      +

      Medium

      Medium: = 1

      A simple enum member.

      -
      -
      -
      -
      - -

      Small

      -
      Small: = 0
      - -
      -
      +

      Small

      Small: = 0

      A simple enum member.

      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/index.html b/src/test/renderer/specs/index.html index b9e6a8667..f457293d9 100644 --- a/src/test/renderer/specs/index.html +++ b/src/test/renderer/specs/index.html @@ -1,61 +1,4 @@ - - - - - - typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -

      typedoc

      -
      -
      -
      -
      -
      -
      +typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      typedoc

      Example

      @@ -108,62 +51,4 @@

      Repeated Heading

      Repeated Heading

      This is used to check the generated id. Second instance.

      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/classes.NameInterface.html b/src/test/renderer/specs/interfaces/classes.NameInterface.html index 0ed80fe0c..095a8f0dc 100644 --- a/src/test/renderer/specs/interfaces/classes.NameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.NameInterface.html @@ -1,253 +1,34 @@ - - - - - - NameInterface | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface NameInterface

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +NameInterface | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface NameInterface

      This is a simple interface.

      -
      -

      Links - these should all point to the name property:

      - -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Implemented by

      - -
      -
      -

      Index

      -
      -
      -
      -

      Properties

      - -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Properties

      -
      - -

      name

      -
      name: string
      - -
      -
      -

      This is a interface member of INameInterface.

      -
      -

      It should be inherited by all subinterfaces.

      -

      Links - these should all point to this property on the base class

      +

      Links - these should all point to the name property:

      -

      Links - these should point to the containing interface

      - -
      -
      - -
      -

      Methods

      -
      - -

      getName

      -
        -
      • getName(): string
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      Implemented by

      Index

      Properties

      Methods

      Properties

      name

      name: string
      +

      This is a interface member of INameInterface.

      +

      It should be inherited by all subinterfaces.

      +

      Links - these should all point to this property on the base class

      + +

      Links - these should point to the containing interface

      + +

      Methods

      getName

      • getName(): string
      • This is a interface function of INameInterface.

        -
        -

        It should be inherited by all subinterfaces.

        -
        -

        Returns string

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Property
      • -
      • Method
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      It should be inherited by all subinterfaces.

      +

      Returns string

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Property
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/classes.PrintInterface.html b/src/test/renderer/specs/interfaces/classes.PrintInterface.html index f2d3d6ccc..36c5c5f96 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintInterface.html @@ -1,204 +1,6 @@ - - - - - - PrintInterface | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface PrintInterface

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +PrintInterface | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface PrintInterface

      This is a simple interface.

      -
      -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Index

      -
      -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      print

      -
        -
      • print(value: string): void
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      Index

      Methods

      Methods

      print

      • print(value: string): void
      • This is a interface function of IPrintInterface

        -
        -

        It should be inherited by all subinterfaces.

        -
        -

        Parameters

        -
          -
        • -
          value: string
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Method
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      It should be inherited by all subinterfaces.

      +

      Parameters

      • value: string

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index e02686018..786cc67c0 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -1,295 +1,29 @@ - - - - - - PrintNameInterface | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface PrintNameInterface

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +PrintNameInterface | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface PrintNameInterface

      This is a interface inheriting from two other interfaces.

      -
      -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Implemented by

      - -
      -
      -

      Index

      -
      -
      -
      -

      Properties

      -

      Hierarchy

      Implemented by

      Index

      Properties

      Methods

      Properties

      name

      name: string
      +

      This is a interface member of INameInterface.

      +

      It should be inherited by all subinterfaces.

      +

      Links - these should all point to this property on the base class

      + -
      -
      -

      Methods

      -
      -
      - - -
      -

      Properties

      -
      - -

      name

      -
      name: string
      - -
      -
      -

      This is a interface member of INameInterface.

      -
      -

      It should be inherited by all subinterfaces.

      -

      Links - these should all point to this property on the base class

      - -

      Links - these should point to the containing interface

      - -
      -
      -
      -
      -

      Methods

      -
      - -

      getName

      -
        -
      • getName(): string
      • -
      -

      Methods

      getName

      • getName(): string
      • This is a interface function of INameInterface.

        -
        -

        It should be inherited by all subinterfaces.

        -
        -

        Returns string

        -
      • -
      -
      -
      - -

      print

      -
        -
      • print(value: string): void
      • -
      -
        -
      • - -
        -
        +

        It should be inherited by all subinterfaces.

        +

        Returns string

      print

      • print(value: string): void
      • This is a interface function of IPrintInterface

        -
        -

        It should be inherited by all subinterfaces.

        -
        -

        Parameters

        -
          -
        • -
          value: string
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      - -

      printName

      -
        -
      • printName(): void
      • -
      -
        -
      • - -
        -
        +

        It should be inherited by all subinterfaces.

        +

        Parameters

        • value: string

        Returns void

      printName

      • printName(): void
      • This is a interface function of IPrintNameInterface

        -
        -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      - -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Method
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index 6dbdc3b37..433b77d4d 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -1,213 +1,8 @@ - - - - - - A | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface A<T>

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +A | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface A<T>

      A generic interface.

      -
      -
      -
      -
      -

      Type parameters

      -
        -
      • -

        T

        -
        -
        +

      Type parameters

      • T

        The generic type parameter.

        -
        -
        -
      • -
      -
      -
      -

      Hierarchy

      -
        -
      • - A - -
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      getT

      -
        -
      • getT(): T
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      Index

      Methods

      Methods

      getT

      • getT(): T
      • A generic member function.

        -
        -
        -

        Returns T

        -

        A generic return value.

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Method
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Returns T

      A generic return value.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index d69550b3a..4231dffd9 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -1,275 +1,15 @@ - - - - - - AB | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface AB<T>

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +AB | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface AB<T>

      A generic interface extending two other generic interfaces and setting one of the type parameters.

      -
      -
      -
      -
      -

      Type parameters

      -
        -
      • -

        T

        -
        -
        +

      Type parameters

      • T

        The leftover generic type parameter.

        -
        -
        -
      • -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Index

      -
      -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      getC

      -
        -
      • getC(): boolean
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      Index

      Methods

      getC

      • getC(): boolean
      • A generic member function.

        -
        -
        -

        Returns boolean

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      getT

      -
        -
      • getT(): T
      • -
      -
        -
      • - -
        -
        +

        Returns boolean

        A generic return value.

        +

      getT

      • getT(): T
      • A generic member function.

        -
        -
        -

        Returns T

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      setT

      -
        -
      • setT(value: T): void
      • -
      -
        -
      • - -
        -
        +

        Returns T

        A generic return value.

        +

      setT

      • setT(value: T): void
      • A generic member function.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: T
          -
          -

          A generic parameter.

          -
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Parameters

      • value: T

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index f5313e3c0..ed95c6787 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -1,254 +1,12 @@ - - - - - - ABNumber | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface ABNumber

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +ABNumber | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface ABNumber

      An interface extending a generic interface and setting its type parameter.

      -
      -
      -
      -
      -

      Hierarchy

      -
        -
      • - AB<number> -
          -
        • ABNumber
        • -
        -
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      getC

      -
        -
      • getC(): boolean
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      • AB<number>
        • ABNumber

      Index

      Methods

      getC

      • getC(): boolean
      • A generic member function.

        -
        -
        -

        Returns boolean

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      getT

      -
        -
      • getT(): number
      • -
      -
        -
      • - -
        -
        +

        Returns boolean

        A generic return value.

        +

      getT

      • getT(): number
      • A generic member function.

        -
        -
        -

        Returns number

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      setT

      -
        -
      • setT(value: number): void
      • -
      -
        -
      • - -
        -
        +

        Returns number

        A generic return value.

        +

      setT

      • setT(value: number): void
      • A generic member function.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: number
          -
          -

          A generic parameter.

          -
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Parameters

      • value: number

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 2573196fd..9a1da36e3 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -1,254 +1,12 @@ - - - - - - ABString | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface ABString

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +ABString | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface ABString

      An interface extending a generic interface and setting its type parameter.

      -
      -
      -
      -
      -

      Hierarchy

      -
        -
      • - AB<string> -
          -
        • ABString
        • -
        -
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      getC

      -
        -
      • getC(): boolean
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      • AB<string>
        • ABString

      Index

      Methods

      getC

      • getC(): boolean
      • A generic member function.

        -
        -
        -

        Returns boolean

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      getT

      -
        -
      • getT(): string
      • -
      -
        -
      • - -
        -
        +

        Returns boolean

        A generic return value.

        +

      getT

      • getT(): string
      • A generic member function.

        -
        -
        -

        Returns string

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      setT

      -
        -
      • setT(value: string): void
      • -
      -
        -
      • - -
        -
        +

        Returns string

        A generic return value.

        +

      setT

      • setT(value: string): void
      • A generic member function.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: string
          -
          -

          A generic parameter.

          -
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Parameters

      • value: string

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index bfd6d36cb..b9b8bf0bc 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -1,251 +1,13 @@ - - - - - - B | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface B<T, C>

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +B | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface B<T, C>

      A generic interface with two type parameters.

      -
      -
      -
      -
      -

      Type parameters

      -
        -
      • -

        T

        -
        -
        +

      Type parameters

      • T

        The first generic type parameter.

        -
        -
        -
      • -
      • -

        C

        -
        -
        +
      • C

        The second generic type parameter.

        -
        -
        -
      • -
      -
      -
      -

      Hierarchy

      -
        -
      • - B - -
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Methods

      -
      - -

      getC

      -
        -
      • getC(): C
      • -
      -
        -
      • - -
        -
        +

      Hierarchy

      Index

      Methods

      Methods

      getC

      • getC(): C
      • A generic member function.

        -
        -
        -

        Returns C

        -

        A generic return value.

        -
      • -
      -
      -
      - -

      setT

      -
        -
      • setT(value: T): void
      • -
      -
        -
      • - -
        -
        +

        Returns C

        A generic return value.

        +

      setT

      • setT(value: T): void
      • A generic member function.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: T
          -
          -

          A generic parameter.

          -
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Method
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Parameters

      • value: T

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html index 78b1802dd..09c811cab 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin1Type.html @@ -1,245 +1,3 @@ - - - - - - Mixin1Type | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface Mixin1Type

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +Mixin1Type | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface Mixin1Type

      The "instance type" of the Mixin1 using the interface notation (supports recursive type definition)

      -
      -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Index

      -
      -
      -
      -

      Properties

      - -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Properties

      -
      - -

      baseProperty

      -
      baseProperty: string = "init"
      - -
      -
      - -

      property1

      -
      property1: string = "init"
      - -
      -
      -
      -

      Methods

      -
      - -

      baseMethod

      -
        -
      • baseMethod(): number
      • -
      -
        -
      • - -

        Returns number

        -
      • -
      -
      -
      - -

      method1

      - -
        -
      • - -

        Parameters

        - -

        Returns Mixin1Type[]

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Hierarchy

      Index

      Properties

      baseProperty

      baseProperty: string = "init"

      property1

      property1: string = "init"

      Methods

      baseMethod

      • baseMethod(): number
      • Returns number

      method1

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html index 80baa1e58..d86c175f7 100644 --- a/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html +++ b/src/test/renderer/specs/interfaces/mixin.Mixin2Type.html @@ -1,278 +1,3 @@ - - - - - - Mixin2Type | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Interface Mixin2Type

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +Mixin2Type | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface Mixin2Type

      The "instance type" of the Mixin2 using the interface notation (supports recursive type definition)

      -
      -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Index

      -
      -
      -
      -

      Properties

      - -
      -
      -

      Methods

      - -
      -
      -
      -
      -
      -

      Properties

      -
      - -

      baseProperty

      -
      baseProperty: string = "init"
      - -
      -
      - -

      property1

      -
      property1: string = "init"
      - -
      -
      - -

      property2

      -
      property2: string = "init"
      - -
      -
      -
      -

      Methods

      -
      - -

      baseMethod

      -
        -
      • baseMethod(): number
      • -
      -
        -
      • - -

        Returns number

        -
      • -
      -
      -
      - -

      method1

      - -
        -
      • - -

        Parameters

        - -

        Returns Mixin1Type[]

        -
      • -
      -
      -
      - -

      method2

      - -
        -
      • - -

        Parameters

        - -

        Returns Mixin2Type

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Hierarchy

      Index

      Properties

      baseProperty

      baseProperty: string = "init"

      property1

      property1: string = "init"

      property2

      property2: string = "init"

      Methods

      baseMethod

      • baseMethod(): number
      • Returns number

      method1

      method2

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules.html b/src/test/renderer/specs/modules.html index 999e14873..09854ee39 100644 --- a/src/test/renderer/specs/modules.html +++ b/src/test/renderer/specs/modules.html @@ -1,141 +1 @@ - - - - - - typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -

      typedoc

      -
      -
      - -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      typedoc

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/access.PrivateModule.html b/src/test/renderer/specs/modules/access.PrivateModule.html index 4f30f4e80..212791b86 100644 --- a/src/test/renderer/specs/modules/access.PrivateModule.html +++ b/src/test/renderer/specs/modules/access.PrivateModule.html @@ -1,172 +1,3 @@ - - - - - - PrivateModule | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Namespace PrivateModule

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +PrivateModule | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Namespace PrivateModule

      A module that is documented as being private.

      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      functionInsidePrivateModule

      -
        -
      • functionInsidePrivateModule(): void
      • -
      -
        -
      • - -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Index

      Functions

      functionInsidePrivateModule

      • functionInsidePrivateModule(): void
      • Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/access.html b/src/test/renderer/specs/modules/access.html index eaeabb5b1..225f97b0e 100644 --- a/src/test/renderer/specs/modules/access.html +++ b/src/test/renderer/specs/modules/access.html @@ -1,266 +1,9 @@ - - - - - - access | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module access

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Namespaces

      - -
      -
      -

      Classes

      - -
      -
      -

      Type aliases

      - -
      -
      -

      Variables

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Type aliases

      -
      - -

      BigIntLiteral

      -
      BigIntLiteral: -123n
      - -
      -
      -
      -

      Variables

      -
      - -

      Private fakePrivateVariable

      -
      fakePrivateVariable: string = "test"
      - -
      -
      +access | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module access

      Index

      Type aliases

      BigIntLiteral

      BigIntLiteral: -123n

      Variables

      Private fakePrivateVariable

      fakePrivateVariable: string = "test"

      A variable that is made private via comment.

      -
      -
      -
      -
      - -

      Let Protected fakeProtectedVariable

      -
      fakeProtectedVariable: string = "test"
      - -
      -
      +

      Let Protected fakeProtectedVariable

      fakeProtectedVariable: string = "test"

      A variable that is made protected via comment.

      -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      Private fakePrivateFunction

      -
        -
      • fakePrivateFunction(): void
      • -
      -
        -
      • - -
        -
        +

      Functions

      Private fakePrivateFunction

      • fakePrivateFunction(): void
      • A function that is made private via comment.

        -
        -
        -

        Returns void

        -
      • -
      -
      -
      - -

      Protected fakeProtectedFunction

      -
        -
      • fakeProtectedFunction(): void
      • -
      -
        -
      • - -
        -
        +

        Returns void

      Protected fakeProtectedFunction

      • fakeProtectedFunction(): void
      • A function that is made protected via comment.

        -
        -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/classes.html b/src/test/renderer/specs/modules/classes.html index 9ef6b6db0..9f7d31d68 100644 --- a/src/test/renderer/specs/modules/classes.html +++ b/src/test/renderer/specs/modules/classes.html @@ -1,207 +1 @@ - - - - - - classes | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module classes

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Classes

      - -
      -
      -

      Interfaces

      - -
      -
      -

      Type aliases

      - -
      -
      -
      -
      -
      -

      Type aliases

      -
      - -

      AbstractMe

      -
      AbstractMe: abstract new () => NonGenericClass
      - -
      -

      Type declaration

      - -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +classes | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module classes

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/default_export.html b/src/test/renderer/specs/modules/default_export.html index 93c0a50cb..4a307e645 100644 --- a/src/test/renderer/specs/modules/default_export.html +++ b/src/test/renderer/specs/modules/default_export.html @@ -1,144 +1 @@ - - - - - - default-export | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module default-export

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Classes

      - -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +default-export | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module default-export

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/enumerations.Size.html b/src/test/renderer/specs/modules/enumerations.Size.html index a7b8db851..1aecca95b 100644 --- a/src/test/renderer/specs/modules/enumerations.Size.html +++ b/src/test/renderer/specs/modules/enumerations.Size.html @@ -1,211 +1,9 @@ - - - - - - Size | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Namespace Size

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +Size | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This comment is ignored, as the enumeration is already defined.

      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Variables

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Variables

      -
      - -

      Let defaultSize

      -
      defaultSize: Size = ...
      - -
      -
      +

      Index

      Variables

      Functions

      Variables

      Let defaultSize

      defaultSize: Size = ...

      A variable that is attached to an enumeration.

      -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      isSmall

      -
        -
      • isSmall(value: Size): boolean
      • -
      -
        -
      • - -
        -
        +

      Functions

      isSmall

      • isSmall(value: Size): boolean
      • A function that is attached to an enumeration.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: Size
          -
          -

          The value that should be tested.

          -
          -
        • -
        -

        Returns boolean

        -

        TRUE when the given value equals Size.Small.

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Parameters

      • value: Size

        The value that should be tested.

        +

      Returns boolean

      TRUE when the given value equals Size.Small.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/enumerations.html b/src/test/renderer/specs/modules/enumerations.html index d5efba6fb..9e3383f11 100644 --- a/src/test/renderer/specs/modules/enumerations.html +++ b/src/test/renderer/specs/modules/enumerations.html @@ -1,155 +1 @@ - - - - - - enumerations | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module enumerations

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Namespaces

      - -
      -
      -

      Enumerations

      - -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +enumerations | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module enumerations

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/flattened.html b/src/test/renderer/specs/modules/flattened.html index f83c72381..a6f4df700 100644 --- a/src/test/renderer/specs/modules/flattened.html +++ b/src/test/renderer/specs/modules/flattened.html @@ -1,318 +1,16 @@ - - - - - - flattened | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module flattened

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Classes

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      flattenedCallback

      -
        -
      • flattenedCallback(callback: (param: number, optionalParam?: string) => string): void
      • -
      -
        -
      • - -
        -
        +flattened | typedoc
        Options
        All
        • Public
        • Public/Protected
        • All
        Menu

        Module flattened

        Index

        Functions

        flattenedCallback

        • flattenedCallback(callback: (param: number, optionalParam?: string) => string): void
        • A function that has a parameter that requires a typed function callback.

          -
          -
          -

          Parameters

          -
            -
          • -
            callback: (param: number, optionalParam?: string) => string
            -
            -

            The typed function callback.

            -
            -
              -
            • -
                -
              • (param: number, optionalParam?: string): string
              • -
              -
                -
              • -

                Parameters

                -
                  -
                • -
                  param: number
                  -
                  -

                  A parameter of the typed function callback.

                  -
                  -
                • -
                • -
                  Optional optionalParam: string
                  -
                  -

                  An optional parameter of the typed function callback.

                  -
                  -
                • -
                -

                Returns string

                -
              • -
              -
            • -
            -
          • -
          -

          Returns void

          -
        • -
        -
        -
        - -

        flattenedIndexSignature

        -
          -
        • flattenedIndexSignature(indexed: { test: string }): void
        • -
        -
          -
        • - -
          -
          +

          Parameters

          • callback: (param: number, optionalParam?: string) => string

            The typed function callback.

            +
              • (param: number, optionalParam?: string): string
              • Parameters

                • param: number

                  A parameter of the typed function callback.

                  +
                • Optional optionalParam: string

                  An optional parameter of the typed function callback.

                  +

                Returns string

          Returns void

        flattenedIndexSignature

        • flattenedIndexSignature(indexed: { test: string }): void
        • A function that accepts an index signature parameter.

          -
          -
          -

          Parameters

          -
            -
          • -
            indexed: { test: string }
            -
            -

            The index signature parameter.

            -
            -
              -
            • -
              [index: number]: { name: string; value?: number }
              -
                -
              • -
                name: string
                -
              • -
              • -
                Optional value?: number
                -
              • -
              -
            • -
            • -
              test: string
              -
              -

              A property of the index signature instance.

              -
              -
            • -
            -
          • -
          -

          Returns void

          -
        • -
        -
        -
        - -

        flattenedParameter

        -
          -
        • flattenedParameter(options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }): void
        • -
        -
          -
        • - -
          -
          +

          Parameters

          • indexed: { test: string }

            The index signature parameter.

            +
            • [index: number]: { name: string; value?: number }
              • name: string
              • Optional value?: number
            • test: string

              A property of the index signature instance.

              +

          Returns void

        flattenedParameter

        • flattenedParameter(options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }): void
        • A function that accepts an option object defined inline.

          -
          -
          -

          Parameters

          -
            -
          • -
            options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }
            -
            -

            The inline typed options object.

            -
            -
              -
            • -
              [name: string]: any
              -
            • -
            • -
              Optional anotherValue?: string
              -
              -

              Another value on the options object parameter.

              -
              -
            • -
            • -
              Optional moreOptions?: { moreValues: number }
              -
              -

              A typed child object of the options object.

              -
              -
                -
              • -
                moreValues: number
                -
              • -
              -
            • -
            • -
              Optional value?: string
              -
              -

              A value on the options object parameter.

              -
              -
            • -
            -
          • -
          -

          Returns void

          -
        • -
        -
        -
        -
        - -
        -
        -
        -
        -

        Legend

        -
        -
          -
        • Namespace
        • -
        • Variable
        • -
        • Function
        • -
        • Function with type parameter
        • -
        • Type alias
        • -
        • Type alias with type parameter
        • -
        -
          -
        • Interface
        • -
        • Interface with type parameter
        • -
        -
          -
        • Class
        • -
        • Class with type parameter
        • -
        -
          -
        • Enumeration
        • -
        -
        -
        -
        -
        -

        Generated using TypeDoc

        -
        -
        - - - \ No newline at end of file +

        Parameters

        • options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }

          The inline typed options object.

          +
          • [name: string]: any
          • Optional anotherValue?: string

            Another value on the options object parameter.

            +
          • Optional moreOptions?: { moreValues: number }

            A typed child object of the options object.

            +
            • moreValues: number
          • Optional value?: string

            A value on the options object parameter.

            +

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/functions.html b/src/test/renderer/specs/modules/functions.html index 1df8d920e..3f4cd7ca8 100644 --- a/src/test/renderer/specs/modules/functions.html +++ b/src/test/renderer/specs/modules/functions.html @@ -1,609 +1,55 @@ - - - - - - functions | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module functions

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      - -
      -
      -
      -

      Functions

      -
      - -

      createSomething

      -
        -
      • createSomething(): { doAnotherThing: () => void; doSomething: (a: number) => number; foo: string }
      • -
      -
        -
      • - -
        -
        +functions | typedoc
        Options
        All
        • Public
        • Public/Protected
        • All
        Menu

        Module functions

        Index

        Functions

        createSomething

        • createSomething(): { doAnotherThing: () => void; doSomething: (a: number) => number; foo: string }
        • A function that returns an object. Also no type information is given, the object should be correctly reflected.

          -
          -
          -

          Returns { doAnotherThing: () => void; doSomething: (a: number) => number; foo: string }

          -
            -
          • -
            doAnotherThing: () => void
            -
              -
            • -
                -
              • (): void
              • -
              -
                -
              • -

                Returns void

                -
              • -
              -
            • -
            -
          • -
          • -
            doSomething: (a: number) => number
            -
              -
            • -
                -
              • (a: number): number
              • -
              -
                -
              • -

                Parameters

                -
                  -
                • -
                  a: number
                  -
                • -
                -

                Returns number

                -
              • -
              -
            • -
            -
          • -
          • -
            foo: string
            -
          • -
          -
        • -
        -
        -
        - -

        exportedFunction

        -
          -
        • exportedFunction(): void
        • -
        -
          -
        • - -
          -
          +

          Returns { doAnotherThing: () => void; doSomething: (a: number) => number; foo: string }

          • doAnotherThing: () => void
              • (): void
              • Returns void

          • doSomething: (a: number) => number
              • (a: number): number
              • Parameters

                • a: number

                Returns number

          • foo: string

        exportedFunction

        • exportedFunction(): void
        • This is a simple exported function.

          -
          -
          -

          Returns void

          -
        • -
        -
        -
        - -

        functionWithArguments

        -
          -
        • functionWithArguments(paramZ: string, paramG: any, paramA: NameInterface): number
        • -
        -
          -
        • - -
          -
          +

          Returns void

        functionWithArguments

        • functionWithArguments(paramZ: string, paramG: any, paramA: NameInterface): number
        • This is a function with multiple arguments and a return value.

          -
          -
          -

          Parameters

          -
            -
          • -
            paramZ: string
            -
            -

            This is a string parameter.

            -
            -
          • -
          • -
            paramG: any
            -
            -

            This is a parameter flagged with any. - This sentence is placed in the next line.

            -
            -
          • -
          • -
            paramA: NameInterface
            -
            -

            This is a parameter pointing to an interface.

            -
            var value:BaseClass = new BaseClass('test');
            +									

        Parameters

        • paramZ: string

          This is a string parameter.

          +
        • paramG: any

          This is a parameter flagged with any. + This sentence is placed in the next line.

          +
        • paramA: NameInterface

          This is a parameter pointing to an interface.

          +
          var value:BaseClass = new BaseClass('test');
           functionWithArguments('arg', 0, value);
           
          -
          -
        • -
        -

        Returns number

        -
      • -
      -
      -
      - -

      functionWithDefaults

      -
        -
      • functionWithDefaults(valueA?: string, valueB?: number, valueC?: number, valueD?: boolean, valueE?: boolean): string
      • -
      -
        -
      • - -
        -
        +

      Returns number

      functionWithDefaults

      • functionWithDefaults(valueA?: string, valueB?: number, valueC?: number, valueD?: boolean, valueE?: boolean): string
      • This is a function with a parameter that has a default value.

        -
        -
        -

        Parameters

        -
          -
        • -
          valueA: string = "defaultValue"
          -
        • -
        • -
          valueB: number = 100
          -
        • -
        • -
          valueC: number = ...
          -
        • -
        • -
          valueD: boolean = true
          -
        • -
        • -
          valueE: boolean = false
          -
        • -
        -

        Returns string

        -

        The input value or the default value.

        -
      • -
      -
      -
      - -

      functionWithDocLink

      -
        -
      • functionWithDocLink(): void
      • -
      -
        -
      • - -
        -
        +

        Parameters

        • valueA: string = "defaultValue"
        • valueB: number = 100
        • valueC: number = ...
        • valueD: boolean = true
        • valueE: boolean = false

        Returns string

        The input value or the default value.

        +

      functionWithDocLink

      • functionWithDocLink(): void
      -
      -
      - -

      functionWithOptionalValue

      -
        -
      • functionWithOptionalValue(requiredParam: string, optionalParam?: string): void
      • -
      -

      functionWithOptionalValue

      • functionWithOptionalValue(requiredParam: string, optionalParam?: string): void
      • This is a function with a parameter that is optional.

        -
        -
        -

        Parameters

        -
          -
        • -
          requiredParam: string
          -
          -

          A normal parameter.

          -
          -
        • -
        • -
          Optional optionalParam: string
          -
          -

          An optional parameter.

          -
          -
        • -
        -

        Returns void

        -
      • -
      -
      -
      - -

      functionWithRest

      -
        -
      • functionWithRest(...rest: string[]): string
      • -
      -
        -
      • - -
        -
        +

        Parameters

        • requiredParam: string

          A normal parameter.

          +
        • Optional optionalParam: string

          An optional parameter.

          +

        Returns void

      functionWithRest

      • functionWithRest(...rest: string[]): string
      • This is a function with rest parameter.

        -
        -
        -

        Parameters

        -
          -
        • -
          Rest ...rest: string[]
          -
          -

          Multiple strings.

          -
          -
        • -
        -

        Returns string

        -

        The combined string.

        -
      • -
      -
      -
      - -

      genericFunction

      -
        -
      • genericFunction<T>(value: T): T
      • -
      -
        -
      • - -
        -
        +

        Parameters

        • Rest ...rest: string[]

          Multiple strings.

          +

        Returns string

        The combined string.

        +

      genericFunction

      • genericFunction<T>(value: T): T
      • This is a generic function.

        -
        -
        -

        Type parameters

        -
          -
        • -

          T

          -
          -

          The type parameter.

          -
          -
        • -
        -

        Parameters

        -
          -
        • -
          value: T
          -
          -

          The typed value.

          -
          -
        • -
        -

        Returns T

        -

        Returns the typed value.

        -
      • -
      -
      -
      - -

      moduleFunction

      -
        -
      • moduleFunction(arg: string): string
      • -
      -
        -
      • - -
        -
        +

        Type parameters

        • T

          The type parameter.

          +

        Parameters

        • value: T

          The typed value.

          +

        Returns T

        Returns the typed value.

        +

      moduleFunction

      • moduleFunction(arg: string): string
      • This is a function that is extended by a module.

        -
        -
        -

        Parameters

        -
          -
        • -
          arg: string
          -
          -

          An argument.

          -
          -
        • -
        -

        Returns string

        -
      • -
      -
      -
      - -

      multipleSignatures

      -
        -
      • multipleSignatures(value: string): string
      • -
      • multipleSignatures(value: { name: string }): string
      • -
      -
        -
      • - -
        -
        +

        Parameters

        • arg: string

          An argument.

          +

        Returns string

      multipleSignatures

      • multipleSignatures(value: string): string
      • multipleSignatures(value: { name: string }): string
      • This is the first signature of a function with multiple signatures.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: string
          -
          -

          The name value.

          -
          -
        • -
        -

        Returns string

        -
      • -
      • - -
        -
        +

        Parameters

        • value: string

          The name value.

          +

        Returns string

      • This is the second signature of a function with multiple signatures.

        -
        -
        -

        Parameters

        -
          -
        • -
          value: { name: string }
          -
          -

          An object containing the name value.

          -
          -
            -
          • -
            name: string
            -
            -

            A value of the object.

            -
            -
          • -
          -
        • -
        -

        Returns string

        -
      • -
      -
      -
      - -

      Let variableFunction

      -
        -
      • variableFunction(paramZ: string, paramG: any, paramA: NameInterface): number
      • -
      -
        -
      • - -
        -
        +

        Parameters

        • value: { name: string }

          An object containing the name value.

          +
          • name: string

            A value of the object.

            +

        Returns string

      Let variableFunction

      • variableFunction(paramZ: string, paramG: any, paramA: NameInterface): number
      • This is a function with multiple arguments and a return value.

        -
        -
        -

        Parameters

        -
          -
        • -
          paramZ: string
          -
          -

          This is a string parameter.

          -
          -
        • -
        • -
          paramG: any
          -
          -

          This is a parameter flagged with any. - This sentence is placed in the next line.

          -
          -
        • -
        • -
          paramA: NameInterface
          -
          -

          This is a parameter pointing to an interface.

          -
          var value:BaseClass = new BaseClass('test');
          +									

      Parameters

      • paramZ: string

        This is a string parameter.

        +
      • paramG: any

        This is a parameter flagged with any. + This sentence is placed in the next line.

        +
      • paramA: NameInterface

        This is a parameter pointing to an interface.

        +
        var value:BaseClass = new BaseClass('test');
         functionWithArguments('arg', 0, value);
         
        -
        -
      • -
      -

      Returns number

      - - - - -
      - -
      - -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Returns number

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/functions.moduleFunction.html b/src/test/renderer/specs/modules/functions.moduleFunction.html index 7e3866bb1..bd0fdaa27 100644 --- a/src/test/renderer/specs/modules/functions.moduleFunction.html +++ b/src/test/renderer/specs/modules/functions.moduleFunction.html @@ -1,224 +1,9 @@ - - - - - - moduleFunction | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Namespace moduleFunction

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +moduleFunction | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Namespace moduleFunction

      This is the module extending the function moduleFunction().

      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Variables

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Variables

      -
      - -

      Let functionVariable

      -
      functionVariable: string
      - -
      -
      +

      Index

      Variables

      Let functionVariable

      functionVariable: string

      This variable is appended to a function.

      -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      append

      -
        -
      • append(): void
      • -
      -
        -
      • - -
        -
        +

      Functions

      append

      • append(): void
      • This function is appended to another function.

        -
        -
        -

        Returns void

        -
      • -
      -
      -
      - -

      prepend

      -
        -
      • prepend(): void
      • -
      -
        -
      • - -
        -
        +

        Returns void

      prepend

      • prepend(): void
      • This function is appended to another function.

        -
        -
        -

        Returns void

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/generics.html b/src/test/renderer/specs/modules/generics.html index f44de5477..698e21c35 100644 --- a/src/test/renderer/specs/modules/generics.html +++ b/src/test/renderer/specs/modules/generics.html @@ -1,330 +1,14 @@ - - - - - - generics | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module generics

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Interfaces

      - -
      -
      -

      Type aliases

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Type aliases

      -
      - -

      DoubleKey

      -
      DoubleKey<T>: {[ K in keyof T & string as `${K}${K}`]: T[K] }
      - -

      Type parameters

      -
        -
      • T

      • -
      -
      -
      - -

      HorribleRecursiveTypeThatShouldNotBeUsedByAnyone

      -
      HorribleRecursiveTypeThatShouldNotBeUsedByAnyone<T, R>: - { 0: R; 1: HorribleRecursiveTypeThatShouldNotBeUsedByAnyone<PopFront<T>, {[ K in keyof R | keyof T[0]]: K extends keyof R ? R[K] : T[0][K] }> }[T["length"] extends 0 ? 0 : 1]
      - -
      -
      +generics | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module generics

      Index

      Type aliases

      DoubleKey

      DoubleKey<T>: {[ K in keyof T & string as `${K}${K}`]: T[K] }

      Type parameters

      • T

      HorribleRecursiveTypeThatShouldNotBeUsedByAnyone

      HorribleRecursiveTypeThatShouldNotBeUsedByAnyone<T, R>: { 0: R; 1: HorribleRecursiveTypeThatShouldNotBeUsedByAnyone<PopFront<T>, {[ K in keyof R | keyof T[0]]: K extends keyof R ? R[K] : T[0][K] }> }[T["length"] extends 0 ? 0 : 1]

      See GH#1150. Calling typeChecker.typeToString on this type will send TS into an infinite loop, which is undesirable.

      -
      -
      -

      Type parameters

      -
        -
      • -

        T: any[]

        -
      • -
      • -

        R = {}

        -
      • -
      -
      -
      - -

      PopFront

      -
      PopFront<T>: ((...args: T) => any) extends (a: any, ...r: infer R) => any ? R : never
      - -
      -
      +

      Type parameters

      • T: any[]

      • R = {}

      PopFront

      PopFront<T>: ((...args: T) => any) extends (a: any, ...r: infer R) => any ? R : never

      Conditional type with infer

      -
      -
      -

      Type parameters

      -
        -
      • -

        T: any[]

        -
      • -
      -
      -
      -
      -

      Functions

      -
      - -

      doubleKey

      -
        -
      • doubleKey<T>(arg: T): {[ K in string as `${K}${K}`]: T[K] }
      • -
      -
        -
      • - -

        Type parameters

        -
          -
        • T

        • -
        -

        Parameters

        -
          -
        • -
          arg: T
          -
        • -
        -

        Returns {[ K in string as `${K}${K}`]: T[K] }

        -
      • -
      -
      -
      - -

      getGenericArray

      -
        -
      • getGenericArray(): string[]
      • -
      -
        -
      • - -
        -
        +

        Type parameters

        • T: any[]

      Functions

      doubleKey

      • doubleKey<T>(arg: T): {[ K in string as `${K}${K}`]: T[K] }
      • Type parameters

        • T

        Parameters

        • arg: T

        Returns {[ K in string as `${K}${K}`]: T[K] }

      getGenericArray

      • getGenericArray(): string[]
      • A function returning a generic array with type parameters.

        -
        -
        -

        Returns string[]

        -

        The return value with type arguments.

        -
      • -
      -
      -
      - -

      testFunction

      -
        -
      • testFunction<T>(value: T): T
      • -
      -
        -
      • - -
        -
        +

        Returns string[]

        The return value with type arguments.

        +

      testFunction

      • testFunction<T>(value: T): T
      • A generic function

        -
        -
        -

        Type parameters

        -
          -
        • -

          T

          -
          -

          The generic type parameter.

          -
          -
        • -
        -

        Parameters

        -
          -
        • -
          value: T
          -
          -

          A generic parameter.

          -
          -
        • -
        -

        Returns T

        -

        A generic return value.

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Type parameters

      • T

        The generic type parameter.

        +

      Parameters

      • value: T

        A generic parameter.

        +

      Returns T

      A generic return value.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/markdown.html b/src/test/renderer/specs/modules/markdown.html index b8e4a4ed5..a597fefb6 100644 --- a/src/test/renderer/specs/modules/markdown.html +++ b/src/test/renderer/specs/modules/markdown.html @@ -1,160 +1,4 @@ - - - - - - markdown | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module markdown

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Variables

      - -
      -
      -
      -
      -
      -

      Variables

      -
      - -

      Const emailAddressInComment

      -
      emailAddressInComment: true = true
      - -
      -
      +markdown | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module markdown

      Index

      Variables

      Const emailAddressInComment

      emailAddressInComment: true = true

      This email address should stay unmangled in the rendered output: president@acme.com

      -
      -
      -
      see
      -

      https://github.com/TypeStrong/typedoc/issues/1395

      -
      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +
      see

      https://github.com/TypeStrong/typedoc/issues/1395

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/mixin.html b/src/test/renderer/specs/modules/mixin.html index 5b04f01f4..65c656b13 100644 --- a/src/test/renderer/specs/modules/mixin.html +++ b/src/test/renderer/specs/modules/mixin.html @@ -1,403 +1,16 @@ - - - - - - mixin | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module mixin

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Classes

      - -
      -
      -

      Interfaces

      - -
      -
      -

      Type aliases

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Type aliases

      -
      - -

      AnyConstructor

      -
      AnyConstructor<A>: new (...input: any[]) => A
      - -

      Type parameters

      -
        -
      • -

        A = object

        -
      • -
      -
      -

      Type declaration

      -
        -
      • -
          -
        • new (...input: any[]): A
        • -
        -
          -
        • -
          -
          +mixin | typedoc
          Options
          All
          • Public
          • Public/Protected
          • All
          Menu

          Module mixin

          Index

          Type aliases

          AnyConstructor

          AnyConstructor<A>: new (...input: any[]) => A

          Type parameters

          • A = object

          Type declaration

            • new (...input: any[]): A
            • Any constructor function

              -
              -
              -

              Parameters

              -
                -
              • -
                Rest ...input: any[]
                -
              • -
              -

              Returns A

              -
            • -
            -
          • -
          -
          -
          -
          - -

          AnyFunction

          -
          AnyFunction<A>: (...input: any[]) => A
          - -

          Type parameters

          -
            -
          • -

            A = any

            -
          • -
          -
          -

          Type declaration

          -
            -
          • -
              -
            • (...input: any[]): A
            • -
            -
              -
            • -
              -
              +

              Parameters

              • Rest ...input: any[]

              Returns A

          AnyFunction

          AnyFunction<A>: (...input: any[]) => A

          Type parameters

          • A = any

          Type declaration

            • (...input: any[]): A
            • Any function

              -
              -
              -

              Parameters

              -
                -
              • -
                Rest ...input: any[]
                -
              • -
              -

              Returns A

              -
            • -
            -
          • -
          -
          -
          -
          - -

          Mixin

          -
          Mixin<T>: InstanceType<ReturnType<T>>
          - -
          -
          +

          Parameters

          • Rest ...input: any[]

          Returns A

      Mixin

      Mixin<T>: InstanceType<ReturnType<T>>

      Mixin type helper

      -
      -
      -

      Type parameters

      - -
      -
      - -

      Mixin3

      -
      Mixin3: Mixin<typeof Mixin3>
      - -
      -
      +

      Type parameters

      Mixin3

      Mixin3: Mixin<typeof Mixin3>

      The "instance type" of the Mixin3 using the regular type notation (does not work well for recursive type definition) Is not well supported by the TypeDoc

      -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      Const Mixin1Func

      -
        -
      • Mixin1Func<T>(base: T): { prototype: any } & T
      • -
      -
        -
      • - -
        -
        +

      Functions

      Const Mixin1Func

      • Mixin1Func<T>(base: T): { prototype: any } & T
      • The "mixin function" of the Mixin1

        -
        -
        -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          base: T
          -
        • -
        -

        Returns { prototype: any } & T

        -
      • -
      -
      -
      - -

      Const Mixin2

      -
        -
      • Mixin2<T>(base: T): { prototype: any } & T
      • -
      -
        -
      • - -
        -
        +

        Type parameters

        Parameters

        • base: T

        Returns { prototype: any } & T

      Const Mixin2

      • Mixin2<T>(base: T): { prototype: any } & T
      • The "mixin function" of the Mixin2

        -
        -
        -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          base: T
          -
        • -
        -

        Returns { prototype: any } & T

        -
      • -
      -
      -
      - -

      Const Mixin3

      -
        -
      • Mixin3<T>(base: T): { prototype: any } & T
      • -
      -

      Const Mixin3

      • Mixin3<T>(base: T): { prototype: any } & T
      • The "mixin function" of the Mixin3

        -
        -
        -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          base: T
          -
        • -
        -

        Returns { prototype: any } & T

        -
      • -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Type parameters

      Parameters

      • base: T

      Returns { prototype: any } & T

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/mod.html b/src/test/renderer/specs/modules/mod.html index 0a82afb41..2862e4de7 100644 --- a/src/test/renderer/specs/modules/mod.html +++ b/src/test/renderer/specs/modules/mod.html @@ -1,207 +1,3 @@ - - - - - - mod | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module mod

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Variables

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      Variables

      -
      - -

      Const a

      -
      a: 1 = 1
      - -
      -
      - -

      Const gh1475

      -
      gh1475: { both: string; get getIt(): number; set setIt(n: number) } = ...
      - -
      -

      Type declaration

      -
        -
      • -
        get both(): string
        -
      • -
      • -
        set both(x: string): void
        -
      • -
      • -
        get getIt(): number
        -
      • -
      • -
        set setIt(n: number): void
        -
      • -
      -
      -
      -
      -
      -

      Functions

      -
      - -

      default

      -
        -
      • default(): void
      • -
      -
        -
      • - -
        -
        +mod | typedoc
        Options
        All
        • Public
        • Public/Protected
        • All
        Menu

        Module mod

        Index

        Variables

        Functions

        Variables

        Const a

        a: 1 = 1

        Const gh1475

        gh1475: { both: string; get getIt(): number; set setIt(n: number) } = ...

        Type declaration

        • get both(): string
        • set both(x: string): void
        • get getIt(): number
        • set setIt(n: number): void

        Functions

        default

        • default(): void
        • Will not be included in mod2

          -
          -
          -

          Returns void

          -
        • -
        -
        -
        -
        - -
        -
        -
        -
        -

        Legend

        -
        -
          -
        • Namespace
        • -
        • Variable
        • -
        • Function
        • -
        • Function with type parameter
        • -
        • Type alias
        • -
        • Type alias with type parameter
        • -
        -
          -
        • Interface
        • -
        • Interface with type parameter
        • -
        -
          -
        • Class
        • -
        • Class with type parameter
        • -
        -
          -
        • Enumeration
        • -
        -
        -
        -
        -
        -

        Generated using TypeDoc

        -
        -
        - - - \ No newline at end of file +

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/mod2.html b/src/test/renderer/specs/modules/mod2.html index db6c16bae..4ea583568 100644 --- a/src/test/renderer/specs/modules/mod2.html +++ b/src/test/renderer/specs/modules/mod2.html @@ -1,188 +1,3 @@ - - - - - - mod2 | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module mod2

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      References

      - -
      -
      -

      Functions

      - -
      -
      -
      -
      -
      -

      References

      -
      - -

      a

      - Re-exports a -
      -
      - -

      gh1475

      - Re-exports gh1475 -
      -
      -
      -

      Functions

      -
      - -

      default

      -
        -
      • default(): void
      • -
      -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html index db1f80453..6c852712f 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.MySubmodule.html @@ -1,142 +1,3 @@ - - - - - - MySubmodule | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Namespace MySubmodule

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +MySubmodule | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This is a submodule.

      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/modules.MyModule.html b/src/test/renderer/specs/modules/modules.MyModule.html index db7005f26..b7c7bf943 100644 --- a/src/test/renderer/specs/modules/modules.MyModule.html +++ b/src/test/renderer/specs/modules/modules.MyModule.html @@ -1,226 +1,7 @@ - - - - - - MyModule | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Namespace MyModule

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +MyModule | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Namespace MyModule

      This is a module.

      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Namespaces

      - -
      -
      -

      Variables

      - -
      -
      -
      -
      -
      -

      Variables

      -
      - -

      Let exportedModuleVariable

      -
      exportedModuleVariable: string = "foo"
      - -
      -
      - -

      Let object

      -
      object: { name: string; print: (value: string) => void } = ...
      - -
      -
      +

      Index

      Variables

      Let exportedModuleVariable

      exportedModuleVariable: string = "foo"

      Let object

      object: { name: string; print: (value: string) => void } = ...

      This is an object literal.

      -
      -
      -
      -

      Type declaration

      -
        -
      • -
        name: string
        -
      • -
      • -
        print: (value: string) => void
        -
          -
        • -
            -
          • (value: string): void
          • -
          -
            -
          • -
            -
            +

            Type declaration

            • name: string
            • print: (value: string) => void
                • (value: string): void
                • An object literal function.

                  -
                  -
                  -

                  Parameters

                  -
                    -
                  • -
                    value: string
                    -
                  • -
                  -

                  Returns void

                  -
                • -
                -
              • -
              -
            • -
            -
            -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Parameters

      • value: string

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/modules.html b/src/test/renderer/specs/modules/modules.html index ccba7ffa9..17e402af0 100644 --- a/src/test/renderer/specs/modules/modules.html +++ b/src/test/renderer/specs/modules/modules.html @@ -1,372 +1,10 @@ - - - - - - modules | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module modules

      -
      -
      -
      -
      -
      -
      -
      -
      -
      +modules | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module modules

      This comment has a code block that is only marked by indentation.

      -
      -
      @thisIsADecorator
      +						
      @thisIsADecorator
       class Foo {}
       
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Namespaces

      - -
      -
      -

      Type aliases

      - -
      -
      -

      Variables

      - -
      -
      -
      -
      -
      -

      Type aliases

      -
      - -

      NamedTuple

      -
      NamedTuple: [name: string, optionalName?: number]
      - -
      -
      -
      -

      Variables

      -
      - -

      Let exportedGlobalVariable

      -
      exportedGlobalVariable: string = "foo"
      - -
      -
      +

      Index

      Type aliases

      NamedTuple

      NamedTuple: [name: string, optionalName?: number]

      Variables

      Let exportedGlobalVariable

      exportedGlobalVariable: string = "foo"

      An exported global variable.

      -
      -
      -
      -
      - -

      Let objectLiteral

      -
      objectLiteral: { valueA: number; valueB: boolean; valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }; valueY: () => string; valueZ: string } = ...
      - -
      -
      +

      Let objectLiteral

      objectLiteral: { valueA: number; valueB: boolean; valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }; valueY: () => string; valueZ: string } = ...

      An object literal.

      -
      -
      -
      -

      Type declaration

      -
        -
      • -
        valueA: number
        -
      • -
      • -
        valueB: boolean
        -
      • -
      • -
        valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }
        -
          -
        • -
          valueA: number[]
          -
        • -
        • -
          valueY: (z: string) => { a: string; b: string }
          -
            -
          • -
              -
            • (z: string): { a: string; b: string }
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                z: string
                -
              • -
              -

              Returns { a: string; b: string }

              -
                -
              • -
                a: string
                -
              • -
              • -
                b: string
                -
              • -
              -
            • -
            -
          • -
          -
        • -
        • -
          valueZ: string
          -
        • -
        -
      • -
      • -
        valueY: () => string
        -
          -
        • -
            -
          • (): string
          • -
          -
            -
          • -

            Returns string

            -
          • -
          -
        • -
        -
      • -
      • -
        valueZ: string
        -
      • -
      -
      -
      -
      - -

      Let typeLiteral

      -
      typeLiteral: { valueA?: number; valueB?: boolean; valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }; valueY: () => string; valueZ: string }
      - -
      -

      Type declaration

      -
        -
      • -
          -
        • (): string
        • -
        -
          -
        • -

          Returns string

          -
        • -
        -
      • -
      • -
        Optional valueA?: number
        -
      • -
      • -
        Optional valueB?: boolean
        -
      • -
      • -
        valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }
        -
          -
        • -
          valueA: number[]
          -
        • -
        • -
          valueY: (z: string) => { a: string; b: string }
          -
            -
          • -
              -
            • (z: string): { a: string; b: string }
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                z: string
                -
              • -
              -

              Returns { a: string; b: string }

              -
                -
              • -
                a: string
                -
              • -
              • -
                b: string
                -
              • -
              -
            • -
            -
          • -
          -
        • -
        • -
          valueZ: string
          -
        • -
        -
      • -
      • -
        valueY: () => string
        -
          -
        • -
            -
          • (): string
          • -
          -
            -
          • -

            Returns string

            -
          • -
          -
        • -
        -
      • -
      • -
        valueZ: string
        -
      • -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Type declaration

      • valueA: number
      • valueB: boolean
      • valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }
        • valueA: number[]
        • valueY: (z: string) => { a: string; b: string }
            • (z: string): { a: string; b: string }
            • Parameters

              • z: string

              Returns { a: string; b: string }

              • a: string
              • b: string
        • valueZ: string
      • valueY: () => string
          • (): string
          • Returns string

      • valueZ: string

      Let typeLiteral

      typeLiteral: { valueA?: number; valueB?: boolean; valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }; valueY: () => string; valueZ: string }

      Type declaration

        • (): string
        • Returns string

      • Optional valueA?: number
      • Optional valueB?: boolean
      • valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }
        • valueA: number[]
        • valueY: (z: string) => { a: string; b: string }
            • (z: string): { a: string; b: string }
            • Parameters

              • z: string

              Returns { a: string; b: string }

              • a: string
              • b: string
        • valueZ: string
      • valueY: () => string
          • (): string
          • Returns string

      • valueZ: string

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/single_export.html b/src/test/renderer/specs/modules/single_export.html index a165b1b03..5e089d7aa 100644 --- a/src/test/renderer/specs/modules/single_export.html +++ b/src/test/renderer/specs/modules/single_export.html @@ -1,140 +1 @@ - - - - - - single-export | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module single-export

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Classes

      - -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +single-export | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module single-export

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/weird_names.html b/src/test/renderer/specs/modules/weird_names.html index 39e295daa..69f3be538 100644 --- a/src/test/renderer/specs/modules/weird_names.html +++ b/src/test/renderer/specs/modules/weird_names.html @@ -1,164 +1,3 @@ - - - - - - weird-names | typedoc - - - - - - -
      -
      -
      -
      - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - -
      -
      - Menu -
      -
      -
      -
      -
      -
      - -

      Module weird-names

      -
      -
      -
      -
      -
      -
      -
      -

      Index

      -
      -
      -
      -

      Variables

      - -
      -
      -
      -
      -
      -

      Variables

      -
      - -

      Const foo

      -
      foo: { <c-a>: string; =: string } = ...
      - -
      -
      +weird-names | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module weird-names

      Index

      Variables

      Variables

      Const foo

      foo: { <c-a>: string; =: string } = ...

      Object with characters that must be escaped.

      -
      -
      -
      -

      Type declaration

      -
        -
      • -
        <c-a>: string
        -
      • -
      • -
        =: string
        -
      • -
      -
      -
      -
      -
      - -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Namespace
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Type alias
      • -
      • Type alias with type parameter
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      -
        -
      • Enumeration
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      - - - \ No newline at end of file +

      Type declaration

      • <c-a>: string
      • =: string

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file From 62cf210b1057a0fc3608669704f3b292abeb652d Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Thu, 29 Jul 2021 08:52:11 -0400 Subject: [PATCH 28/33] switch markdown tag to
      --- src/lib/output/themes/default/DefaultThemeRenderContext.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/output/themes/default/DefaultThemeRenderContext.tsx b/src/lib/output/themes/default/DefaultThemeRenderContext.tsx index 43467149b..f56f67909 100644 --- a/src/lib/output/themes/default/DefaultThemeRenderContext.tsx +++ b/src/lib/output/themes/default/DefaultThemeRenderContext.tsx @@ -35,6 +35,6 @@ export class DefaultThemeRenderContext { // console.log(markdown(props.children)); // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore - return ; + return
      ; } } From fab6daea3be4545fc3d39d5b98265c982b2a540d Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Thu, 29 Jul 2021 08:55:05 -0400 Subject: [PATCH 29/33] update specs --- .../specs/classes/classes.BaseClass.html | 38 ++++++------ .../specs/classes/classes.GenericClass.html | 4 +- .../classes/classes.NonGenericClass.html | 14 ++--- .../specs/classes/classes.SubClassA.html | 60 +++++++++---------- .../specs/classes/classes.SubClassB.html | 38 ++++++------ .../default_export.ExportedClassName.html | 4 +- .../specs/classes/default_export.default.html | 4 +- .../classes/flattened.FlattenedClass.html | 18 +++--- .../specs/classes/single_export.export_.html | 4 +- .../specs/enums/enumerations.Size-1.html | 4 +- .../interfaces/classes.NameInterface.html | 12 ++-- .../interfaces/classes.PrintInterface.html | 4 +- .../classes.PrintNameInterface.html | 12 ++-- .../renderer/specs/interfaces/generics.A.html | 4 +- .../specs/interfaces/generics.AB.html | 12 ++-- .../specs/interfaces/generics.ABNumber.html | 12 ++-- .../specs/interfaces/generics.ABString.html | 12 ++-- .../renderer/specs/interfaces/generics.B.html | 8 +-- .../specs/modules/enumerations.Size.html | 6 +- .../renderer/specs/modules/flattened.html | 24 ++++---- .../renderer/specs/modules/functions.html | 58 +++++++++--------- src/test/renderer/specs/modules/generics.html | 12 ++-- src/test/renderer/specs/modules/modules.html | 4 +- 23 files changed, 184 insertions(+), 184 deletions(-) diff --git a/src/test/renderer/specs/classes/classes.BaseClass.html b/src/test/renderer/specs/classes/classes.BaseClass.html index c5d8470a3..df27ca9be 100644 --- a/src/test/renderer/specs/classes/classes.BaseClass.html +++ b/src/test/renderer/specs/classes/classes.BaseClass.html @@ -1,12 +1,12 @@ BaseClass | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This is a simple base class.

      -

      [[include:class-example.md]]

      +

      Hierarchy

      Implements

      Index

      Constructors

      constructor

      Properties

      Private internalClass

      internalClass: InternalClass<keyof BaseClass>
      +

      Hierarchy

      Implements

      Index

      Constructors

      constructor

      Properties

      Private internalClass

      internalClass: InternalClass<keyof BaseClass>

      This is an instance member of an internal class.

      Protected kind

      kind: number

      This is a simple protected member.

      @@ -14,31 +14,31 @@

      This is a simple public member.

      Static instance

      instance: BaseClass

      This is a static member.

      -

      Static members should not be inherited.

      -

      Static instances

      instances: BaseClass[]

      Methods

      Abstract abstractMethod

      • abstractMethod(): void
      • Returns void

      arrowFunction

      • arrowFunction(param2: string, param1: number): void
      • +

        Static members should not be inherited.

        +

      Static instances

      instances: BaseClass[]

      Methods

      Abstract abstractMethod

      • abstractMethod(): void
      • Returns void

      arrowFunction

      • arrowFunction(param2: string, param1: number): void

      Private checkName

      • checkName(): boolean
      • +

        Parameters

        • param2: string

          The second parameter needed by this function.

          +
        • param1: number

          The first parameter needed by this function.

          +

        Returns void

      Private checkName

      • checkName(): boolean
      • This is a private function.

        Returns boolean

      getName

      • getName(): string
      • This is a simple member function.

        -

        It should be inherited by all subclasses. This class has a static +

        It should be inherited by all subclasses. This class has a static member with the same name, both should be documented.

        -

        Returns string

        Return the name.

        -

      setName

      • setName(name: string): void
      • +

        Returns string

        Return the name.

        +

      setName

      • setName(name: string): void
      • This is a simple member function.

        -

        It should be inherited by all subclasses.

        -

        Parameters

        • name: string

          The new name.

          -

        Returns void

      Static caTest

      • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

      Parameters

      • name: string

        The new name.

        +

      Returns void

      Static caTest

      • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

      Static getInstance

      • This is a static function.

        -

        Static functions should not be inherited.

        -

        Returns BaseClass

        An instance of BaseClass.

        -

      Static getName

      • getName(): string
      • +

        Static functions should not be inherited.

        +

        Returns BaseClass

        An instance of BaseClass.

        +

      Static getName

      • getName(): string
      • This is a simple static member function.

        -

        Static functions should not be inherited. This class has a +

        Static functions should not be inherited. This class has a member with the same name, both should be documented.

        -

        Returns string

        Return the name.

        -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Private property
      • Private method
      • Static property
      • Static method
      • Enumeration
      • Protected property

      Generated using TypeDoc

      \ No newline at end of file +

      Returns string

      Return the name.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Private property
      • Private method
      • Static property
      • Static method
      • Enumeration
      • Protected property

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.GenericClass.html b/src/test/renderer/specs/classes/classes.GenericClass.html index 08693420a..c43c47d66 100644 --- a/src/test/renderer/specs/classes/classes.GenericClass.html +++ b/src/test/renderer/specs/classes/classes.GenericClass.html @@ -14,5 +14,5 @@

      Public implicit any property

    • p5: string

      Readonly property

      -
    • Returns GenericClass<T>

      Properties

      Protected p2

      p2: T

      p3

      p3: number

      Readonly p5

      p5: string

      value

      value: T

      Methods

      getValue

      • getValue(): T
      • Returns T

      setValue

      • setValue(value: T): void
      • Parameters

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Enumeration
      • Protected property

      Generated using TypeDoc

      \ No newline at end of file +

      Returns GenericClass<T>

      Properties

      Protected p2

      p2: T

      p3

      p3: number

      Readonly p5

      p5: string

      value

      value: T

      Methods

      getValue

      • getValue(): T
      • Returns T

      setValue

      • setValue(value: T): void
      • Parameters

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Enumeration
      • Protected property

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.NonGenericClass.html b/src/test/renderer/specs/classes/classes.NonGenericClass.html index a76a743f5..76943d5bd 100644 --- a/src/test/renderer/specs/classes/classes.NonGenericClass.html +++ b/src/test/renderer/specs/classes/classes.NonGenericClass.html @@ -2,10 +2,10 @@

      This a non generic class derived from a generic class.

      Hierarchy

      Index

      Constructors

      Properties

      Methods

      Constructors

      constructor

      • Constructor short text.

        -

        Parameters

        • p1: any

          Constructor param

          -
        • p2: SubClassB

          Private string property

          -
        • p3: number

          Public number property

          -
        • p4: number

          Public implicit any property

          -
        • p5: string

          Readonly property

          -

        Returns NonGenericClass

      Properties

      Protected p2

      p3

      p3: number

      Readonly p5

      p5: string

      value

      value: SubClassB

      Methods

      getValue

      setValue

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Inherited constructor
      • Inherited property
      • Inherited method
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • p1: any

        Constructor param

        +
      • p2: SubClassB

        Private string property

        +
      • p3: number

        Public number property

        +
      • p4: number

        Public implicit any property

        +
      • p5: string

        Readonly property

        +

      Returns NonGenericClass

      Properties

      Protected p2

      p3

      p3: number

      Readonly p5

      p5: string

      value

      value: SubClassB

      Methods

      getValue

      setValue

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Inherited constructor
      • Inherited property
      • Inherited method
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.SubClassA.html b/src/test/renderer/specs/classes/classes.SubClassA.html index 03e70107a..5afad3cce 100644 --- a/src/test/renderer/specs/classes/classes.SubClassA.html +++ b/src/test/renderer/specs/classes/classes.SubClassA.html @@ -1,12 +1,12 @@ SubClassA | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This is a class that extends another class.

      -

      This class has no own constructor, so its constructor should be inherited +

      This class has no own constructor, so its constructor should be inherited from BaseClass.

      -

      Hierarchy

      Implements

      Index

      Constructors

      constructor

      Properties

      Protected kind

      kind: number
      +

      Hierarchy

      Implements

      Index

      Constructors

      constructor

      Properties

      Protected kind

      kind: number

      This is a simple protected member.

      name

      name: string

      This is a interface member of INameInterface.

      -

      It should be inherited by all subinterfaces.

      +

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      -

      Static instance

      instance: BaseClass
      +

      Static instance

      instance: BaseClass

      This is a static member.

      -

      Static members should not be inherited.

      -

      Static instances

      instances: BaseClass[]

      Accessors

      nameProperty

      • get nameProperty(): string
      • set nameProperty(value: string): void
      • +

        Static members should not be inherited.

        +

      Static instances

      instances: BaseClass[]

      Accessors

      nameProperty

      • get nameProperty(): string
      • set nameProperty(value: string): void
      • Returns the name. See BaseClass.name.

        -

        Returns string

        The return value.

        -
      • +

        Returns string

        The return value.

        +
      • Sets the name. See BaseClass.name.

        -

        Parameters

        • value: string

          The new name.

          -

        Returns void

        The return value.

        -

      readOnlyNameProperty

      • get readOnlyNameProperty(): string
      • +

        Parameters

        • value: string

          The new name.

          +

        Returns void

        The return value.

        +

      readOnlyNameProperty

      • get readOnlyNameProperty(): string
      • Returns the name. See BaseClass.name.

        -

        Returns string

        The return value.

        -

      writeOnlyNameProperty

      • set writeOnlyNameProperty(value: string): void
      • +

        Returns string

        The return value.

        +

      writeOnlyNameProperty

      • set writeOnlyNameProperty(value: string): void
      • Sets the name. See BaseClass.name.

        Parameters

        • value: string

          The new name.

          -

        Returns void

        The return value.

        -

      Methods

      abstractMethod

      • abstractMethod(): void

      arrowFunction

      • arrowFunction(param2: string, param1: number): void

      Returns void

      The return value.

      +

      Methods

      abstractMethod

      • abstractMethod(): void

      arrowFunction

      • arrowFunction(param2: string, param1: number): void

      getName

      • getName(): string
      • +

        Parameters

        • param2: string

          The second parameter needed by this function.

          +
        • param1: number

          The first parameter needed by this function.

          +

        Returns void

      getName

      • getName(): string
      • This is a simple member function.

        -

        It should be inherited by all subclasses. This class has a static +

        It should be inherited by all subclasses. This class has a static member with the same name, both should be documented.

        -

        Returns string

        Return the name.

        -

      print

      • print(value: string): void

      print

      • print(value: string): void
      • This is a simple interface function.

        Parameters

        • value: string

        Returns void

      printName

      • printName(): void

      setName

      • setName(name: string): void
      • This is a simple member function.

        -

        It should be inherited by all subclasses.

        -

        Parameters

        • name: string

          The new name.

          -

        Returns void

      Static caTest

      • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

      Parameters

      • name: string

        The new name.

        +

      Returns void

      Static caTest

      • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

      Static getInstance

      • This is a static function.

        -

        Static functions should not be inherited.

        -

        Returns BaseClass

        An instance of BaseClass.

        -

      Static getName

      • getName(): string
      • +

        Static functions should not be inherited.

        +

        Returns BaseClass

        An instance of BaseClass.

        +

      Static getName

      • getName(): string
      • This is a simple static member function.

        -

        Static functions should not be inherited. This class has a +

        Static functions should not be inherited. This class has a member with the same name, both should be documented.

        -

        Returns string

        Return the name.

        -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Property
      • Method
      • Accessor
      • Interface
      • Interface with type parameter
      • Inherited constructor
      • Inherited method
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Returns string

      Return the name.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Property
      • Method
      • Accessor
      • Interface
      • Interface with type parameter
      • Inherited constructor
      • Inherited method
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/classes.SubClassB.html b/src/test/renderer/specs/classes/classes.SubClassB.html index 6c0c751c2..2feed0592 100644 --- a/src/test/renderer/specs/classes/classes.SubClassB.html +++ b/src/test/renderer/specs/classes/classes.SubClassB.html @@ -1,35 +1,35 @@ SubClassB | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This is a class that extends another class.

      -

      The constructor of the original class should be overwritten.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Protected kind

      kind: number
      +

      The constructor of the original class should be overwritten.

      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Protected kind

      kind: number

      This is a simple protected member.

      name

      name: string

      This is a simple public member.

      Static instance

      instance: BaseClass

      This is a static member.

      -

      Static members should not be inherited.

      -

      Static instances

      instances: BaseClass[]

      Methods

      abstractMethod

      • abstractMethod(): void

      arrowFunction

      • arrowFunction(param2: string, param1: number): void

      Static instances

      instances: BaseClass[]

      Methods

      abstractMethod

      • abstractMethod(): void

      arrowFunction

      • arrowFunction(param2: string, param1: number): void

      doSomething

      getName

      • getName(): string
      • +

        Parameters

        • param2: string

          The second parameter needed by this function.

          +
        • param1: number

          The first parameter needed by this function.

          +

        Returns void

      doSomething

      getName

      • getName(): string
      • This is a simple member function.

        -

        It should be inherited by all subclasses. This class has a static +

        It should be inherited by all subclasses. This class has a static member with the same name, both should be documented.

        -

        Returns string

        Return the name.

        -

      setName

      • setName(name: string): void

      setName

      • setName(name: string): void
      • This is a simple member function.

        -

        It should be inherited by all subclasses.

        -

        Parameters

        • name: string

          The new name.

          -

        Returns void

      Static caTest

      • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

      Parameters

      • name: string

        The new name.

        +

      Returns void

      Static caTest

      • caTest(originalValues: BaseClass, newRecord: any, fieldNames: string[], mandatoryFields: string[]): string

      Static getInstance

      • This is a static function.

        -

        Static functions should not be inherited.

        -

        Returns BaseClass

        An instance of BaseClass.

        -

      Static getName

      • getName(): string
      • +

        Static functions should not be inherited.

        +

        Returns BaseClass

        An instance of BaseClass.

        +

      Static getName

      • getName(): string
      • This is a simple static member function.

        -

        Static functions should not be inherited. This class has a +

        Static functions should not be inherited. This class has a member with the same name, both should be documented.

        -

        Returns string

        Return the name.

        -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Enumeration
      • Inherited method

      Generated using TypeDoc

      \ No newline at end of file +

      Returns string

      Return the name.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Class
      • Class with type parameter
      • Constructor
      • Property
      • Method
      • Interface
      • Interface with type parameter
      • Enumeration
      • Inherited method

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/classes/default_export.ExportedClassName.html b/src/test/renderer/specs/classes/default_export.ExportedClassName.html index f31a3509e..5c7f494d7 100644 --- a/src/test/renderer/specs/classes/default_export.ExportedClassName.html +++ b/src/test/renderer/specs/classes/default_export.ExportedClassName.html @@ -1,9 +1,9 @@ ExportedClassName | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This class is exported under a different name. The exported name is "ExportedClassName"

      -
      export {NotExportedClassName as ExportedClassName};
      +						
      export {NotExportedClassName as ExportedClassName};
       
      -

      Hierarchy

      • ExportedClassName

      Index

      Constructors

      constructor

      • +

      Hierarchy

      • ExportedClassName

      Index

      Constructors

      constructor

      • This is the constructor of the NotExportedClassName class.

        Returns ExportedClassName

      Properties

      notExportedProperty

      notExportedProperty: string

      Property of NotExportedClassName class.

      diff --git a/src/test/renderer/specs/classes/default_export.default.html b/src/test/renderer/specs/classes/default_export.default.html index 3b3f89f85..909b4e46c 100644 --- a/src/test/renderer/specs/classes/default_export.default.html +++ b/src/test/renderer/specs/classes/default_export.default.html @@ -1,8 +1,8 @@ default | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This class is exported via es6 export syntax.

      -
      export default class DefaultExportedClass
      +						
      export default class DefaultExportedClass
       
      -

      Hierarchy

      • default

      Index

      Constructors

      constructor

      • +

      Hierarchy

      • default

      Index

      Constructors

      constructor

      • This is the constructor of the default exported class.

        Returns default

      Properties

      exportedProperty

      exportedProperty: string

      Property of default exported class.

      diff --git a/src/test/renderer/specs/classes/flattened.FlattenedClass.html b/src/test/renderer/specs/classes/flattened.FlattenedClass.html index 6898da733..e7f7c54c6 100644 --- a/src/test/renderer/specs/classes/flattened.FlattenedClass.html +++ b/src/test/renderer/specs/classes/flattened.FlattenedClass.html @@ -4,10 +4,10 @@

      A constructor that accepts an option object defined inline.

      Parameters

      • options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }

        The inline typed options object.

        -
        • Optional anotherValue?: string

          Another value on the options object parameter.

          -
        • Optional moreOptions?: { moreValues: number }

          A typed child object of the options object.

          -
          • moreValues: number
        • Optional value?: string

          A value on the options object parameter.

          -

      Returns FlattenedClass

      Properties

      callback

      callback: (param: number, optionalParam?: string) => string
      +
      • Optional anotherValue?: string

        Another value on the options object parameter.

        +
      • Optional moreOptions?: { moreValues: number }

        A typed child object of the options object.

        +
        • moreValues: number
      • Optional value?: string

        A value on the options object parameter.

        +

      Returns FlattenedClass

      Properties

      callback

      callback: (param: number, optionalParam?: string) => string

      A member that holds a callback that requires a typed function signature.

      Type declaration

        • (param: number, optionalParam?: string): string
        • A member that holds a callback that requires a typed function signature.

          @@ -20,12 +20,12 @@
          see

          https://github.com/sebastian-lenz/typedoc/issues/27

          Type declaration

            • Simple call signature.

              -

              Returns number

              The current value.

              -
            • +

              Returns number

              The current value.

              +
            • Call signature with parameters.

              -

              Parameters

              • value: number

                The desired value.

                -

              Returns FlattenedClass

              The calling Foo.

              -

      options

      options: { anotherValue?: string; emptyObject: {}; moreOptions?: { moreValues: number }; value?: string }
      +

      Parameters

      • value: number

        The desired value.

        +

      Returns FlattenedClass

      The calling Foo.

      +

      options

      options: { anotherValue?: string; emptyObject: {}; moreOptions?: { moreValues: number }; value?: string }

      A member that accepts an option object defined inline.

      param

      A value on the options object parameter.

      param

      Another value on the options object parameter.

      diff --git a/src/test/renderer/specs/classes/single_export.export_.html b/src/test/renderer/specs/classes/single_export.export_.html index acd01804a..7d483a98c 100644 --- a/src/test/renderer/specs/classes/single_export.export_.html +++ b/src/test/renderer/specs/classes/single_export.export_.html @@ -1,8 +1,8 @@ export= | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      This class is exported by being assigned to ´export´.

      -
      export = SingleExportedClass;
      +						
      export = SingleExportedClass;
       
      -

      Hierarchy

      • export=

      Index

      Constructors

      constructor

      • +

      Hierarchy

      • export=

      Index

      Constructors

      constructor

      • This is the constructor of the exported class.

        Returns export=

      Properties

      exportedProperty

      exportedProperty: string

      Property of exported class.

      diff --git a/src/test/renderer/specs/enums/enumerations.Size-1.html b/src/test/renderer/specs/enums/enumerations.Size-1.html index 8326979f0..a616767e2 100644 --- a/src/test/renderer/specs/enums/enumerations.Size-1.html +++ b/src/test/renderer/specs/enums/enumerations.Size-1.html @@ -1,7 +1,7 @@ Size | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Enumeration Size

      This is a enumeration extended by a module.

      -

      You should see both the enum members and the module members.

      -

      Index

      Enumeration members

      Enumeration members

      Large

      Large: = 2
      +

      You should see both the enum members and the module members.

      +

      Index

      Enumeration members

      Enumeration members

      Large

      Large: = 2

      A simple enum member.

      Medium

      Medium: = 1

      A simple enum member.

      diff --git a/src/test/renderer/specs/interfaces/classes.NameInterface.html b/src/test/renderer/specs/interfaces/classes.NameInterface.html index 095a8f0dc..610464391 100644 --- a/src/test/renderer/specs/interfaces/classes.NameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.NameInterface.html @@ -1,6 +1,6 @@ NameInterface | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface NameInterface

      This is a simple interface.

      -

      Links - these should all point to the name property:

      +

      Links - these should all point to the name property:

      -

      Hierarchy

      Implemented by

      Index

      Properties

      Methods

      Properties

      name

      name: string
      +

      Hierarchy

      Implemented by

      Index

      Properties

      Methods

      Properties

      name

      name: string

      This is a interface member of INameInterface.

      -

      It should be inherited by all subinterfaces.

      +

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      -

      Methods

      getName

      • getName(): string
      • +

      Methods

      getName

      • getName(): string
      • This is a interface function of INameInterface.

        -

        It should be inherited by all subinterfaces.

        -

        Returns string

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Property
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      It should be inherited by all subinterfaces.

      +

      Returns string

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Property
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/classes.PrintInterface.html b/src/test/renderer/specs/interfaces/classes.PrintInterface.html index 36c5c5f96..7dda39b39 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintInterface.html @@ -2,5 +2,5 @@

      This is a simple interface.

      Hierarchy

      Index

      Methods

      Methods

      print

      • print(value: string): void
      • This is a interface function of IPrintInterface

        -

        It should be inherited by all subinterfaces.

        -

        Parameters

        • value: string

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      It should be inherited by all subinterfaces.

      +

      Parameters

      • value: string

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html index 786cc67c0..5e0719b12 100644 --- a/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html +++ b/src/test/renderer/specs/interfaces/classes.PrintNameInterface.html @@ -2,7 +2,7 @@

      This is a interface inheriting from two other interfaces.

      Hierarchy

      Implemented by

      Index

      Properties

      Methods

      Properties

      name

      name: string

      This is a interface member of INameInterface.

      -

      It should be inherited by all subinterfaces.

      +

      It should be inherited by all subinterfaces.

      Links - these should all point to this property on the base class

      -

      Methods

      getName

      • getName(): string

      Methods

      getName

      • getName(): string
      • This is a interface function of INameInterface.

        -

        It should be inherited by all subinterfaces.

        -

        Returns string

      print

      • print(value: string): void
      • +

        It should be inherited by all subinterfaces.

        +

        Returns string

      print

      • print(value: string): void
      • This is a interface function of IPrintInterface

        -

        It should be inherited by all subinterfaces.

        -

        Parameters

        • value: string

        Returns void

      printName

      • printName(): void
      • +

        It should be inherited by all subinterfaces.

        +

        Parameters

        • value: string

        Returns void

      printName

      • printName(): void
      • This is a interface function of IPrintNameInterface

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.A.html b/src/test/renderer/specs/interfaces/generics.A.html index 433b77d4d..1994e0dda 100644 --- a/src/test/renderer/specs/interfaces/generics.A.html +++ b/src/test/renderer/specs/interfaces/generics.A.html @@ -4,5 +4,5 @@

      The generic type parameter.

      Hierarchy

      Index

      Methods

      Methods

      getT

      • getT(): T
      • A generic member function.

        -

        Returns T

        A generic return value.

        -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Returns T

      A generic return value.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.AB.html b/src/test/renderer/specs/interfaces/generics.AB.html index 4231dffd9..0a47b67c6 100644 --- a/src/test/renderer/specs/interfaces/generics.AB.html +++ b/src/test/renderer/specs/interfaces/generics.AB.html @@ -5,11 +5,11 @@

      The leftover generic type parameter.

      Hierarchy

      Index

      Methods

      getC

      • getC(): boolean
      • A generic member function.

        -

        Returns boolean

        A generic return value.

        -

      getT

      • getT(): T
      • +

        Returns boolean

        A generic return value.

        +

      getT

      • getT(): T
      • A generic member function.

        -

        Returns T

        A generic return value.

        -

      setT

      • setT(value: T): void
      • +

        Returns T

        A generic return value.

        +

      setT

      • setT(value: T): void
      • A generic member function.

        -

        Parameters

        • value: T

          A generic parameter.

          -

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • value: T

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.ABNumber.html b/src/test/renderer/specs/interfaces/generics.ABNumber.html index ed95c6787..253efd980 100644 --- a/src/test/renderer/specs/interfaces/generics.ABNumber.html +++ b/src/test/renderer/specs/interfaces/generics.ABNumber.html @@ -2,11 +2,11 @@

      An interface extending a generic interface and setting its type parameter.

      Hierarchy

      • AB<number>
        • ABNumber

      Index

      Methods

      getC

      • getC(): boolean
      • A generic member function.

        -

        Returns boolean

        A generic return value.

        -

      getT

      • getT(): number
      • +

        Returns boolean

        A generic return value.

        +

      getT

      • getT(): number
      • A generic member function.

        -

        Returns number

        A generic return value.

        -

      setT

      • setT(value: number): void
      • +

        Returns number

        A generic return value.

        +

      setT

      • setT(value: number): void
      • A generic member function.

        -

        Parameters

        • value: number

          A generic parameter.

          -

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • value: number

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.ABString.html b/src/test/renderer/specs/interfaces/generics.ABString.html index 9a1da36e3..91a12d090 100644 --- a/src/test/renderer/specs/interfaces/generics.ABString.html +++ b/src/test/renderer/specs/interfaces/generics.ABString.html @@ -2,11 +2,11 @@

      An interface extending a generic interface and setting its type parameter.

      Hierarchy

      • AB<string>
        • ABString

      Index

      Methods

      getC

      • getC(): boolean
      • A generic member function.

        -

        Returns boolean

        A generic return value.

        -

      getT

      • getT(): string
      • +

        Returns boolean

        A generic return value.

        +

      getT

      • getT(): string
      • A generic member function.

        -

        Returns string

        A generic return value.

        -

      setT

      • setT(value: string): void
      • +

        Returns string

        A generic return value.

        +

      setT

      • setT(value: string): void
      • A generic member function.

        -

        Parameters

        • value: string

          A generic parameter.

          -

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • value: string

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/interfaces/generics.B.html b/src/test/renderer/specs/interfaces/generics.B.html index b9b8bf0bc..1bd875b3f 100644 --- a/src/test/renderer/specs/interfaces/generics.B.html +++ b/src/test/renderer/specs/interfaces/generics.B.html @@ -6,8 +6,8 @@

      The second generic type parameter.

      Hierarchy

      Index

      Methods

      Methods

      getC

      • getC(): C
      • A generic member function.

        -

        Returns C

        A generic return value.

        -

      setT

      • setT(value: T): void
      • +

        Returns C

        A generic return value.

        +

      setT

      • setT(value: T): void
      • A generic member function.

        -

        Parameters

        • value: T

          A generic parameter.

          -

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • value: T

        A generic parameter.

        +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Method
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/enumerations.Size.html b/src/test/renderer/specs/modules/enumerations.Size.html index 1aecca95b..66a5ad5a8 100644 --- a/src/test/renderer/specs/modules/enumerations.Size.html +++ b/src/test/renderer/specs/modules/enumerations.Size.html @@ -4,6 +4,6 @@

      A variable that is attached to an enumeration.

      Functions

      isSmall

      • isSmall(value: Size): boolean
      • A function that is attached to an enumeration.

        -

        Parameters

        • value: Size

          The value that should be tested.

          -

        Returns boolean

        TRUE when the given value equals Size.Small.

        -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • value: Size

        The value that should be tested.

        +

      Returns boolean

      TRUE when the given value equals Size.Small.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/flattened.html b/src/test/renderer/specs/modules/flattened.html index a6f4df700..b35d37887 100644 --- a/src/test/renderer/specs/modules/flattened.html +++ b/src/test/renderer/specs/modules/flattened.html @@ -1,16 +1,16 @@ flattened | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module flattened

      Index

      Functions

      flattenedCallback

      • flattenedCallback(callback: (param: number, optionalParam?: string) => string): void
      • A function that has a parameter that requires a typed function callback.

        -

        Parameters

        • callback: (param: number, optionalParam?: string) => string

          The typed function callback.

          -
            • (param: number, optionalParam?: string): string
            • Parameters

              • param: number

                A parameter of the typed function callback.

                -
              • Optional optionalParam: string

                An optional parameter of the typed function callback.

                -

              Returns string

        Returns void

      flattenedIndexSignature

      • flattenedIndexSignature(indexed: { test: string }): void
      • +

        Parameters

        • callback: (param: number, optionalParam?: string) => string

          The typed function callback.

          +
            • (param: number, optionalParam?: string): string
            • Parameters

              • param: number

                A parameter of the typed function callback.

                +
              • Optional optionalParam: string

                An optional parameter of the typed function callback.

                +

              Returns string

        Returns void

      flattenedIndexSignature

      • flattenedIndexSignature(indexed: { test: string }): void
      • A function that accepts an index signature parameter.

        -

        Parameters

        • indexed: { test: string }

          The index signature parameter.

          -
          • [index: number]: { name: string; value?: number }
            • name: string
            • Optional value?: number
          • test: string

            A property of the index signature instance.

            -

        Returns void

      flattenedParameter

      • flattenedParameter(options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }): void
      • +

        Parameters

        • indexed: { test: string }

          The index signature parameter.

          +
          • [index: number]: { name: string; value?: number }
            • name: string
            • Optional value?: number
          • test: string

            A property of the index signature instance.

            +

        Returns void

      flattenedParameter

      • flattenedParameter(options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }): void
      • A function that accepts an option object defined inline.

        -

        Parameters

        • options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }

          The inline typed options object.

          -
          • [name: string]: any
          • Optional anotherValue?: string

            Another value on the options object parameter.

            -
          • Optional moreOptions?: { moreValues: number }

            A typed child object of the options object.

            -
            • moreValues: number
          • Optional value?: string

            A value on the options object parameter.

            -

        Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Parameters

      • options: { anotherValue?: string; moreOptions?: { moreValues: number }; value?: string }

        The inline typed options object.

        +
        • [name: string]: any
        • Optional anotherValue?: string

          Another value on the options object parameter.

          +
        • Optional moreOptions?: { moreValues: number }

          A typed child object of the options object.

          +
          • moreValues: number
        • Optional value?: string

          A value on the options object parameter.

          +

      Returns void

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/functions.html b/src/test/renderer/specs/modules/functions.html index 3f4cd7ca8..0ba8ad154 100644 --- a/src/test/renderer/specs/modules/functions.html +++ b/src/test/renderer/specs/modules/functions.html @@ -5,51 +5,51 @@

      This is a simple exported function.

      Returns void

      functionWithArguments

      • functionWithArguments(paramZ: string, paramG: any, paramA: NameInterface): number
      • This is a function with multiple arguments and a return value.

        -

        Parameters

        • paramZ: string

          This is a string parameter.

          -
        • paramG: any

          This is a parameter flagged with any. +

          Parameters

          • paramZ: string

            This is a string parameter.

            +
          • paramG: any

            This is a parameter flagged with any. This sentence is placed in the next line.

            -
          • paramA: NameInterface

            This is a parameter pointing to an interface.

            +
          • paramA: NameInterface

            This is a parameter pointing to an interface.

            var value:BaseClass = new BaseClass('test');
             functionWithArguments('arg', 0, value);
             
            -

          Returns number

      functionWithDefaults

      • functionWithDefaults(valueA?: string, valueB?: number, valueC?: number, valueD?: boolean, valueE?: boolean): string
      • +

      Returns number

      functionWithDefaults

      • functionWithDefaults(valueA?: string, valueB?: number, valueC?: number, valueD?: boolean, valueE?: boolean): string
      • This is a function with a parameter that has a default value.

        -

        Parameters

        • valueA: string = "defaultValue"
        • valueB: number = 100
        • valueC: number = ...
        • valueD: boolean = true
        • valueE: boolean = false

        Returns string

        The input value or the default value.

        -

      functionWithDocLink

      • functionWithDocLink(): void
      • +

        Parameters

        • valueA: string = "defaultValue"
        • valueB: number = 100
        • valueC: number = ...
        • valueD: boolean = true
        • valueE: boolean = false

        Returns string

        The input value or the default value.

        +

      functionWithDocLink

      • functionWithDocLink(): void

      functionWithOptionalValue

      • functionWithOptionalValue(requiredParam: string, optionalParam?: string): void

      functionWithOptionalValue

      • functionWithOptionalValue(requiredParam: string, optionalParam?: string): void
      • This is a function with a parameter that is optional.

        -

        Parameters

        • requiredParam: string

          A normal parameter.

          -
        • Optional optionalParam: string

          An optional parameter.

          -

        Returns void

      functionWithRest

      • functionWithRest(...rest: string[]): string
      • +

        Parameters

        • requiredParam: string

          A normal parameter.

          +
        • Optional optionalParam: string

          An optional parameter.

          +

        Returns void

      functionWithRest

      • functionWithRest(...rest: string[]): string
      • This is a function with rest parameter.

        -

        Parameters

        • Rest ...rest: string[]

          Multiple strings.

          -

        Returns string

        The combined string.

        -

      genericFunction

      • genericFunction<T>(value: T): T
      • +

        Parameters

        • Rest ...rest: string[]

          Multiple strings.

          +

        Returns string

        The combined string.

        +

      genericFunction

      • genericFunction<T>(value: T): T
      • This is a generic function.

        -

        Type parameters

        • T

          The type parameter.

          -

        Parameters

        • value: T

          The typed value.

          -

        Returns T

        Returns the typed value.

        -

      moduleFunction

      • moduleFunction(arg: string): string
      • +

        Type parameters

        • T

          The type parameter.

          +

        Parameters

        • value: T

          The typed value.

          +

        Returns T

        Returns the typed value.

        +

      moduleFunction

      • moduleFunction(arg: string): string
      • This is a function that is extended by a module.

        -

        Parameters

        • arg: string

          An argument.

          -

        Returns string

      multipleSignatures

      • multipleSignatures(value: string): string
      • multipleSignatures(value: { name: string }): string
      • +

        Parameters

        • arg: string

          An argument.

          +

        Returns string

      multipleSignatures

      • multipleSignatures(value: string): string
      • multipleSignatures(value: { name: string }): string
      • This is the first signature of a function with multiple signatures.

        -

        Parameters

        • value: string

          The name value.

          -

        Returns string

      • +

        Parameters

        • value: string

          The name value.

          +

        Returns string

      • This is the second signature of a function with multiple signatures.

        -

        Parameters

        • value: { name: string }

          An object containing the name value.

          -
          • name: string

            A value of the object.

            -

        Returns string

      Let variableFunction

      • variableFunction(paramZ: string, paramG: any, paramA: NameInterface): number
      • +

        Parameters

        • value: { name: string }

          An object containing the name value.

          +
          • name: string

            A value of the object.

            +

        Returns string

      Let variableFunction

      • variableFunction(paramZ: string, paramG: any, paramA: NameInterface): number
      • This is a function with multiple arguments and a return value.

        -

        Parameters

        • paramZ: string

          This is a string parameter.

          -
        • paramG: any

          This is a parameter flagged with any. +

          Parameters

          • paramZ: string

            This is a string parameter.

            +
          • paramG: any

            This is a parameter flagged with any. This sentence is placed in the next line.

            -
          • paramA: NameInterface

            This is a parameter pointing to an interface.

            +
          • paramA: NameInterface

            This is a parameter pointing to an interface.

            var value:BaseClass = new BaseClass('test');
             functionWithArguments('arg', 0, value);
             
            -

          Returns number

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Returns number

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/generics.html b/src/test/renderer/specs/modules/generics.html index 698e21c35..31d0e199b 100644 --- a/src/test/renderer/specs/modules/generics.html +++ b/src/test/renderer/specs/modules/generics.html @@ -5,10 +5,10 @@

      Conditional type with infer

      Type parameters

      • T: any[]

      Functions

      doubleKey

      • doubleKey<T>(arg: T): {[ K in string as `${K}${K}`]: T[K] }
      • Type parameters

        • T

        Parameters

        • arg: T

        Returns {[ K in string as `${K}${K}`]: T[K] }

      getGenericArray

      • getGenericArray(): string[]
      • A function returning a generic array with type parameters.

        -

        Returns string[]

        The return value with type arguments.

        -

      testFunction

      • testFunction<T>(value: T): T
      • +

        Returns string[]

        The return value with type arguments.

        +

      testFunction

      • testFunction<T>(value: T): T
      • A generic function

        -

        Type parameters

        • T

          The generic type parameter.

          -

        Parameters

        • value: T

          A generic parameter.

          -

        Returns T

        A generic return value.

        -

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file +

      Type parameters

      • T

        The generic type parameter.

        +

      Parameters

      • value: T

        A generic parameter.

        +

      Returns T

      A generic return value.

      +

      Legend

      • Namespace
      • Variable
      • Function
      • Function with type parameter
      • Type alias
      • Type alias with type parameter
      • Interface
      • Interface with type parameter
      • Class
      • Class with type parameter
      • Enumeration

      Generated using TypeDoc

      \ No newline at end of file diff --git a/src/test/renderer/specs/modules/modules.html b/src/test/renderer/specs/modules/modules.html index 17e402af0..fa15c7e86 100644 --- a/src/test/renderer/specs/modules/modules.html +++ b/src/test/renderer/specs/modules/modules.html @@ -1,9 +1,9 @@ modules | typedoc
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Module modules

      This comment has a code block that is only marked by indentation.

      -
      @thisIsADecorator
      +						
      @thisIsADecorator
       class Foo {}
       
      -

      Index

      Type aliases

      NamedTuple

      NamedTuple: [name: string, optionalName?: number]

      Variables

      Let exportedGlobalVariable

      exportedGlobalVariable: string = "foo"
      +

      Index

      Type aliases

      NamedTuple

      NamedTuple: [name: string, optionalName?: number]

      Variables

      Let exportedGlobalVariable

      exportedGlobalVariable: string = "foo"

      An exported global variable.

      Let objectLiteral

      objectLiteral: { valueA: number; valueB: boolean; valueX: { valueA: number[]; valueY: (z: string) => { a: string; b: string }; valueZ: string }; valueY: () => string; valueZ: string } = ...

      An object literal.

      From 475ed99e5958349b3606eea8a03db4570ed631ba Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Thu, 29 Jul 2021 09:08:00 -0400 Subject: [PATCH 30/33] update build scripts to run webpack --- package.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a9b66b8fd..35d7e4780 100644 --- a/package.json +++ b/package.json @@ -79,14 +79,16 @@ "test": "nyc --reporter=html --reporter=text-summary mocha --timeout=10000 'dist/test/**/*.test.js' --exclude 'dist/test/packages/**'", "prerebuild_specs": "npm run pretest", "rebuild_specs": "node scripts/rebuild_specs.js", - "build": "tsc --project .", - "build:prod": "tsc --project . --sourceMap false", + "build": "npm run build:tsc && npm run build:themes", + "build:tsc": "tsc --project .", + "build:themes": "webpack --config ./src/lib/output/themes/webpack.config.js", + "build:prod": "npm run build:prod:tsc && npm run build:themes", + "build:prod:tsc": "tsc --project . --sourceMap false", "build_and_test": "npm run build && npm run test", "lint": "eslint . && prettier --check .", "prepublishOnly": "node scripts/set_strict.js false && npm run build:prod && npm test", "postpublish": "node scripts/set_strict.js true", "clean": "rm -rf node_modules package-lock.json lib coverage", - "build:themes": "webpack --config ./src/lib/output/themes/webpack.config.js", "test:visual-regression-report": "node ./dist/test/capture-screenshots.js && reg-suit compare", "test:visual-regression-report:copy-actual-to-expected": "mkdir -p ./dist/tmp/.reg/expected/foo && rm -r ./dist/tmp/.reg/expected/* && cp -r ./dist/tmp/__screenshots__/* ./dist/tmp/.reg/expected/" }, From b3ea1ff2196f2a0cc64dcd980f6eafdf136c756c Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Thu, 29 Jul 2021 09:30:19 -0400 Subject: [PATCH 31/33] fix linting --- .eslintrc | 3 +++ .prettierrc.json | 3 --- package.json | 1 + src/test/capture-screenshots.ts | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 .prettierrc.json diff --git a/.eslintrc b/.eslintrc index 10e7aa6fb..8246a0e9d 100644 --- a/.eslintrc +++ b/.eslintrc @@ -19,6 +19,9 @@ "examples", "dist", "coverage", + "src/lib/output/themes/webpack.*.js", + "src/lib/output/themes/default/assets", + "src/lib/output/themes/minimal/assets", // Would be nice to lint these, but they shouldn't be included in the project, // so we need a second eslint config file. "src/test/converter", diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 9fcfde7a6..000000000 --- a/.prettierrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "printWidth": 120 -} diff --git a/package.json b/package.json index 35d7e4780..68e734266 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "mocha": "^9.0.0", "nyc": "^15.1.0", "p-queue": "^6.6.2", + "prettier": "2.3.1", "puppeteer": "^10.1.0", "reg-suit": "^0.10.16", "resolve-url-loader": "^3.1.2", diff --git a/src/test/capture-screenshots.ts b/src/test/capture-screenshots.ts index eb69cca88..e9f261eb1 100644 --- a/src/test/capture-screenshots.ts +++ b/src/test/capture-screenshots.ts @@ -15,7 +15,7 @@ async function main() { const queue = new PQueue({autoStart: true, concurrency}); for(const file of glob(globPattern, {cwd: baseDirectory})) { - queue.add(async () => { + void queue.add(async () => { const absPath = Path.resolve(baseDirectory, file); const outputPath = Path.resolve(outputDirectory, Path.format({...Path.parse(file), ext: '.png', base: undefined})); fs.mkdirSync(Path.dirname(outputPath), {recursive: true}); From 1963574474f788c7a34938dd587b3ad88d88a399 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Thu, 29 Jul 2021 09:40:40 -0400 Subject: [PATCH 32/33] linting --- .prettierrc.json | 1 + package-lock.json | 19 + regconfig.json | 20 +- src/lib/models/reflections/abstract.ts | 4 +- src/lib/output/events.ts | 4 +- src/lib/output/helpers/wbr.tsx | 4 +- src/lib/output/models/UrlMapping.ts | 6 +- src/lib/output/renderer.ts | 13 +- src/lib/output/themes/MarkedPlugin.ts | 4 +- .../output/themes/default/DefaultTheme.tsx | 66 +-- .../themes/default/DefaultThemePartials.tsx | 1 - .../default/DefaultThemeRenderContext.tsx | 23 +- .../assets/js/src/typedoc/Application.ts | 4 +- .../js/src/typedoc/components/Filter.ts | 7 +- .../js/src/typedoc/components/Search.ts | 2 +- .../js/src/typedoc/components/Toggle.ts | 2 +- .../assets/js/src/typedoc/utils/pointer.ts | 7 +- .../output/themes/default/layouts/default.hbs | 50 -- .../output/themes/default/layouts/default.tsx | 188 +++++--- .../themes/default/partials/analytics.hbs | 11 - .../themes/default/partials/analytics.tsx | 32 +- .../themes/default/partials/breadcrumb.hbs | 16 - .../themes/default/partials/breadcrumb.tsx | 49 +- .../themes/default/partials/comment.hbs | 22 - .../themes/default/partials/comment.tsx | 88 ++-- .../output/themes/default/partials/footer.hbs | 21 - .../output/themes/default/partials/footer.tsx | 85 ++-- .../output/themes/default/partials/header.hbs | 70 --- .../output/themes/default/partials/header.tsx | 245 ++++++---- .../themes/default/partials/hierarchy.hbs | 17 - .../themes/default/partials/hierarchy.tsx | 37 +- .../output/themes/default/partials/index.hbs | 50 -- .../output/themes/default/partials/index.tsx | 224 +++++---- .../default/partials/member.declaration.hbs | 36 -- .../default/partials/member.declaration.tsx | 104 ++-- .../default/partials/member.getterSetter.hbs | 37 -- .../default/partials/member.getterSetter.tsx | 101 ++-- .../output/themes/default/partials/member.hbs | 24 - .../default/partials/member.reference.hbs | 16 - .../default/partials/member.reference.tsx | 79 ++-- .../partials/member.signature.body.hbs | 56 --- .../partials/member.signature.body.tsx | 188 ++++---- .../partials/member.signature.title.hbs | 41 -- .../partials/member.signature.title.tsx | 120 +++-- .../default/partials/member.signatures.hbs | 13 - .../default/partials/member.signatures.tsx | 51 +- .../default/partials/member.sources.hbs | 22 - .../default/partials/member.sources.tsx | 91 ++-- .../output/themes/default/partials/member.tsx | 99 ++-- .../themes/default/partials/members.group.hbs | 21 - .../themes/default/partials/members.group.tsx | 75 ++- .../themes/default/partials/members.hbs | 20 - .../themes/default/partials/members.tsx | 63 ++- .../themes/default/partials/navigation.hbs | 26 - .../themes/default/partials/navigation.tsx | 84 ++-- .../themes/default/partials/parameter.hbs | 134 ------ .../themes/default/partials/parameter.tsx | 444 +++++++++++------- .../output/themes/default/partials/toc.hbs | 10 - .../themes/default/partials/toc.root.hbs | 18 - .../themes/default/partials/toc.root.tsx | 44 +- .../output/themes/default/partials/toc.tsx | 48 +- .../partials/type-inline-partials/array.hbs | 5 - .../partials/type-inline-partials/array.tsx | 21 +- .../type-inline-partials/conditional.hbs | 22 - .../type-inline-partials/conditional.tsx | 64 +-- .../type-inline-partials/indexedAccess.hbs | 9 - .../type-inline-partials/indexedAccess.tsx | 29 +- .../type-inline-partials/inferred.hbs | 2 - .../type-inline-partials/inferred.tsx | 15 +- .../type-inline-partials/intersection.hbs | 13 - .../type-inline-partials/intersection.tsx | 52 +- .../type-inline-partials/intrinsic.hbs | 2 - .../type-inline-partials/intrinsic.tsx | 14 +- .../partials/type-inline-partials/literal.hbs | 2 - .../partials/type-inline-partials/literal.tsx | 16 +- .../partials/type-inline-partials/mapped.hbs | 42 -- .../partials/type-inline-partials/mapped.tsx | 87 ++-- .../named-tuple-member.hbs | 10 - .../named-tuple-member.tsx | 37 +- .../type-inline-partials/optional.hbs | 5 - .../type-inline-partials/optional.tsx | 21 +- .../type-inline-partials/predicate.hbs | 11 - .../type-inline-partials/predicate.tsx | 39 +- .../partials/type-inline-partials/query.hbs | 5 - .../partials/type-inline-partials/query.tsx | 21 +- .../type-inline-partials/reference.hbs | 20 - .../type-inline-partials/reference.tsx | 86 ++-- .../type-inline-partials/reflection.hbs | 91 ---- .../type-inline-partials/reflection.tsx | 322 ++++++++----- .../partials/type-inline-partials/rest.hbs | 5 - .../partials/type-inline-partials/rest.tsx | 21 +- .../type-inline-partials/template-literal.hbs | 16 - .../type-inline-partials/template-literal.tsx | 43 +- .../partials/type-inline-partials/tuple.hbs | 9 - .../partials/type-inline-partials/tuple.tsx | 29 +- .../type-inline-partials/typeOperator.hbs | 5 - .../type-inline-partials/typeOperator.tsx | 21 +- .../type-inline-partials/typeParameter.hbs | 2 - .../type-inline-partials/typeParameter.tsx | 14 +- .../partials/type-inline-partials/union.hbs | 13 - .../partials/type-inline-partials/union.tsx | 52 +- .../partials/type-inline-partials/unknown.hbs | 0 .../partials/type-inline-partials/unknown.tsx | 6 +- .../output/themes/default/partials/type.hbs | 15 - .../output/themes/default/partials/type.tsx | 37 +- .../themes/default/partials/typeAndParent.hbs | 43 -- .../themes/default/partials/typeAndParent.tsx | 165 ++++--- .../default/partials/typeParameters.hbs | 17 - .../default/partials/typeParameters.tsx | 76 +-- .../output/themes/default/templates/index.hbs | 3 - .../output/themes/default/templates/index.tsx | 21 +- .../themes/default/templates/reflection.hbs | 79 ---- .../themes/default/templates/reflection.tsx | 293 +++++++----- src/lib/output/themes/lib.tsx | 85 +++- src/lib/output/themes/minimal/MinimalTheme.ts | 8 +- .../output/themes/minimal/layouts/default.hbs | 43 -- .../output/themes/minimal/layouts/default.tsx | 115 +++-- .../output/themes/minimal/partials/header.hbs | 38 -- .../output/themes/minimal/partials/header.tsx | 141 ++++-- .../output/themes/minimal/partials/member.hbs | 31 -- .../output/themes/minimal/partials/member.tsx | 108 +++-- .../output/themes/minimal/templates/index.hbs | 16 - .../output/themes/minimal/templates/index.tsx | 71 +-- src/lib/output/themes/webpack.common.js | 4 +- src/lib/output/themes/webpack.default.js | 7 +- src/lib/output/themes/webpack.minimal.js | 7 +- src/test/capture-screenshots.ts | 63 +-- src/test/renderer.test.ts | 8 +- tsconfig.json | 5 +- 129 files changed, 2963 insertions(+), 3292 deletions(-) create mode 100644 .prettierrc.json delete mode 100644 src/lib/output/themes/default/layouts/default.hbs delete mode 100644 src/lib/output/themes/default/partials/analytics.hbs delete mode 100644 src/lib/output/themes/default/partials/breadcrumb.hbs delete mode 100644 src/lib/output/themes/default/partials/comment.hbs delete mode 100644 src/lib/output/themes/default/partials/footer.hbs delete mode 100644 src/lib/output/themes/default/partials/header.hbs delete mode 100644 src/lib/output/themes/default/partials/hierarchy.hbs delete mode 100644 src/lib/output/themes/default/partials/index.hbs delete mode 100644 src/lib/output/themes/default/partials/member.declaration.hbs delete mode 100644 src/lib/output/themes/default/partials/member.getterSetter.hbs delete mode 100644 src/lib/output/themes/default/partials/member.hbs delete mode 100644 src/lib/output/themes/default/partials/member.reference.hbs delete mode 100644 src/lib/output/themes/default/partials/member.signature.body.hbs delete mode 100644 src/lib/output/themes/default/partials/member.signature.title.hbs delete mode 100644 src/lib/output/themes/default/partials/member.signatures.hbs delete mode 100644 src/lib/output/themes/default/partials/member.sources.hbs delete mode 100644 src/lib/output/themes/default/partials/members.group.hbs delete mode 100644 src/lib/output/themes/default/partials/members.hbs delete mode 100644 src/lib/output/themes/default/partials/navigation.hbs delete mode 100644 src/lib/output/themes/default/partials/parameter.hbs delete mode 100644 src/lib/output/themes/default/partials/toc.hbs delete mode 100644 src/lib/output/themes/default/partials/toc.root.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/array.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/conditional.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/inferred.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/intersection.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/intrinsic.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/literal.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/mapped.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/optional.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/predicate.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/query.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/reference.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/reflection.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/rest.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/template-literal.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/tuple.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/typeOperator.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/typeParameter.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/union.hbs delete mode 100644 src/lib/output/themes/default/partials/type-inline-partials/unknown.hbs delete mode 100644 src/lib/output/themes/default/partials/type.hbs delete mode 100644 src/lib/output/themes/default/partials/typeAndParent.hbs delete mode 100644 src/lib/output/themes/default/partials/typeParameters.hbs delete mode 100644 src/lib/output/themes/default/templates/index.hbs delete mode 100644 src/lib/output/themes/default/templates/reflection.hbs delete mode 100644 src/lib/output/themes/minimal/layouts/default.hbs delete mode 100644 src/lib/output/themes/minimal/partials/header.hbs delete mode 100644 src/lib/output/themes/minimal/partials/member.hbs delete mode 100644 src/lib/output/themes/minimal/templates/index.hbs diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/package-lock.json b/package-lock.json index f99c3b253..cdefb7b5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "mocha": "^9.0.0", "nyc": "^15.1.0", "p-queue": "^6.6.2", + "prettier": "2.3.1", "puppeteer": "^10.1.0", "reg-suit": "^0.10.16", "resolve-url-loader": "^3.1.2", @@ -6375,6 +6376,18 @@ "node": ">=0.10.0" } }, + "node_modules/prettier": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -14120,6 +14133,12 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, + "prettier": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", diff --git a/regconfig.json b/regconfig.json index a32e2487f..7d9980d3c 100644 --- a/regconfig.json +++ b/regconfig.json @@ -1,12 +1,12 @@ { - "core": { - "workingDir": "dist/tmp/.reg", - "actualDir": "dist/tmp/__screenshots__", - "thresholdRate": 0, - "addIgnore": true, - "ximgdiff": { - "invocationType": "client" - } - }, - "plugins": {} + "core": { + "workingDir": "dist/tmp/.reg", + "actualDir": "dist/tmp/__screenshots__", + "thresholdRate": 0, + "addIgnore": true, + "ximgdiff": { + "invocationType": "client" + } + }, + "plugins": {} } diff --git a/src/lib/models/reflections/abstract.ts b/src/lib/models/reflections/abstract.ts index cfe2c4d21..1bd960cb5 100644 --- a/src/lib/models/reflections/abstract.ts +++ b/src/lib/models/reflections/abstract.ts @@ -217,9 +217,7 @@ export class ReflectionFlags extends Array { } get isExported() { - // TODO pretty sure this is incorrect implementation - // return this.hasFlag(ReflectionFlag.ExportAssignment); - return false; // TODO what is this supposed to do? + return true; } setFlag(flag: ReflectionFlag, set: boolean) { diff --git a/src/lib/output/events.ts b/src/lib/output/events.ts index b9a102618..f00e22e7d 100644 --- a/src/lib/output/events.ts +++ b/src/lib/output/events.ts @@ -65,7 +65,9 @@ export class RendererEvent extends Event { * @param mapping The mapping that defines the generated [[PageEvent]] state. * @returns A newly created [[PageEvent]] instance. */ - public createPageEvent(mapping: UrlMapping): PageEvent { + public createPageEvent( + mapping: UrlMapping + ): PageEvent { const event = new PageEvent(PageEvent.BEGIN); event.project = this.project; event.settings = this.settings; diff --git a/src/lib/output/helpers/wbr.tsx b/src/lib/output/helpers/wbr.tsx index 9fe91bda2..d7b08ac73 100644 --- a/src/lib/output/helpers/wbr.tsx +++ b/src/lib/output/helpers/wbr.tsx @@ -1,4 +1,4 @@ -import * as React from 'react'; +import * as React from "react"; /** * Insert word break tags ```` into the given string. @@ -14,7 +14,7 @@ export function wbr(str: string): (string | React.ReactElement)[] { const re = /[\s\S]*?(?:([^_-][_-])(?=[^_-])|([^A-Z])(?=[A-Z][^A-Z]))/g; let match: RegExpExecArray | null; let i = 0; - while((match = re.exec(str))) { + while ((match = re.exec(str))) { ret.push(match[0]); ret.push(); i += match[0].length; diff --git a/src/lib/output/models/UrlMapping.ts b/src/lib/output/models/UrlMapping.ts index 9f77910c2..18c5860db 100644 --- a/src/lib/output/models/UrlMapping.ts +++ b/src/lib/output/models/UrlMapping.ts @@ -11,7 +11,11 @@ export class UrlMapping { template: RenderTemplate>; - constructor(url: string, model: Model, template: RenderTemplate>) { + constructor( + url: string, + model: Model, + template: RenderTemplate> + ) { this.url = url; this.model = model; this.template = template; diff --git a/src/lib/output/renderer.ts b/src/lib/output/renderer.ts index bf10dc371..57afaebf2 100644 --- a/src/lib/output/renderer.ts +++ b/src/lib/output/renderer.ts @@ -24,7 +24,7 @@ import { Component, ChildableComponent } from "../utils/component"; import { BindOption } from "../utils"; import { loadHighlighter } from "../utils/highlighter"; import { Theme as ShikiTheme } from "shiki"; -import {renderToStaticMarkup} from 'react-dom/server'; +import { renderToStaticMarkup } from "react-dom/server"; /** * The renderer processes a [[ProjectReflection]] using a [[BaseTheme]] instance and writes @@ -145,7 +145,10 @@ export class Renderer extends ChildableComponent< // Theme must be set as this is only called in render, and render ensures theme is set. const templateOutput = page.template(page); - page.contents = typeof templateOutput === 'string' ? templateOutput : renderToStaticMarkup(templateOutput); + page.contents = + typeof templateOutput === "string" + ? templateOutput + : renderToStaticMarkup(templateOutput); this.trigger(PageEvent.END, page); if (page.isDefaultPrevented) { @@ -287,7 +290,7 @@ export class Renderer extends ChildableComponent< * @returns The path to the theme directory. */ static getThemeDirectory(): string { - return resolve(__dirname, './themes/bin'); + return resolve(__dirname, "./themes/bin"); } /** @@ -300,5 +303,5 @@ export class Renderer extends ChildableComponent< } } -import "./plugins";import { resolve } from "path"; - +import "./plugins"; +import { resolve } from "path"; diff --git a/src/lib/output/themes/MarkedPlugin.ts b/src/lib/output/themes/MarkedPlugin.ts index ec83ab844..7f5122d83 100644 --- a/src/lib/output/themes/MarkedPlugin.ts +++ b/src/lib/output/themes/MarkedPlugin.ts @@ -42,7 +42,7 @@ customMarkedRenderer.heading = (text, level, _, slugger) => { * ``` */ -@Component({ name: 'marked' }) +@Component({ name: "marked" }) export class MarkedPlugin extends ContextAwareRendererComponent { @BindOption("includes") includeSource!: string; @@ -129,7 +129,7 @@ output file : // allowProtoPropertiesByDefault: true, // }); // } else { - return contents; + return contents; // } } else { this.application.logger.warn( diff --git a/src/lib/output/themes/default/DefaultTheme.tsx b/src/lib/output/themes/default/DefaultTheme.tsx index cbf76c99d..5d3101415 100644 --- a/src/lib/output/themes/default/DefaultTheme.tsx +++ b/src/lib/output/themes/default/DefaultTheme.tsx @@ -18,7 +18,6 @@ import { MarkedPlugin } from "../../plugins"; import { DefaultThemeRenderContext } from "./DefaultThemeRenderContext"; import { renderToStaticMarkup } from "react-dom/server"; - /** * Defines a mapping of a [[Models.Kind]] to a template file. * @@ -52,25 +51,32 @@ export interface TemplateMapping { * [[BaseTheme]] implementation, this theme class will be used. */ export class DefaultTheme extends Theme { - protected _markedPlugin: MarkedPlugin; protected _renderContext?: DefaultThemeRenderContext; getRenderContext(_pageEvent: PageEvent) { - if(!this._renderContext) { - this._renderContext = new DefaultThemeRenderContext(this._markedPlugin); + if (!this._renderContext) { + this._renderContext = new DefaultThemeRenderContext( + this._markedPlugin + ); } return this._renderContext; } reflectionTemplate = (pageEvent: PageEvent) => { - return this.getRenderContext(pageEvent).partials.reflectionTemplate(pageEvent); - } + return this.getRenderContext(pageEvent).partials.reflectionTemplate( + pageEvent + ); + }; indexTemplate = (pageEvent: PageEvent) => { - return this.getRenderContext(pageEvent).partials.indexTemplate(pageEvent); - } + return this.getRenderContext(pageEvent).partials.indexTemplate( + pageEvent + ); + }; defaultLayoutTemplate = (pageEvent: PageEvent) => { - return this.getRenderContext(pageEvent).partials.defaultLayout(pageEvent); - } + return this.getRenderContext(pageEvent).partials.defaultLayout( + pageEvent + ); + }; /** * Mappings of reflections kinds to templates used by this theme. @@ -112,19 +118,14 @@ export class DefaultTheme extends Theme { */ constructor(renderer: Renderer, basePath: string) { super(renderer, basePath); - this._markedPlugin = renderer.getComponent('marked') as MarkedPlugin; + this._markedPlugin = renderer.getComponent("marked") as MarkedPlugin; this.listenTo( renderer, RendererEvent.BEGIN, this.onRendererBegin, 1024 ); - this.listenTo( - renderer, - PageEvent.END, - this.onRendererEndPage, - 1024 - ); + this.listenTo(renderer, PageEvent.END, this.onRendererEndPage, 1024); } /** @@ -163,13 +164,25 @@ export class DefaultTheme extends Theme { if (false == hasReadme(this.application.options.getValue("readme"))) { project.url = "index.html"; - urls.push(new UrlMapping("index.html", project, this.reflectionTemplate)); + urls.push( + new UrlMapping( + "index.html", + project, + this.reflectionTemplate + ) + ); } else { project.url = "modules.html"; urls.push( - new UrlMapping("modules.html", project, this.reflectionTemplate) + new UrlMapping( + "modules.html", + project, + this.reflectionTemplate + ) + ); + urls.push( + new UrlMapping("index.html", project, this.indexTemplate) ); - urls.push(new UrlMapping("index.html", project, this.indexTemplate)); } project.children?.forEach((child: Reflection) => { @@ -227,7 +240,10 @@ export class DefaultTheme extends Theme { private onRendererEndPage(page: PageEvent) { const layout = this.defaultLayoutTemplate; const templateOutput = layout(page); - page.contents = typeof templateOutput === 'string' ? templateOutput : '' + renderToStaticMarkup(templateOutput); + page.contents = + typeof templateOutput === "string" + ? templateOutput + : "" + renderToStaticMarkup(templateOutput); } /** @@ -265,12 +281,8 @@ export class DefaultTheme extends Theme { * @param reflection The reflection whose mapping should be resolved. * @returns The found mapping or undefined if no mapping could be found. */ - getMapping( - reflection: DeclarationReflection - ): TemplateMapping | undefined { - return this.MAPPINGS.find((mapping) => - reflection.kindOf(mapping.kind) - ); + getMapping(reflection: DeclarationReflection): TemplateMapping | undefined { + return this.MAPPINGS.find((mapping) => reflection.kindOf(mapping.kind)); } /** diff --git a/src/lib/output/themes/default/DefaultThemePartials.tsx b/src/lib/output/themes/default/DefaultThemePartials.tsx index 946a078e2..5a4c8781e 100644 --- a/src/lib/output/themes/default/DefaultThemePartials.tsx +++ b/src/lib/output/themes/default/DefaultThemePartials.tsx @@ -48,7 +48,6 @@ import { union } from "./partials/type-inline-partials/union"; import { unknown } from "./partials/type-inline-partials/unknown"; import { DefaultThemeRenderContext } from "./DefaultThemeRenderContext"; - export class DefaultThemePartials { constructor(protected bindings: DefaultThemeRenderContext) {} private hack() { diff --git a/src/lib/output/themes/default/DefaultThemeRenderContext.tsx b/src/lib/output/themes/default/DefaultThemeRenderContext.tsx index f56f67909..18ccb15be 100644 --- a/src/lib/output/themes/default/DefaultThemeRenderContext.tsx +++ b/src/lib/output/themes/default/DefaultThemeRenderContext.tsx @@ -1,6 +1,6 @@ import { DefaultThemePartials } from "./DefaultThemePartials"; import { MarkedPlugin } from "../MarkedPlugin"; -import * as React from 'react'; +import * as React from "react"; /** * Themes can choose to create a single render context shared across all pages, @@ -11,7 +11,9 @@ export class DefaultThemeRenderContext { markedHelpers: MarkedPlugin; partials: DefaultThemePartials; /** @deprecated TODO remove this */ - get __partials__() {return this.partials} + get __partials__() { + return this.partials; + } constructor(markedHelpers: MarkedPlugin) { this.markedHelpers = markedHelpers; @@ -23,11 +25,11 @@ export class DefaultThemeRenderContext { relativeURL = (url: string | undefined) => { return url ? this.markedHelpers.getRelativeUrl(url) : url; - } + }; markdown = (md: string | undefined) => { - return md ? this.markedHelpers.parseMarkdown(md) : ''; - } + return md ? this.markedHelpers.parseMarkdown(md) : ""; + }; /** @deprecated */ Markdown = (props: { children: string | undefined }) => { @@ -35,6 +37,13 @@ export class DefaultThemeRenderContext { // console.log(markdown(props.children)); // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore - return
      ; - } + return ( +
      + ); + }; } diff --git a/src/lib/output/themes/default/assets/js/src/typedoc/Application.ts b/src/lib/output/themes/default/assets/js/src/typedoc/Application.ts index 65489915a..6908edb21 100644 --- a/src/lib/output/themes/default/assets/js/src/typedoc/Application.ts +++ b/src/lib/output/themes/default/assets/js/src/typedoc/Application.ts @@ -43,9 +43,9 @@ export class Application { public createComponents(context: HTMLElement) { components.forEach((c) => { context.querySelectorAll(c.selector).forEach((el) => { - if (!el.dataset['hasInstance']) { + if (!el.dataset["hasInstance"]) { new c.constructor({ el: el }); - el.dataset['hasInstance'] = String(true); + el.dataset["hasInstance"] = String(true); } }); }); diff --git a/src/lib/output/themes/default/assets/js/src/typedoc/components/Filter.ts b/src/lib/output/themes/default/assets/js/src/typedoc/components/Filter.ts index 1d3f30038..f644b8a97 100644 --- a/src/lib/output/themes/default/assets/js/src/typedoc/components/Filter.ts +++ b/src/lib/output/themes/default/assets/js/src/typedoc/components/Filter.ts @@ -101,7 +101,7 @@ class FilterItemSelect extends FilterItem { this.select.querySelectorAll("li").forEach((el) => { el.addEventListener(pointerUp, (e) => { select.classList.remove("active"); - this.setValue((e.target as HTMLElement).dataset['value'] || ""); + this.setValue((e.target as HTMLElement).dataset["value"] || ""); }); }); @@ -120,9 +120,8 @@ class FilterItemSelect extends FilterItem { const selected = this.select.querySelector( 'li[data-value="' + newValue + '"]' ); - const label = this.select.querySelector( - ".tsd-select-label" - ); + const label = + this.select.querySelector(".tsd-select-label"); if (selected && label) { selected.classList.add("selected"); diff --git a/src/lib/output/themes/default/assets/js/src/typedoc/components/Search.ts b/src/lib/output/themes/default/assets/js/src/typedoc/components/Search.ts index f3a0fb7c9..60b8bbad8 100644 --- a/src/lib/output/themes/default/assets/js/src/typedoc/components/Search.ts +++ b/src/lib/output/themes/default/assets/js/src/typedoc/components/Search.ts @@ -75,7 +75,7 @@ export function initSearch() { }); const state: SearchState = { - base: searchEl.dataset['base'] + "/", + base: searchEl.dataset["base"] + "/", }; bindEvents(searchEl, results, field, state); diff --git a/src/lib/output/themes/default/assets/js/src/typedoc/components/Toggle.ts b/src/lib/output/themes/default/assets/js/src/typedoc/components/Toggle.ts index 19ad0894e..9c0ec4a11 100644 --- a/src/lib/output/themes/default/assets/js/src/typedoc/components/Toggle.ts +++ b/src/lib/output/themes/default/assets/js/src/typedoc/components/Toggle.ts @@ -9,7 +9,7 @@ export class Toggle extends Component { constructor(options: IComponentOptions) { super(options); - this.className = this.el.dataset['toggle'] || ""; + this.className = this.el.dataset["toggle"] || ""; this.el.addEventListener(pointerUp, (e) => this.onPointerUp(e)); this.el.addEventListener("click", (e) => e.preventDefault()); document.addEventListener(pointerDown, (e) => diff --git a/src/lib/output/themes/default/assets/js/src/typedoc/utils/pointer.ts b/src/lib/output/themes/default/assets/js/src/typedoc/utils/pointer.ts index b1d88bd7d..c59e06ec4 100644 --- a/src/lib/output/themes/default/assets/js/src/typedoc/utils/pointer.ts +++ b/src/lib/output/themes/default/assets/js/src/typedoc/utils/pointer.ts @@ -49,9 +49,10 @@ export let hasPointerMoved: boolean = false; /** * Is the user agent a mobile agent? */ -export const isMobile: boolean = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( - navigator.userAgent -); +export const isMobile: boolean = + /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent + ); document.documentElement.classList.add(isMobile ? "is-mobile" : "not-mobile"); if (isMobile && "ontouchstart" in document.documentElement) { diff --git a/src/lib/output/themes/default/layouts/default.hbs b/src/lib/output/themes/default/layouts/default.hbs deleted file mode 100644 index 34ef5dfaa..000000000 --- a/src/lib/output/themes/default/layouts/default.hbs +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - <IfCond cond="model.name '==' project.name">{{project.name}}</IfCond><IfNotCond cond="model.name '==' project.name">{{model.name}} | {{project.name}}</IfNotCond> - - - - - - - - -{{__partials__.header}} - -
      -
      -
      - {{{contents}}} -
      - -
      -
      - -{{__partials__.footer}} - -
      - - -{{__partials__.analytics}} - - - diff --git a/src/lib/output/themes/default/layouts/default.tsx b/src/lib/output/themes/default/layouts/default.tsx index fb9c8906a..7c8ae61b2 100644 --- a/src/lib/output/themes/default/layouts/default.tsx +++ b/src/lib/output/themes/default/layouts/default.tsx @@ -1,72 +1,136 @@ -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { PageEvent } from "../../../events"; import { Reflection } from "../../../../models"; -export const defaultLayout = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: PageEvent) => ( - <> - - - - - - {props.model.name === props.project.name ? props.project.name : <>{props.model.name} | {props.project.name}</>} - - - +export const defaultLayout = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (props: PageEvent) => + ( + <> + + + + + + {props.model.name === props.project.name ? ( + props.project.name + ) : ( + <> + {props.model.name} | {props.project.name} + </> + )} + + + - - - - - {partials.header(props)} + + + + + {partials.header(props)} -
      -
      -
      -
      - - - + + +
      +
      -
      -
      - {partials.footer(props)} + {partials.footer(props)} -
      - +
      + - {partials.analytics(props)} - - - -); + {partials.analytics(props)} + + + + ); diff --git a/src/lib/output/themes/default/partials/analytics.hbs b/src/lib/output/themes/default/partials/analytics.hbs deleted file mode 100644 index 2c4ec9bb7..000000000 --- a/src/lib/output/themes/default/partials/analytics.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{#if settings.gaID}} - -{{/if}} \ No newline at end of file diff --git a/src/lib/output/themes/default/partials/analytics.tsx b/src/lib/output/themes/default/partials/analytics.tsx index 22b8cb577..0bf3ceabe 100644 --- a/src/lib/output/themes/default/partials/analytics.tsx +++ b/src/lib/output/themes/default/partials/analytics.tsx @@ -1,17 +1,21 @@ -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { PageEvent } from "../../../events"; import { Reflection } from "../../../../models"; -export const analytics = (_ctx: DefaultThemeRenderContext) => (props: PageEvent) => - !!props.settings.gaID && ( - <> - - - - ); +export const analytics = + (_ctx: DefaultThemeRenderContext) => (props: PageEvent) => + !!props.settings.gaID && ( + <> + + + ); diff --git a/src/lib/output/themes/default/partials/breadcrumb.hbs b/src/lib/output/themes/default/partials/breadcrumb.hbs deleted file mode 100644 index 42a6de513..000000000 --- a/src/lib/output/themes/default/partials/breadcrumb.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{#if parent}} - {{__partials__.breadcrumb}} -
    • - {{#if url}} - {{name}} - {{else}} - {{name}} - {{/if}} -
    • -{{else}} - {{#if url}} -
    • - {{ name }} -
    • - {{/if}} -{{/if}} diff --git a/src/lib/output/themes/default/partials/breadcrumb.tsx b/src/lib/output/themes/default/partials/breadcrumb.tsx index 05d2be8ac..7ae4b4666 100644 --- a/src/lib/output/themes/default/partials/breadcrumb.tsx +++ b/src/lib/output/themes/default/partials/breadcrumb.tsx @@ -1,34 +1,31 @@ import { With } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { Reflection } from "../../../../models"; -export const breadcrumb = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: Reflection): React.ReactElement | undefined => - props.parent ? ( - <> - - {With(props.parent, (props) => ( - <>{partials.breadcrumb(props)} - ))} -
    • - {props.url ? ( - <> - {props.name} - - ) : ( - <> - - {props.name} - - )} -
    • - - ) : ( - props.url ? ( +export const breadcrumb = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (props: Reflection): React.ReactElement | undefined => + props.parent ? ( + <> + {With(props.parent, (props) => ( + <>{partials.breadcrumb(props)} + ))} +
    • + {props.url ? ( + <> + {props.name} + + ) : ( + <> + {props.name} + + )} +
    • + + ) : props.url ? ( <> -
    • {props.name}
    • - ) : undefined - ); + ) : undefined; diff --git a/src/lib/output/themes/default/partials/comment.hbs b/src/lib/output/themes/default/partials/comment.hbs deleted file mode 100644 index 93412200e..000000000 --- a/src/lib/output/themes/default/partials/comment.hbs +++ /dev/null @@ -1,22 +0,0 @@ - - {{#if hasVisibleComponent}} -
      - {{#if shortText}} -
      - {{{shortText}}} -
      - {{/if}} - {{#if text}} - {{{text}}} - {{/if}} - {{#if tags}} -
      - {{#each tags}} -
      {{tagName}}
      -
      {{{text}}}
      - {{/each}} -
      - {{/if}} -
      - {{/if}} -
      diff --git a/src/lib/output/themes/default/partials/comment.tsx b/src/lib/output/themes/default/partials/comment.tsx index dd76105ff..178e2eec3 100644 --- a/src/lib/output/themes/default/partials/comment.tsx +++ b/src/lib/output/themes/default/partials/comment.tsx @@ -1,45 +1,57 @@ import { With } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; -import {Reflection} from '../../../../models'; +import { Reflection } from "../../../../models"; -export const comment = ({markdown, Markdown }: DefaultThemeRenderContext) => (props: Reflection) => ( - <> - {With(props.comment, (props) => ( +export const comment = + ({ markdown, Markdown }: DefaultThemeRenderContext) => + (props: Reflection) => + ( <> - {!!props.hasVisibleComponent() && ( + {With(props.comment, (props) => ( <> - -
      - {!!props.shortText && ( - <> - -
      -
      - - )} - {!!props.text && ( - {props.text} - )} - {props.tags?.length > 0 && ( - <> - -
      - {props.tags.map((item) => ( - <> - -
      {item.tagName}
      -
      -
      - - ))} -
      - - )} -
      + {!!props.hasVisibleComponent() && ( + <> +
      + {!!props.shortText && ( + <> +
      + + )} + {!!props.text && ( + {props.text} + )} + {props.tags?.length > 0 && ( + <> +
      + {props.tags.map((item) => ( + <> +
      {item.tagName}
      +
      + + ))} +
      + + )} +
      + + )} - )} + ))} - ))} - -); + ); diff --git a/src/lib/output/themes/default/partials/footer.hbs b/src/lib/output/themes/default/partials/footer.hbs deleted file mode 100644 index 06cd7743e..000000000 --- a/src/lib/output/themes/default/partials/footer.hbs +++ /dev/null @@ -1,21 +0,0 @@ - -
      -
      -

      Legend

      -
      - {{#each legend}} -
        - {{#each props}} -
      • {{name}}
      • - {{/each}} -
      - {{/each}} -
      -
      -
      - -{{#unless settings.hideGenerator}} -
      -

      Generated using TypeDoc

      -
      -{{/unless}} diff --git a/src/lib/output/themes/default/partials/footer.tsx b/src/lib/output/themes/default/partials/footer.tsx index bf749fd50..7ba9d9155 100644 --- a/src/lib/output/themes/default/partials/footer.tsx +++ b/src/lib/output/themes/default/partials/footer.tsx @@ -1,45 +1,54 @@ import { classNames } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { PageEvent } from "../../../events"; import { Reflection } from "../../../../models"; -export const footer = (_ctx: DefaultThemeRenderContext) => (props: PageEvent) => ( - <> -
      -
      -

      Legend

      -
      - {props.legend?.map((item) => ( - <> - -
        - {item.map((item) => ( - <> - -
      • - {item.name} -
      • - - ))} -
      - - ))} -
      -
      -
      - - {!props.settings.hideGenerator && ( +export const footer = + (_ctx: DefaultThemeRenderContext) => (props: PageEvent) => + ( <> +
      +
      +

      Legend

      +
      + {props.legend?.map((item) => ( + <> +
        + {item.map((item) => ( + <> +
      • + + {item.name} + +
      • + + ))} +
      + + ))} +
      +
      +
      -
      -

      - {"Generated using "} - - TypeDoc - -

      -
      + {!props.settings.hideGenerator && ( + <> +
      +

      + {"Generated using "} + + TypeDoc + +

      +
      + + )} - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/header.hbs b/src/lib/output/themes/default/partials/header.hbs deleted file mode 100644 index 37c5cec4a..000000000 --- a/src/lib/output/themes/default/partials/header.hbs +++ /dev/null @@ -1,70 +0,0 @@ -
      -
      -
      -
      - - -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - - - - {{#unless settings.excludeExternals}} - - - {{/unless}} -
      -
      - - Menu -
      -
      -
      -
      -
      -
      - {{#if model.parent}} {{! Don't show breadcrumbs on main project page, it is the root page. !}} -
        - {{__partials__.breadcrumb}} -
      - {{/if}} -

      - - {{model.kindString}}  - - {{model.name}} - {{#if model.typeParameters}} - < - {{#each model.typeParameters}} - {{#if @index}}, {{/if}} - {{name}} - {{/each}} - > - {{/if}} -

      -
      -
      -
      diff --git a/src/lib/output/themes/default/partials/header.tsx b/src/lib/output/themes/default/partials/header.tsx index 20a27d7ba..f156fe686 100644 --- a/src/lib/output/themes/default/partials/header.tsx +++ b/src/lib/output/themes/default/partials/header.tsx @@ -1,111 +1,164 @@ import { With, Compact, hasTypeParameters } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { PageEvent } from "../../../events"; import { Reflection } from "../../../../models"; -export const header = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: PageEvent) => ( - <> -
      -
      -
      -
      - +
      +
      + + ); diff --git a/src/lib/output/themes/default/partials/hierarchy.hbs b/src/lib/output/themes/default/partials/hierarchy.hbs deleted file mode 100644 index 915542c37..000000000 --- a/src/lib/output/themes/default/partials/hierarchy.hbs +++ /dev/null @@ -1,17 +0,0 @@ -
        - {{#each types}} -
      • - {{#if superProps.isTarget}} - {{this}} - {{else}} - {{__partials__.type}} - {{/if}} - - {{#if @last}} - - {{__partials__.hierarchy}} - - {{/if}} -
      • - {{/each}} -
      diff --git a/src/lib/output/themes/default/partials/hierarchy.tsx b/src/lib/output/themes/default/partials/hierarchy.tsx index 75e25657a..50142d19c 100644 --- a/src/lib/output/themes/default/partials/hierarchy.tsx +++ b/src/lib/output/themes/default/partials/hierarchy.tsx @@ -1,19 +1,22 @@ -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationHierarchy } from "../../../../models"; -export const hierarchy = ({partials }: DefaultThemeRenderContext) => (props: DeclarationHierarchy) => ( -
        - {props.types.map((item, i, l) => -
      • - {props.isTarget ? - {item.toString()} - : - partials.type(item) - } - {i === l.length - 1 && !!props.next && - partials.hierarchy(props.next) - } -
      • - )} -
      -); +export const hierarchy = + ({ partials }: DefaultThemeRenderContext) => + (props: DeclarationHierarchy) => + ( +
        + {props.types.map((item, i, l) => ( +
      • + {props.isTarget ? ( + {item.toString()} + ) : ( + partials.type(item) + )} + {i === l.length - 1 && + !!props.next && + partials.hierarchy(props.next)} +
      • + ))} +
      + ); diff --git a/src/lib/output/themes/default/partials/index.hbs b/src/lib/output/themes/default/partials/index.hbs deleted file mode 100644 index a69dd2eae..000000000 --- a/src/lib/output/themes/default/partials/index.hbs +++ /dev/null @@ -1,50 +0,0 @@ -{{#if categories}} -
      -

      Index

      -
      -
      - {{#each categories}} -
      -

      {{title}}

      - -
      - {{/each}} -
      -
      -
      -{{else}} - {{#if groups}} -
      -

      Index

      -
      -
      - {{#each groups}} -
      - {{#if categories}} - {{#each categories}} -

      {{#if title}}{{title}} {{/if}}{{superProps.title}}

      - - {{/each}} - {{else}} -

      {{title}}

      - - {{/if}} -
      - {{/each}} -
      -
      -
      - {{/if}} -{{/if}} diff --git a/src/lib/output/themes/default/partials/index.tsx b/src/lib/output/themes/default/partials/index.tsx index 44d9fc725..d66af5322 100644 --- a/src/lib/output/themes/default/partials/index.tsx +++ b/src/lib/output/themes/default/partials/index.tsx @@ -1,94 +1,48 @@ import { wbr } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { ContainerReflection } from "../../../../models"; -export const index = ({relativeURL }: DefaultThemeRenderContext) => (props: ContainerReflection) => - props.categories && props.categories.length > 0 ? ( - <> - -
      -

      Index

      -
      -
      - {props.categories.map((item) => ( - <> - -
      -

      {item.title}

      - -
      - - ))} -
      -
      -
      - - ) : ( - !!props.groups && ( +export const index = + ({ relativeURL }: DefaultThemeRenderContext) => + (props: ContainerReflection) => + props.categories && props.categories.length > 0 ? ( <> -

      Index

      - {props.groups.map((item) => ( + {props.categories.map((item) => ( <> - -
      - {item.categories ? ( - item.categories.map((item2) => ( +
      +

      {item.title}

      +
      ))} @@ -96,5 +50,111 @@ export const index = ({relativeURL }: DefaultThemeRenderContext) => (props: Cont
      - ) - ); + ) : ( + !!props.groups && ( + <> +
      +

      Index

      +
      +
      + {props.groups.map((item) => ( + <> +
      + {item.categories ? ( + item.categories.map((item2) => ( + <> +

      + {!!item2.title && ( + <> + { + item2.title + }{" "} + + )} + {item.title} +

      + + + )) + ) : ( + <> +

      {item.title}

      + + + )} +
      + + ))} +
      +
      +
      + + ) + ); diff --git a/src/lib/output/themes/default/partials/member.declaration.hbs b/src/lib/output/themes/default/partials/member.declaration.hbs deleted file mode 100644 index e3fa33c74..000000000 --- a/src/lib/output/themes/default/partials/member.declaration.hbs +++ /dev/null @@ -1,36 +0,0 @@ -
      - {{{wbr name}}} - {{#if typeParameters}} - < - {{#each typeParameters}} - {{#if @index}}, {{/if}} - {{name}} - {{/each}} - > - {{/if}} - {{#if isOptional}}?{{/if}}: {{__partials__.type}} - {{#if defaultValue}} - -  =  - {{defaultValue}} - - {{/if}} -
      - -{{__partials__.member.sources}} - -{{__partials__.comment}} - -{{#if typeParameters}} -

      Type parameters

      - {{__partials__.typeParameters}} -{{/if}} - -{{#if type.declaration}} -
      -

      Type declaration

      - - {{__partials__.parameter}} - -
      -{{/if}} diff --git a/src/lib/output/themes/default/partials/member.declaration.tsx b/src/lib/output/themes/default/partials/member.declaration.tsx index 2eea8443b..2f791ab77 100644 --- a/src/lib/output/themes/default/partials/member.declaration.tsx +++ b/src/lib/output/themes/default/partials/member.declaration.tsx @@ -1,63 +1,65 @@ import { With, wbr, Compact, isReflectionType } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationReflection } from "../../../../models"; -export const memberDeclaration = ({partials }: DefaultThemeRenderContext) => (props: DeclarationReflection) => ( - <> -
      - - {wbr(props.name)} - {!!props.typeParameters && ( - <> - {"<"} - {props.typeParameters.map((item, i) => ( +export const memberDeclaration = + ({ partials }: DefaultThemeRenderContext) => + (props: DeclarationReflection) => + ( + <> +
      + + {wbr(props.name)} + {!!props.typeParameters && ( <> - - {i > 0 && ",\xA0"} - {item.name} + {"<"} + {props.typeParameters.map((item, i) => ( + <> + {i > 0 && ",\xA0"} + {item.name} + + ))} + {">"} + )} + + {!!props.flags.isOptional && "?"}: + {" "} + {With(props.type, (props) => ( + <>{partials.type(props)} ))} - {">"} + {!!props.defaultValue && ( + <> + + {" = "} + {props.defaultValue} + + + )} + +
      + + {partials["memberSources"](props)} + + {partials.comment(props)} + + {!!props.typeParameters && ( + <> +

      + Type parameters +

      + {partials.typeParameters(props)} )} - {!!props.flags.isOptional && "?"}: - {" "} - {With(props.type, (props) => ( - <>{partials.type(props)} - ))} - {!!props.defaultValue && ( + {isReflectionType(props.type) && !!props.type.declaration && ( <> - - - {" = "} - {props.defaultValue} - +
      +

      Type declaration

      + {With(props.type.declaration, (props) => ( + <>{partials.parameter(props)} + ))} +
      )} -
      -
      - - {partials["memberSources"](props)} - - {partials.comment(props)} - - {!!props.typeParameters && ( - <> - -

      Type parameters

      - {partials.typeParameters(props)} - - )} - {isReflectionType(props.type) && !!props.type.declaration && ( - <> - -
      -

      Type declaration

      - {With(props.type.declaration, (props) => ( - <>{partials.parameter(props)} - ))} -
      - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/member.getterSetter.hbs b/src/lib/output/themes/default/partials/member.getterSetter.hbs deleted file mode 100644 index 09b776f10..000000000 --- a/src/lib/output/themes/default/partials/member.getterSetter.hbs +++ /dev/null @@ -1,37 +0,0 @@ -
        - {{#if getSignature}} - -
      • - get  - {{superProps.name}} - {{__partials__.member.signature.title hideName=true }} -
      • -
        - {{/if}} - {{#if setSignature}} - -
      • - set  - {{superProps.name}} - {{__partials__.member.signature.title hideName=true }} -
      • -
        - {{/if}} -
      - -
        - {{#if getSignature}} - -
      • - {{__partials__.member.signature.body }} -
      • -
        - {{/if}} - {{#if setSignature}} - -
      • - {{__partials__.member.signature.body }} -
      • -
        - {{/if}} -
      diff --git a/src/lib/output/themes/default/partials/member.getterSetter.tsx b/src/lib/output/themes/default/partials/member.getterSetter.tsx index 7954dcbd9..89753162b 100644 --- a/src/lib/output/themes/default/partials/member.getterSetter.tsx +++ b/src/lib/output/themes/default/partials/member.getterSetter.tsx @@ -1,51 +1,66 @@ import { With, Compact } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationReflection } from "../../../../models"; -export const memberGetterSetter = ({partials }: DefaultThemeRenderContext) => (props: DeclarationReflection) => ( - <> -
        - {!!props.getSignature && ( -
      • - - get{" "} - {props.name} - {partials["memberSignatureTitle"](props.getSignature, { hideName: true })} - -
      • - )} - {!!props.setSignature && ( -
      • - - set{" "} - {props.name} - {partials["memberSignatureTitle"](props.setSignature, { hideName: true })} - -
      • - )} -
      +export const memberGetterSetter = + ({ partials }: DefaultThemeRenderContext) => + (props: DeclarationReflection) => + ( + <> +
        + {!!props.getSignature && ( +
      • + + + get + {" "} + {props.name} + {partials["memberSignatureTitle"]( + props.getSignature, + { hideName: true } + )} + +
      • + )} + {!!props.setSignature && ( +
      • + + + set + {" "} + {props.name} + {partials["memberSignatureTitle"]( + props.setSignature, + { hideName: true } + )} + +
      • + )} +
      -
        - {!!props.getSignature && ( - <> - - {With(props.getSignature, (props) => ( +
          + {!!props.getSignature && ( <> -
        • {partials["memberSignatureBody"](props)}
        • + {With(props.getSignature, (props) => ( + <> +
        • + {partials["memberSignatureBody"](props)} +
        • + + ))} - ))} - - )} - {!!props.setSignature && ( - <> - - {With(props.setSignature, (props) => ( + )} + {!!props.setSignature && ( <> -
        • {partials["memberSignatureBody"](props)}
        • + {With(props.setSignature, (props) => ( + <> +
        • + {partials["memberSignatureBody"](props)} +
        • + + ))} - ))} - - )} -
        - -); + )} +
      + + ); diff --git a/src/lib/output/themes/default/partials/member.hbs b/src/lib/output/themes/default/partials/member.hbs deleted file mode 100644 index 24ce46a1f..000000000 --- a/src/lib/output/themes/default/partials/member.hbs +++ /dev/null @@ -1,24 +0,0 @@ -
      - - {{#if name}} -

      {{#each flags}}{{this}} {{/each}}{{{wbr name}}}

      - {{/if}} - - {{#if signatures}} - {{__partials__.member.signatures}} - {{else}}{{#if hasGetterOrSetter}} - {{__partials__.member.getterSetter}} - {{else}}{{#if isReference}} - {{__partials__.member.reference}} - {{else}} - {{__partials__.member.declaration}} - {{/if}}{{/if}}{{/if}} - - {{#each groups}} - {{#each children}} - {{#unless hasOwnDocument}} - {{__partials__.member}} - {{/unless}} - {{/each}} - {{/each}} -
      diff --git a/src/lib/output/themes/default/partials/member.reference.hbs b/src/lib/output/themes/default/partials/member.reference.hbs deleted file mode 100644 index e431a4399..000000000 --- a/src/lib/output/themes/default/partials/member.reference.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{#if tryGetTargetReflectionDeep}} - - - Re-exports {{name}} - - - {{#if flags.isExported}} - Renames and re-exports {{name}} - {{else}} - Renames and exports {{name}} - {{/if}} - - -{{else}} - Re-exports {{name}} -{{/if}} diff --git a/src/lib/output/themes/default/partials/member.reference.tsx b/src/lib/output/themes/default/partials/member.reference.tsx index 895294a6f..e8faa1f4a 100644 --- a/src/lib/output/themes/default/partials/member.reference.tsx +++ b/src/lib/output/themes/default/partials/member.reference.tsx @@ -1,32 +1,53 @@ import { With, IfCond, IfNotCond } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { ReferenceReflection } from "../../../../models"; -export const memberReference = ({relativeURL }: DefaultThemeRenderContext) => (props: ReferenceReflection) => - props.tryGetTargetReflectionDeep() ? ( - <> - - {With(props.tryGetTargetReflectionDeep(), (targetReflection) => ( - <> - - Re-exports {targetReflection.name} - - - {targetReflection.flags.isExported ? ( - <> - - Renames and re-exports {targetReflection.name} - - ) : ( - <> - - Renames and exports {targetReflection.name} - - )} - - - ))} - - ) : ( - <> Re-exports {props.name} - ); +export const memberReference = + ({ relativeURL }: DefaultThemeRenderContext) => + (props: ReferenceReflection) => + props.tryGetTargetReflectionDeep() ? ( + <> + {With( + props.tryGetTargetReflectionDeep(), + (targetReflection) => ( + <> + + Re-exports{" "} + + {targetReflection.name} + + + + {targetReflection.flags.isExported ? ( + <> + Renames and re-exports{" "} + + {targetReflection.name} + + + ) : ( + <> + Renames and exports{" "} + + {targetReflection.name} + + + )} + + + ) + )} + + ) : ( + <> Re-exports {props.name} + ); diff --git a/src/lib/output/themes/default/partials/member.signature.body.hbs b/src/lib/output/themes/default/partials/member.signature.body.hbs deleted file mode 100644 index 1af333695..000000000 --- a/src/lib/output/themes/default/partials/member.signature.body.hbs +++ /dev/null @@ -1,56 +0,0 @@ -{{#unless hideSources}} - {{__partials__.member.sources}} -{{/unless}} - -{{__partials__.comment}} - -{{#if typeParameters}} -

      Type parameters

      - {{__partials__.typeParameters}} -{{/if}} - -{{#if parameters}} -

      Parameters

      -
        - {{#each parameters}} -
      • -
        - {{#each flags}} - {{this}}  - {{/each}} - {{#if flags.isRest}}...{{/if}} - {{name}}:  - {{__partials__.type}} - {{#if defaultValue}} - -  =  - {{defaultValue}} - - {{/if}} -
        - - {{__partials__.comment}} - - {{#if type.declaration}} - - {{__partials__.parameter}} - - {{/if}} -
      • - {{/each}} -
      -{{/if}} - -{{#if type}} -

      Returns {{__partials__.type}}

      - - {{#if comment.returns}} - {{{comment.returns}}} - {{/if}} - - {{#if type.declaration}} - - {{__partials__.parameter}} - - {{/if}} -{{/if}} diff --git a/src/lib/output/themes/default/partials/member.signature.body.tsx b/src/lib/output/themes/default/partials/member.signature.body.tsx index 3e722c494..e9b183e29 100644 --- a/src/lib/output/themes/default/partials/member.signature.body.tsx +++ b/src/lib/output/themes/default/partials/member.signature.body.tsx @@ -1,90 +1,120 @@ -import { With, Compact, hasDefaultValue, hasType, isReflectionType } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { + With, + Compact, + hasDefaultValue, + hasType, + isReflectionType, +} from "../../lib"; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { SignatureReflection } from "../../../../models"; -export const memberSignatureBody = ({partials, Markdown }: DefaultThemeRenderContext) => (props: SignatureReflection, {hideSources = false}: {hideSources?: boolean} = {}) => ( - <> - {!hideSources && <> {partials["memberSources"](props)}} - {partials.comment(props)} - - {!!props.typeParameters && ( - <> - -

      Type parameters

      - {partials.typeParameters(props)} - - )} - {props.parameters && props.parameters.length > 0 && ( +export const memberSignatureBody = + ({ partials, Markdown }: DefaultThemeRenderContext) => + ( + props: SignatureReflection, + { hideSources = false }: { hideSources?: boolean } = {} + ) => + ( <> + {!hideSources && <> {partials["memberSources"](props)}} + {partials.comment(props)} -

      Parameters

      -
        - {props.parameters.map((item) => ( - <> - -
      • -
        - - {item.flags.map((item) => <> - {item}{" "} - )} - {!!item.flags.isRest && ...} - {item.name}{": "} - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} - {hasDefaultValue(item) && ( - <> - - - {" = "} - {item.defaultValue} - - - )} - -
        - {partials.comment(item)} - {hasType(item) && isReflectionType(item.type) && !!item.type.declaration && ( - <> - - {With(item.type.declaration, (props) => ( - <>{partials.parameter(props)} - ))} - - )} -
      • - - ))} -
      - - )} - {hasType(props) && ( - <> - -

      - {"Returns "} - - {With(props.type, (props) => ( - <>{partials.type(props)} - ))} - -

      - {!!props.comment?.returns && ( + {!!props.typeParameters && ( <> - - {props.comment.returns} +

      + Type parameters +

      + {partials.typeParameters(props)} )} - {isReflectionType(props.type) && props.type.declaration && ( + {props.parameters && props.parameters.length > 0 && ( <> - - {With(props.type.declaration, (props) => ( - <>{partials.parameter(props)} - ))} +

      Parameters

      +
        + {props.parameters.map((item) => ( + <> +
      • +
        + + {item.flags.map((item) => ( + <> + + {item} + {" "} + + ))} + {!!item.flags.isRest && ( + + ... + + )} + {item.name} + {": "} + {With(item.type, (props) => ( + <>{partials.type(props)} + ))} + {hasDefaultValue(item) && ( + <> + + {" = "} + {item.defaultValue} + + + )} + +
        + {partials.comment(item)} + {hasType(item) && + isReflectionType(item.type) && + !!item.type.declaration && ( + <> + {With( + item.type.declaration, + (props) => ( + <> + {partials.parameter( + props + )} + + ) + )} + + )} +
      • + + ))} +
      + + )} + {hasType(props) && ( + <> +

      + {"Returns "} + + {With(props.type, (props) => ( + <>{partials.type(props)} + ))} + +

      + {!!props.comment?.returns && ( + <> + {props.comment.returns} + + )} + {isReflectionType(props.type) && + props.type.declaration && ( + <> + {With(props.type.declaration, (props) => ( + <>{partials.parameter(props)} + ))} + + )} )} - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/member.signature.title.hbs b/src/lib/output/themes/default/partials/member.signature.title.hbs deleted file mode 100644 index 1a871891f..000000000 --- a/src/lib/output/themes/default/partials/member.signature.title.hbs +++ /dev/null @@ -1,41 +0,0 @@ -{{#unless hideName}} - {{{wbr name}}} -{{else}} - - {{#if flags.isAbstract}} - abstract - {{/if}} - new - -{{/unless}} -{{#if typeParameters}} - < - {{#each typeParameters}} - {{#if @index}}, {{/if}} - {{name}} - {{/each}} - > -{{/if}} -( -{{#each parameters}} - {{#if @index}}, {{/if}} - {{#if flags.isRest}}...{{/if}} - {{name}} - - {{#if flags.isOptional}}?{{/if}} - {{#if defaultValue}}?{{/if}} - :  - - {{__partials__.type}} -{{/each}} -) -{{#if type}} - {{#if arrowStyle}} - => - {{else}} - : - {{/if}} - - {{__partials__.type}} - -{{/if}} diff --git a/src/lib/output/themes/default/partials/member.signature.title.tsx b/src/lib/output/themes/default/partials/member.signature.title.tsx index 86effccbb..07362973a 100644 --- a/src/lib/output/themes/default/partials/member.signature.title.tsx +++ b/src/lib/output/themes/default/partials/member.signature.title.tsx @@ -1,61 +1,79 @@ import { With, wbr, IfCond } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { SignatureReflection } from "../../../../models"; -export const memberSignatureTitle = ({partials }: DefaultThemeRenderContext) => (props: SignatureReflection, {hideName = false, arrowStyle = false}: {hideName?: boolean, arrowStyle?: boolean} = {}) => ( - <> - {!hideName ? ( - <>{wbr(props.name)} - ) : ( +export const memberSignatureTitle = + ({ partials }: DefaultThemeRenderContext) => + ( + props: SignatureReflection, + { + hideName = false, + arrowStyle = false, + }: { hideName?: boolean; arrowStyle?: boolean } = {} + ) => + ( <> - - {!!props.flags.isAbstract && ( - <> - abstract - - )} - new - - - )} - {!!props.typeParameters && ( - <> - {"<"} - {props.typeParameters.map((item, i) => ( + {!hideName ? ( + <>{wbr(props.name)} + ) : ( + <> + + {!!props.flags.isAbstract && ( + <> + + abstract{" "} + + + )} + new + + + )} + {!!props.typeParameters && ( + <> + {"<"} + {props.typeParameters.map((item, i) => ( + <> + {i > 0 && ", "} + {item.name} + + ))} + {">"} + + )} + ( + {props.parameters?.map((item, i) => ( <> - {i > 0 && ", "} + {!!i && ", "} + {!!item.flags.isRest && ( + ... + )} {item.name} + + {!!item.flags.isOptional && "?"} + {!!item.defaultValue && "?"} + {": "} + + {With(item.type, (props) => ( + <>{partials.type(props)} + ))} ))} - {">"} - - )} - ( - {props.parameters?.map((item, i) => ( - <> - {!!i && ", "} - {!!item.flags.isRest && ...} - {item.name} - - {!!item.flags.isOptional && "?"} - {!!item.defaultValue && "?"} - {": "} - - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} - - ))} - ) - {!!props.type && ( - <> - {arrowStyle ? ( - ={">"} - ) : ( - : + ) + {!!props.type && ( + <> + {arrowStyle ? ( + + {" "} + ={">"}{" "} + + ) : ( + : + )} + {!!props.type && partials.type(props.type)} + )} - {!!props.type && partials.type(props.type)} - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/member.signatures.hbs b/src/lib/output/themes/default/partials/member.signatures.hbs deleted file mode 100644 index 45bc4aa52..000000000 --- a/src/lib/output/themes/default/partials/member.signatures.hbs +++ /dev/null @@ -1,13 +0,0 @@ -
        - {{#each signatures}} -
      • {{__partials__.member.signature.title }}
      • - {{/each}} -
      - -
        - {{#each signatures}} -
      • - {{__partials__.member.signature.body }} -
      • - {{/each}} -
      diff --git a/src/lib/output/themes/default/partials/member.signatures.tsx b/src/lib/output/themes/default/partials/member.signatures.tsx index 33b85622d..e7f0617e9 100644 --- a/src/lib/output/themes/default/partials/member.signatures.tsx +++ b/src/lib/output/themes/default/partials/member.signatures.tsx @@ -1,27 +1,32 @@ import { Compact } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationReflection } from "../../../../models"; -export const memberSignatures = ({partials }: DefaultThemeRenderContext) => (props: DeclarationReflection) => ( - <> -
        - {props.signatures?.map((item) => ( - <> +export const memberSignatures = + ({ partials }: DefaultThemeRenderContext) => + (props: DeclarationReflection) => + ( + <> +
          + {props.signatures?.map((item) => ( + <> +
        • + + {partials.memberSignatureTitle(item)} + +
        • + + ))} +
        -
      • - {partials.memberSignatureTitle(item)} -
      • - - ))} -
      - -
        - {props.signatures?.map((item) => ( - <> - -
      • {partials.memberSignatureBody(item)}
      • - - ))} -
      - -); +
        + {props.signatures?.map((item) => ( + <> +
      • + {partials.memberSignatureBody(item)} +
      • + + ))} +
      + + ); diff --git a/src/lib/output/themes/default/partials/member.sources.hbs b/src/lib/output/themes/default/partials/member.sources.hbs deleted file mode 100644 index 690c7c8b1..000000000 --- a/src/lib/output/themes/default/partials/member.sources.hbs +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/src/lib/output/themes/default/partials/member.sources.tsx b/src/lib/output/themes/default/partials/member.sources.tsx index a2c1b3cbc..5876d8378 100644 --- a/src/lib/output/themes/default/partials/member.sources.tsx +++ b/src/lib/output/themes/default/partials/member.sources.tsx @@ -1,47 +1,50 @@ -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationReflection, SignatureReflection } from "../../../../models"; // TODO is this arg type correct? -export const memberSources = ({partials }: DefaultThemeRenderContext) => (props: SignatureReflection | DeclarationReflection) => ( - <> - - -); +export const memberSources = + ({ partials }: DefaultThemeRenderContext) => + (props: SignatureReflection | DeclarationReflection) => + ( + <> + + + ); diff --git a/src/lib/output/themes/default/partials/member.tsx b/src/lib/output/themes/default/partials/member.tsx index 2a0d1308d..2da07f8ed 100644 --- a/src/lib/output/themes/default/partials/member.tsx +++ b/src/lib/output/themes/default/partials/member.tsx @@ -1,42 +1,67 @@ -import { assertIsDeclarationReflection, isDeclarationReflection, isReferenceReflection, wbr } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { + assertIsDeclarationReflection, + isDeclarationReflection, + isReferenceReflection, + wbr, +} from "../../lib"; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationReflection } from "../../../../models"; -export const member = ({partials }: DefaultThemeRenderContext) => (props: DeclarationReflection) => ( - <> -
      - - {!!props.name && ( - <> +export const member = + ({ partials }: DefaultThemeRenderContext) => + (props: DeclarationReflection) => + ( + <> +
      + + {!!props.name && ( + <> +

      + {props.flags.map((item) => ( + <> + + {item} + {" "} + + ))} + {wbr(props.name)} +

      + + )} + {isDeclarationReflection(props) && props.signatures ? ( + <> {partials["memberSignatures"](props)} + ) : isDeclarationReflection(props) && + props.hasGetterOrSetter() ? ( + <>{partials["memberGetterSetter"](props)} + ) : isReferenceReflection(props) && props.isReference ? ( + <>{partials["memberReference"](props)} + ) : ( + <> {partials["memberDeclaration"](props)} + )} -

      - {props.flags.map((item) => ( - <> - {item}{" "} - - ))} - {wbr(props.name)} -

      - - )} - {(isDeclarationReflection(props) && props.signatures) ? ( - <> {partials["memberSignatures"](props)} - ) : (isDeclarationReflection(props) && props.hasGetterOrSetter()) ? ( - <>{partials["memberGetterSetter"](props)} - ) : (isReferenceReflection(props) && props.isReference) ? ( - <>{partials["memberReference"](props)} - ) : ( - <> {partials["memberDeclaration"](props)} - )} - - {props.groups?.map((item) => ( - <> - {item.children.map((item) => ( - <>{!item.hasOwnDocument && <> {partials.member(assertIsDeclarationReflection(item))}} + {props.groups?.map((item) => ( + <> + {item.children.map((item) => ( + <> + {!item.hasOwnDocument && ( + <> + {" "} + {partials.member( + assertIsDeclarationReflection( + item + ) + )} + + )} + + ))} + ))} - - ))} -
      - -); +
      + + ); diff --git a/src/lib/output/themes/default/partials/members.group.hbs b/src/lib/output/themes/default/partials/members.group.hbs deleted file mode 100644 index 4f0578bb3..000000000 --- a/src/lib/output/themes/default/partials/members.group.hbs +++ /dev/null @@ -1,21 +0,0 @@ -{{#if categories}} - {{#each categories}} -
      -

      {{#if title}}{{title}} {{/if}}{{superProps.title}}

      - {{#each children}} - {{#unless hasOwnDocument}} - {{__partials__.member}} - {{/unless}} - {{/each}} -
      - {{/each}} -{{else}} -
      -

      {{title}}

      - {{#each children}} - {{#unless hasOwnDocument}} - {{__partials__.member}} - {{/unless}} - {{/each}} -
      -{{/if}} diff --git a/src/lib/output/themes/default/partials/members.group.tsx b/src/lib/output/themes/default/partials/members.group.tsx index 6582840c9..4ad2d783c 100644 --- a/src/lib/output/themes/default/partials/members.group.tsx +++ b/src/lib/output/themes/default/partials/members.group.tsx @@ -1,32 +1,59 @@ import { assertIsDeclarationReflection } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { ReflectionGroup } from "../../../../models"; -export const membersGroup = ({partials }: DefaultThemeRenderContext) => (group: ReflectionGroup) => - group.categories ? ( - group.categories.map((item) => ( +export const membersGroup = + ({ partials }: DefaultThemeRenderContext) => + (group: ReflectionGroup) => + group.categories ? ( + group.categories.map((item) => ( + <> +
      +

      + {!!item.title && <>{item.title} } + {group.title} +

      + {item.children.map((item) => ( + <> + {!item.hasOwnDocument && ( + <> + {" "} + {partials.member( + assertIsDeclarationReflection(item) + )} + + )} + + ))} +
      + + )) + ) : ( <> - -
      -

      - {!!item.title && <>{item.title} } - {group.title} -

      - {item.children.map((item) => ( - <>{!item.hasOwnDocument && <> {partials.member(assertIsDeclarationReflection(item))}} +
      +

      {group.title}

      + {group.children.map((item) => ( + <> + {!item.hasOwnDocument && ( + <> + {" "} + {partials.member( + assertIsDeclarationReflection(item) + )} + + )} + ))}
      - )) - ) : ( - <> - -
      -

      {group.title}

      - {group.children.map((item) => ( - <>{!item.hasOwnDocument && <> {partials.member(assertIsDeclarationReflection(item))}} - ))} -
      - - ); + ); diff --git a/src/lib/output/themes/default/partials/members.hbs b/src/lib/output/themes/default/partials/members.hbs deleted file mode 100644 index dcbc3fa68..000000000 --- a/src/lib/output/themes/default/partials/members.hbs +++ /dev/null @@ -1,20 +0,0 @@ -{{#if categories}} - {{#each categories}} - {{#unless allChildrenHaveOwnDocument}} -
      -

      {{title}}

      - {{#each children}} - {{#unless hasOwnDocument}} - {{__partials__.member}} - {{/unless}} - {{/each}} -
      - {{/unless}} - {{/each}} -{{else}} - {{#each groups}} - {{#unless allChildrenHaveOwnDocument}} - {{__partials__.members.group}} - {{/unless}} - {{/each}} -{{/if}} diff --git a/src/lib/output/themes/default/partials/members.tsx b/src/lib/output/themes/default/partials/members.tsx index fcbf07d96..8a4f346fd 100644 --- a/src/lib/output/themes/default/partials/members.tsx +++ b/src/lib/output/themes/default/partials/members.tsx @@ -1,24 +1,45 @@ import { assertIsDeclarationReflection } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { ContainerReflection } from "../../../../models"; -export const members = ({partials }: DefaultThemeRenderContext) => (props: ContainerReflection) => - props.categories && props.categories.length > 0 - ? props.categories.map((item) => ( - <> - {!item.allChildrenHaveOwnDocument() && ( - <> - -
      -

      {item.title}

      - {item.children.map((item) => ( - <>{!item.hasOwnDocument && <> {partials.member(assertIsDeclarationReflection(item))}} - ))} -
      - - )} - - )) - : props.groups?.map((item) => ( - <>{!item.allChildrenHaveOwnDocument() && <> {partials.membersGroup(item)}} - )); +export const members = + ({ partials }: DefaultThemeRenderContext) => + (props: ContainerReflection) => + props.categories && props.categories.length > 0 + ? props.categories.map((item) => ( + <> + {!item.allChildrenHaveOwnDocument() && ( + <> +
      +

      {item.title}

      + {item.children.map((item) => ( + <> + {!item.hasOwnDocument && ( + <> + {" "} + {partials.member( + assertIsDeclarationReflection( + item + ) + )} + + )} + + ))} +
      + + )} + + )) + : props.groups?.map((item) => ( + <> + {!item.allChildrenHaveOwnDocument() && ( + <> {partials.membersGroup(item)} + )} + + )); diff --git a/src/lib/output/themes/default/partials/navigation.hbs b/src/lib/output/themes/default/partials/navigation.hbs deleted file mode 100644 index 278c73e5b..000000000 --- a/src/lib/output/themes/default/partials/navigation.hbs +++ /dev/null @@ -1,26 +0,0 @@ -{{#if isVisible}} - {{#if isLabel}} -
    • - {{{wbr title}}} -
    • - {{else}} - {{#if isGlobals}} -
    • - {{{wbr title}}} -
    • - {{else}} -
    • - {{{wbr title}}} - {{#if isInPath}} - {{#if children}} -
        - {{#each children}} - {{__partials__.navigation}} - {{/each}} -
      - {{/if}} - {{/if}} -
    • - {{/if}} - {{/if}} -{{/if}} diff --git a/src/lib/output/themes/default/partials/navigation.tsx b/src/lib/output/themes/default/partials/navigation.tsx index 631072ae4..d0f5ca5ec 100644 --- a/src/lib/output/themes/default/partials/navigation.tsx +++ b/src/lib/output/themes/default/partials/navigation.tsx @@ -1,44 +1,54 @@ import { wbr, classNames } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { NavigationItem } from "../../../models/NavigationItem"; -export const navigation = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: NavigationItem) => - Boolean(props.isVisible) && - (props.isLabel ? ( - <> - -
    • - {wbr(props.title)} -
    • - - ) : false as boolean/* +export const navigation = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (props: NavigationItem) => + Boolean(props.isVisible) && + (props.isLabel ? ( + <> +
    • + {wbr(props.title)} +
    • + + ) : (false as boolean) /* Conditional was: props.isGlobals ...but that is not declared anywhere in typedoc, so it was always false. */ ? ( - <> - -
    • - - {wbr(props.title)} - -
    • - - ) : ( - <> - -
    • - {wbr(props.title)} - {!!props.isInPath && !!props.children && ( - <> - -
        - {props.children.map((item) => ( - <> {partials.navigation(item)} - ))} -
      - - )} -
    • - - )); + <> +
    • + + {wbr(props.title)} + +
    • + + ) : ( + <> +
    • + {wbr(props.title)} + {!!props.isInPath && !!props.children && ( + <> +
        + {props.children.map((item) => ( + <> {partials.navigation(item)} + ))} +
      + + )} +
    • + + )); diff --git a/src/lib/output/themes/default/partials/parameter.hbs b/src/lib/output/themes/default/partials/parameter.hbs deleted file mode 100644 index 20c50d288..000000000 --- a/src/lib/output/themes/default/partials/parameter.hbs +++ /dev/null @@ -1,134 +0,0 @@ -
        - {{#if signatures}} -
      • -
          - {{#each signatures}} -
        • - {{__partials__.member.signature.title hideName=true }} -
        • - {{/each}} -
        - -
          - {{#each signatures}} -
        • {{__partials__.member.signature.body hideSources=true }}
        • - {{/each}} -
        -
      • - {{/if}} - {{#if indexSignature}} -
      • -
        - [ - {{#each indexSignature.parameters}} - {{#if flags.isRest}}...{{/if}}{{name}}: {{__partials__.type}} - {{/each}} - ]:  - {{__partials__.type}} -
        - - - {{__partials__.comment}} - - - {{#if indexSignature.type.declaration}} - - {{__partials__.parameter}} - - {{/if}} -
      • - {{/if}} - {{#each children}} - {{#if signatures}} -
      • -
        - {{#if flags.isRest}}...{{/if}} - {{{wbr name}}} - - {{#if isOptional}}?{{/if}} - :  - - function -
        - - {{__partials__.member.signatures}} -
      • - {{else}}{{#if type}} {{! standard type }} -
      • -
        - {{#each flags}} - {{this}}  - {{/each}} - {{#if flags.isRest}}...{{/if}} - - {{{wbr superProps.name}}} - - {{#if superProps.flags.isOptional}}?{{/if}} - :  - - {{__partials__.type}} - -
        - - {{__partials__.comment}} - - {{#if children}} - {{__partials__.parameter}} - {{/if}} - - {{#if type.declaration}} - - {{__partials__.parameter}} - - {{/if}} -
      • - {{else}} {{! getter/setter }} - {{! getter }} -
      • -
        - {{#each flags}} - {{this}}  - {{/each}} - get  - {{{wbr superProps.name}}} - ():  - - {{__partials__.type}} - -
        - - {{__partials__.comment }} -
      • -
        - {{! setter }} -
      • -
        - {{#each flags}} - {{this}}  - {{/each}} - set  - {{{wbr superProps.name}}} - ( - {{#each parameters}} - {{name}} - : - {{#if type}} - - {{__partials__.type}} - - {{else}} - any - {{/if}} - {{/each}} - ):  - - {{__partials__.type}} - -
        - - {{__partials__.comment }} -
      • -
        - {{/if}}{{/if}} - {{/each}} -
      diff --git a/src/lib/output/themes/default/partials/parameter.tsx b/src/lib/output/themes/default/partials/parameter.tsx index e4e09f374..c3c4884e8 100644 --- a/src/lib/output/themes/default/partials/parameter.tsx +++ b/src/lib/output/themes/default/partials/parameter.tsx @@ -1,208 +1,320 @@ import { With, wbr, Compact, isReflectionType } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { DeclarationReflection } from "../../../../models"; -export const parameter = ({partials }: DefaultThemeRenderContext) => (props: DeclarationReflection) => ( - <> -
        - {!!props.signatures && ( - <> - -
      • -
          - {props.signatures.map((item) => ( - <> - -
        • - - {partials["memberSignatureTitle"](item, { hideName: true })} - -
        • - - ))} -
        - -
          - {props.signatures.map((item) => ( - <> - -
        • - {partials["memberSignatureBody"](item, { hideSources: true })} -
        • - - ))} -
        -
      • - - )} - {!!props.indexSignature && ( - <> - -
      • -
        - - [ - {props.indexSignature?.parameters?.map((item) => ( - <> - - {!!item.flags.isRest && ...} - {item.name}{": "} - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} - - ))} - {"]: "} - {With(props.indexSignature.type, (props) => ( - <>{partials.type(props)} - ))} - -
        - {With(props.indexSignature, (props) => ( - <>{partials.comment(props)} - ))} - {isReflectionType(props.indexSignature.type) && !!props.indexSignature.type.declaration && ( - <> - - {With(props.indexSignature.type.declaration, (props) => ( - <>{partials.parameter(props)} - ))} - - )} -
      • - - )} - {props.children?.map((item) => ( - <> - {item.signatures ? ( +export const parameter = + ({ partials }: DefaultThemeRenderContext) => + (props: DeclarationReflection) => + ( + <> +
          + {!!props.signatures && ( <> +
        • +
            + {props.signatures.map((item) => ( + <> +
          • + + {partials[ + "memberSignatureTitle" + ](item, { hideName: true })} + +
          • + + ))} +
          -
        • -
          - - {!!item.flags.isRest && ...} - {wbr(item.name)} - {!!item.flags.isOptional && "?"}: - function - -
          - - {partials.memberSignatures(item)} +
            + {props.signatures.map((item) => ( + <> +
          • + {partials[ + "memberSignatureBody" + ](item, { hideSources: true })} +
          • + + ))} +
        • - ) : item.type ? ( + )} + {!!props.indexSignature && ( <> - - {/* standard type */} -
        • +
        • - {item.flags.map((item) => ( - <> - {item}{" "} - - ))} - {!!item.flags.isRest && ...} - {wbr(item.name)} - {!!item.flags.isOptional && "?"}{": "} + [ + + {props.indexSignature?.parameters?.map( + (item) => ( + <> + {!!item.flags.isRest && ( + + ... + + )} + {item.name} + {": "} + {With( + item.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + + ) + )} + + {"]: "} - {partials.type(item.type)} + {With( + props.indexSignature.type, + (props) => ( + <>{partials.type(props)} + ) + )}
          - {partials.comment(item)} - {!!item.children && <> {partials.parameter(item)}} - {isReflectionType(item.type) && !!item.type.declaration && ( - <> - - {With(item.type.declaration, (props) => ( - <>{partials.parameter(props)} - ))} - - )} + {With(props.indexSignature, (props) => ( + <>{partials.comment(props)} + ))} + {isReflectionType(props.indexSignature.type) && + !!props.indexSignature.type.declaration && ( + <> + {With( + props.indexSignature.type + .declaration, + (props) => ( + <> + {partials.parameter( + props + )} + + ) + )} + + )}
        • - ) : ( + )} + {props.children?.map((item) => ( <> - - {/* getter/setter */} - {With(item.getSignature, (props) => ( + {item.signatures ? ( <> - - {/* getter */}
        • - {props.flags.map((item) => ( - <> - - {item}{" "} - - ))} - get + {!!item.flags.isRest && ( + + ... + + )} {wbr(item.name)} - (): - {With(props.type, (props) => ( - <>{partials.type(props)} - ))} + + {!!item.flags.isOptional && + "?"} + : + + function
          - {partials.comment(props)} + {partials.memberSignatures(item)}
        • - ))} - {With(item.setSignature, (props) => ( + ) : item.type ? ( <> - - {/* setter */} + {/* standard type */}
        • - {props.flags.map((item) => ( + {item.flags.map((item) => ( <> - - {item}{" "} + + {item} + {" "} ))} - {"set "} + {!!item.flags.isRest && ( + + ... + + )} {wbr(item.name)} - ( - {props.parameters?.map((item) => ( - <> - - {item.name} - : - {item.type ? ( + + {!!item.flags.isOptional && + "?"} + {": "} + + {partials.type(item.type)} + +
          + {partials.comment(item)} + {!!item.children && ( + <> {partials.parameter(item)} + )} + {isReflectionType(item.type) && + !!item.type.declaration && ( + <> + {With( + item.type.declaration, + (props) => ( <> - - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} + {partials.parameter( + props + )} - ) : ( - <> + ) + )} + + )} +
        • + + ) : ( + <> + {/* getter/setter */} + {With(item.getSignature, (props) => ( + <> + {/* getter */} +
        • +
          + + {props.flags.map( + (item) => ( + <> + + {item} + {" "} + + ) + )} + + get{" "} + + {wbr(item.name)} + + ():{" "} + + {With( + props.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + +
          - any - + {partials.comment(props)} +
        • + + ))} + {With(item.setSignature, (props) => ( + <> + {/* setter */} +
        • +
          + + {props.flags.map( + (item) => ( + <> + + {item} + {" "} + + ) )} - - ))} - ): - {With(props.type, (props) => ( - <>{partials.type(props)} - ))} - -
          + + {"set "} + + {wbr(item.name)} + + ( + + {props.parameters?.map( + (item) => ( + <> + {item.name} + + :{" "} + + {item.type ? ( + <> + {With( + item.type, + ( + props + ) => ( + <> + {partials.type( + props + )} + + ) + )} + + ) : ( + <> + + any + + + )} + + ) + )} + + ):{" "} + + {With( + props.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + + - {partials.comment(props)} -
        • + {partials.comment(props)} + + + ))} - ))} + )} - )} - - ))} -
        - -); + ))} +
      + + ); diff --git a/src/lib/output/themes/default/partials/toc.hbs b/src/lib/output/themes/default/partials/toc.hbs deleted file mode 100644 index fca80fde2..000000000 --- a/src/lib/output/themes/default/partials/toc.hbs +++ /dev/null @@ -1,10 +0,0 @@ -
    • - {{{wbr title}}} - {{#if children}} -
        - {{#each children}} - {{__partials__.toc}} - {{/each}} -
      - {{/if}} -
    • diff --git a/src/lib/output/themes/default/partials/toc.root.hbs b/src/lib/output/themes/default/partials/toc.root.hbs deleted file mode 100644 index 5c6cf6842..000000000 --- a/src/lib/output/themes/default/partials/toc.root.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{! {{#if isInPath}} -{{! }} -{{!
        }} -{{! {{/if}} -
      • - {{{wbr title}}} - {{#if children}} -
          - {{#each children}} - {{__partials__.toc}} - {{/each}} -
        - {{/if}} -
      • -{{! {{#if isInPath}} -{{!
      }} -{{!
        }} -{{! {{/if}} diff --git a/src/lib/output/themes/default/partials/toc.root.tsx b/src/lib/output/themes/default/partials/toc.root.tsx index 9ab3643cd..f47616f42 100644 --- a/src/lib/output/themes/default/partials/toc.root.tsx +++ b/src/lib/output/themes/default/partials/toc.root.tsx @@ -1,21 +1,29 @@ import { wbr, classNames } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { NavigationItem } from "../../../../.."; -export const tocRoot = ({relativeURL, partials }: DefaultThemeRenderContext) => (item: NavigationItem) => ( -
      • - - {wbr(item.title)} - - {!!item.children && ( - <> - -
          - {item.children.map((item) => ( - <> {partials.toc(item)} - ))} -
        - - )} -
      • -); +export const tocRoot = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (item: NavigationItem) => + ( +
      • + + {wbr(item.title)} + + {!!item.children && ( + <> +
          + {item.children.map((item) => ( + <> {partials.toc(item)} + ))} +
        + + )} +
      • + ); diff --git a/src/lib/output/themes/default/partials/toc.tsx b/src/lib/output/themes/default/partials/toc.tsx index fc57436aa..57524ef14 100644 --- a/src/lib/output/themes/default/partials/toc.tsx +++ b/src/lib/output/themes/default/partials/toc.tsx @@ -1,24 +1,32 @@ import { classNames, wbr } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { NavigationItem } from "../../../models/NavigationItem"; -export const toc = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: NavigationItem) => ( - <> -
      • - - {wbr(props.title)} - - {!!props.children && ( - <> - -
          - {props.children.map((item) => ( - <> {partials.toc(item)} - ))} -
        - - )} -
      • - -); +export const toc = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (props: NavigationItem) => + ( + <> +
      • + + {wbr(props.title)} + + {!!props.children && ( + <> +
          + {props.children.map((item) => ( + <> {partials.toc(item)} + ))} +
        + + )} +
      • + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/array.hbs b/src/lib/output/themes/default/partials/type-inline-partials/array.hbs deleted file mode 100644 index 947d612a8..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/array.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - - {{__partials__.type needsParens=true}} - [] - diff --git a/src/lib/output/themes/default/partials/type-inline-partials/array.tsx b/src/lib/output/themes/default/partials/type-inline-partials/array.tsx index b8bc6c6f0..defdc8d4b 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/array.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/array.tsx @@ -1,14 +1,17 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { ArrayType } from "../../../../../models"; -export const array = ({partials }: DefaultThemeRenderContext) => (props: ArrayType) => ( - <> - {With(props.elementType, (props) => ( +export const array = + ({ partials }: DefaultThemeRenderContext) => + (props: ArrayType) => + ( <> - {partials.type(props, { needsParens: true })} - [] + {With(props.elementType, (props) => ( + <> + {partials.type(props, { needsParens: true })} + [] + + ))} - ))} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/conditional.hbs b/src/lib/output/themes/default/partials/type-inline-partials/conditional.hbs deleted file mode 100644 index 50483fb95..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/conditional.hbs +++ /dev/null @@ -1,22 +0,0 @@ - - {{#if needsParens}} - ( - {{/if}} - - {{__partials__.type needsParens=true}} - - extends - - {{__partials__.type}} - - ? - - {{__partials__.type}} - - : - - {{__partials__.type}} - - {{#if needsParens}} - ) - {{/if}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx b/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx index 33967185c..063d06045 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/conditional.tsx @@ -1,36 +1,40 @@ import { TypeInlinePartialsOptions } from "./options"; import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { ConditionalType } from "../../../../../models"; -export const conditional = ({partials }: DefaultThemeRenderContext) => (props: ConditionalType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( - <> - {!!needsParens && ( +export const conditional = + ({ partials }: DefaultThemeRenderContext) => + ( + props: ConditionalType, + { needsParens = false }: TypeInlinePartialsOptions = {} + ) => + ( <> - - ( + {!!needsParens && ( + <> + ( + + )} + {With(props.checkType, (props) => ( + <>{partials.type(props, { needsParens: true })} + ))} + extends + {With(props.extendsType, (props) => ( + <>{partials.type(props)} + ))} + ? + {With(props.trueType, (props) => ( + <>{partials.type(props)} + ))} + : + {With(props.falseType, (props) => ( + <>{partials.type(props)} + ))} + {!!needsParens && ( + <> + ) + + )} - )} - {With(props.checkType, (props) => ( - <>{partials.type(props, { needsParens: true })} - ))} - extends - {With(props.extendsType, (props) => ( - <>{partials.type(props)} - ))} - ? - {With(props.trueType, (props) => ( - <>{partials.type(props)} - ))} - : - {With(props.falseType, (props) => ( - <>{partials.type(props)} - ))} - {!!needsParens && ( - <> - - ) - - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.hbs b/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.hbs deleted file mode 100644 index 100aa0ee0..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.hbs +++ /dev/null @@ -1,9 +0,0 @@ - - - {{__partials__.type}} - - [ - - {{__partials__.type}} - - ] diff --git a/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx b/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx index 54d99bf7a..4b063ce47 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/indexedAccess.tsx @@ -1,16 +1,19 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { IndexedAccessType } from "../../../../../models"; -export const indexedAccess = ({partials }: DefaultThemeRenderContext) => (props: IndexedAccessType) => ( - <> - {With(props.objectType, (props) => ( - <>{partials.type(props)} - ))} - [ - {With(props.indexType, (props) => ( - <>{partials.type(props)} - ))} - ] - -); +export const indexedAccess = + ({ partials }: DefaultThemeRenderContext) => + (props: IndexedAccessType) => + ( + <> + {With(props.objectType, (props) => ( + <>{partials.type(props)} + ))} + [ + {With(props.indexType, (props) => ( + <>{partials.type(props)} + ))} + ] + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/inferred.hbs b/src/lib/output/themes/default/partials/type-inline-partials/inferred.hbs deleted file mode 100644 index bcc4cbade..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/inferred.hbs +++ /dev/null @@ -1,2 +0,0 @@ - - infer {{name}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx b/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx index b4f750a34..9d116c43f 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/inferred.tsx @@ -1,8 +1,11 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { InferredType } from "../../../../../models"; -export const inferred = (_ctx: DefaultThemeRenderContext) => (props: InferredType) => ( - <> - infer {props.name} - -); +export const inferred = + (_ctx: DefaultThemeRenderContext) => (props: InferredType) => + ( + <> + infer {" "} + {props.name} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/intersection.hbs b/src/lib/output/themes/default/partials/type-inline-partials/intersection.hbs deleted file mode 100644 index faecc0abe..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/intersection.hbs +++ /dev/null @@ -1,13 +0,0 @@ - - {{#if needsParens}} - ( - {{/if}} - {{#each types}} - {{#unless @first}} - & - {{/unless}} - {{__partials__.type needsParens=true}} - {{/each}} - {{#if needsParens}} - ) - {{/if}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx b/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx index 0ac773a07..b6a49c486 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/intersection.tsx @@ -1,31 +1,37 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { IntersectionType } from "../../../../../models"; import { TypeInlinePartialsOptions } from "./options"; -export const intersection = ({partials }: DefaultThemeRenderContext) => (props: IntersectionType, {needsParens = false}: TypeInlinePartialsOptions = {}) => ( - <> - {!!needsParens && ( +export const intersection = + ({ partials }: DefaultThemeRenderContext) => + ( + props: IntersectionType, + { needsParens = false }: TypeInlinePartialsOptions = {} + ) => + ( <> - - ( - - )} - {props.types.map((item, i) => ( - <> - {i > 0 && ( + {!!needsParens && ( <> - - & + ( + + )} + {props.types.map((item, i) => ( + <> + {i > 0 && ( + <> + + {" "} + &{" "} + + + )} + {partials.type(item, { needsParens: true })} + + ))} + {!!needsParens && ( + <> + ) )} - {partials.type(item, { needsParens: true })} - - ))} - {!!needsParens && ( - <> - - ) - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.hbs b/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.hbs deleted file mode 100644 index 15bc6f331..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.hbs +++ /dev/null @@ -1,2 +0,0 @@ - - {{name}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx b/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx index 915b63894..1d1b5155f 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/intrinsic.tsx @@ -1,8 +1,10 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { IntrinsicType } from "../../../../../models"; -export const intrinsic = (_ctx: DefaultThemeRenderContext) => (props: IntrinsicType) => ( - <> - {props.name} - -); +export const intrinsic = + (_ctx: DefaultThemeRenderContext) => (props: IntrinsicType) => + ( + <> + {props.name} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/literal.hbs b/src/lib/output/themes/default/partials/type-inline-partials/literal.hbs deleted file mode 100644 index ed583b5ac..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/literal.hbs +++ /dev/null @@ -1,2 +0,0 @@ - - {{stringify value}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx b/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx index 6086aba1a..15b35708b 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/literal.tsx @@ -1,9 +1,13 @@ import { stringify } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { LiteralType } from "../../../../../models"; -export const literal = (_ctx: DefaultThemeRenderContext) => (props: LiteralType) => ( - <> - {stringify(props.value)} - -); +export const literal = + (_ctx: DefaultThemeRenderContext) => (props: LiteralType) => + ( + <> + + {stringify(props.value)} + + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/mapped.hbs b/src/lib/output/themes/default/partials/type-inline-partials/mapped.hbs deleted file mode 100644 index 3b34cccf7..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/mapped.hbs +++ /dev/null @@ -1,42 +0,0 @@ - - { - - readonly - - - - -readonly - - - - [ - {{parameter}} - in - - - {{__partials__.type}} - - - - as - {{__partials__.type}} - - - ] - - ?: - - - - -?: - - - : - - - - - {{__partials__.type}} - - - } diff --git a/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx b/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx index 087f5cbb3..423d574c5 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/mapped.tsx @@ -1,51 +1,54 @@ import { With, IfCond, IfNotCond } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { MappedType } from "../../../../../models"; -export const mapped = ({partials }: DefaultThemeRenderContext) => (props: MappedType) => ( - <> - {"{"} - - readonly - - - - -readonly - - +export const mapped = + ({ partials }: DefaultThemeRenderContext) => + (props: MappedType) => + ( + <> + {"{"} + + readonly + + + + -readonly + + - [ - {props.parameter} - in + [ + {props.parameter} + in - {With(props.parameterType, (props) => ( - <>{partials.type(props)} - ))} + {With(props.parameterType, (props) => ( + <>{partials.type(props)} + ))} - {With(props.nameType, (props) => ( - <> - as - {partials.type(props)} - - ))} + {With(props.nameType, (props) => ( + <> + as + {partials.type(props)} + + ))} - ] - - ?: - - - - -?: - - - : - - + ] + + ?: + + + + -?: + + + : + + - {With(props.templateType, (props) => ( - <>{partials.type(props)} - ))} + {With(props.templateType, (props) => ( + <>{partials.type(props)} + ))} - {"}"} - -); + {"}"} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.hbs b/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.hbs deleted file mode 100644 index ef3a749a2..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.hbs +++ /dev/null @@ -1,10 +0,0 @@ - - {{name}} - {{#if isOptional}} - ?: - {{else}} - : - {{/if}} - - {{__partials__.type}} - diff --git a/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx b/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx index 9a9c9fa0c..77c9c5b36 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/named-tuple-member.tsx @@ -1,23 +1,24 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { NamedTupleMember } from "../../../../../models"; -export const namedTupleMember = ({partials }: DefaultThemeRenderContext) => (props: NamedTupleMember) => ( - <> - {props.name} - {props.isOptional ? ( +export const namedTupleMember = + ({ partials }: DefaultThemeRenderContext) => + (props: NamedTupleMember) => + ( <> - - ?: + {props.name} + {props.isOptional ? ( + <> + ?: + + ) : ( + <> + : + + )} + {With(props.element, (props) => ( + <>{partials.type(props)} + ))} - ) : ( - <> - - : - - )} - {With(props.element, (props) => ( - <>{partials.type(props)} - ))} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/optional.hbs b/src/lib/output/themes/default/partials/type-inline-partials/optional.hbs deleted file mode 100644 index 9ce1e2a6c..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/optional.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - - {{__partials__.type}} - - ? diff --git a/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx b/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx index 51fddfa4f..7ce78f85f 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/optional.tsx @@ -1,12 +1,15 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { OptionalType } from "../../../../../models"; -export const optional = ({partials }: DefaultThemeRenderContext) => (props: OptionalType) => ( - <> - {With(props.elementType, (props) => ( - <>{partials.type(props)} - ))} - ? - -); +export const optional = + ({ partials }: DefaultThemeRenderContext) => + (props: OptionalType) => + ( + <> + {With(props.elementType, (props) => ( + <>{partials.type(props)} + ))} + ? + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/predicate.hbs b/src/lib/output/themes/default/partials/type-inline-partials/predicate.hbs deleted file mode 100644 index df8ceb584..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/predicate.hbs +++ /dev/null @@ -1,11 +0,0 @@ - - {{#if asserts}} - asserts - {{/if}} - {{name}} - {{#if targetType}} - is - - {{__partials__.type}} - - {{/if}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx b/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx index 9f43c8503..3e357088f 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/predicate.tsx @@ -1,24 +1,25 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { PredicateType } from "../../../../../models"; -export const predicate = ({partials }: DefaultThemeRenderContext) => (props: PredicateType) => ( - <> - {!!props.asserts && ( +export const predicate = + ({ partials }: DefaultThemeRenderContext) => + (props: PredicateType) => + ( <> - - asserts + {!!props.asserts && ( + <> + asserts + + )} + {props.name} + {!!props.targetType && ( + <> + is + {With(props.targetType, (props) => ( + <>{partials.type(props)} + ))} + + )} - )} - {props.name} - {!!props.targetType && ( - <> - - is - {With(props.targetType, (props) => ( - <>{partials.type(props)} - ))} - - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/query.hbs b/src/lib/output/themes/default/partials/type-inline-partials/query.hbs deleted file mode 100644 index ebaf7ff78..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/query.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - typeof - - {{__partials__.type}} - diff --git a/src/lib/output/themes/default/partials/type-inline-partials/query.tsx b/src/lib/output/themes/default/partials/type-inline-partials/query.tsx index f64c44adb..7dff2043d 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/query.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/query.tsx @@ -1,12 +1,15 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { QueryType } from "../../../../../models"; -export const query = ({partials }: DefaultThemeRenderContext) => (props: QueryType) => ( - <> - typeof - {With(props.queryType, (props) => ( - <>{partials.type(props)} - ))} - -); +export const query = + ({ partials }: DefaultThemeRenderContext) => + (props: QueryType) => + ( + <> + typeof + {With(props.queryType, (props) => ( + <>{partials.type(props)} + ))} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/reference.hbs b/src/lib/output/themes/default/partials/type-inline-partials/reference.hbs deleted file mode 100644 index 279304ffd..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/reference.hbs +++ /dev/null @@ -1,20 +0,0 @@ - - {{#if getReflection}} - - - {{name}} - - - {{else}} - {{name}} - {{/if}} - {{#if typeArguments}} - < - {{#each typeArguments}} - {{#unless @first}} - , - {{/unless}} - {{__partials__.type}} - {{/each}} - > - {{/if}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx b/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx index 5492e040c..329ba682e 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/reference.tsx @@ -1,44 +1,48 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { ReferenceType } from "../../../../../models"; -export const reference = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: ReferenceType) => { - const reflection = props.getReflection(); - return ( - <> - {reflection ? ( - <> - { - - {reflection.name} - - } - - ) : ( - <> - {props.name} - - )} - {props.typeArguments && props.typeArguments.length > 0 && ( - <> - {"<"} - {props.typeArguments.map((item, i) => ( - <> - {i > 0 && ( - <> - , - - )} - {partials.type(item)} - - ))} - {">"} - - )} - - ); -}; +export const reference = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (props: ReferenceType) => { + const reflection = props.getReflection(); + return ( + <> + {reflection ? ( + <> + { + + {reflection.name} + + } + + ) : ( + <> + {props.name} + + )} + {props.typeArguments && props.typeArguments.length > 0 && ( + <> + {"<"} + {props.typeArguments.map((item, i) => ( + <> + {i > 0 && ( + <> + + ,{" "} + + + )} + {partials.type(item)} + + ))} + {">"} + + )} + + ); + }; diff --git a/src/lib/output/themes/default/partials/type-inline-partials/reflection.hbs b/src/lib/output/themes/default/partials/type-inline-partials/reflection.hbs deleted file mode 100644 index 4baac1cc4..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/reflection.hbs +++ /dev/null @@ -1,91 +0,0 @@ - -{{#if declaration.children}} {{! object literal }} - { - {{#each declaration.children}} - {{#unless @first}} - ; - {{/unless}} - - {{#if getSignature}} - {{#if setSignature}} - {{name}} - : - {{#if getSignature.type}} - - {{__partials__.type}} - - {{else}} - any - {{/if}} - {{else}} - get - {{name}} - (): - {{#if getSignature.type}} - - {{__partials__.type}} - - {{else}} - any - {{/if}} - {{/if}} - {{else}} - {{#if setSignature}} - set - {{name}} - ( - {{! Rather hacky to use each here... but we know there is exactly one. }} - {{#each setSignature.parameters}} - {{name}} - : - {{#if type}} - - {{__partials__.type}} - - {{else}} - any - {{/if}} - {{/each}} - ) - {{else}} - {{name}} - {{#if flags.isOptional }} - ?: - {{else}} - : - {{/if}} - {{#if type}} - - {{__partials__.type}} - - {{else}} - any - {{/if}} - {{/if}} - {{/if}} - {{/each}} - } -{{else if declaration.signatures}} - {{#if "(lookup declaration.signatures 1)" }} {{! more than one signature}} - { - {{#each declaration.signatures}} - {{__partials__.member.signature.title hideName=true}} - {{#unless @last}} - ; - {{/unless}} - {{/each}} - } - {{else}} - {{#if needsParens}} - ( - {{/if}} - - {{__partials__.member.signature.title hideName=true arrowStyle=true}} - - {{#if needsParens}} - ) - {{/if}} - {{/if}} -{{else}} - {} -{{/if}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx b/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx index 8daff70cf..f4ddecf62 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/reflection.tsx @@ -1,166 +1,232 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { ReflectionType } from "../../../../../models"; import { TypeInlinePartialsOptions } from "./options"; -export const reflection = ({partials }: DefaultThemeRenderContext) => (props: ReflectionType, {needsParens = false}: TypeInlinePartialsOptions = {}) => ( - <> - {props.declaration.children ? ( +export const reflection = + ({ partials }: DefaultThemeRenderContext) => + ( + props: ReflectionType, + { needsParens = false }: TypeInlinePartialsOptions = {} + ) => + ( <> - - {/* object literal */} - {"{ "} - {props.declaration.children.map((item, i) => ( + {props.declaration.children ? ( <> - {i > 0 && ( + {/* object literal */} + {"{ "} + {props.declaration.children.map((item, i) => ( <> - - ; - - )} - {item.getSignature ? ( - item.setSignature ? ( - <> - - {item.name} - : - {item.getSignature.type ? ( - <> - - {With(item.getSignature.type, (props) => ( - <>{partials.type(props)} - ))} - - ) : ( - <> - - any - - )} - - ) : ( - <> - - {"get "} - {item.name} - (): - {item.getSignature.type ? ( + {i > 0 && ( + <> + + ;{" "} + + + )} + {item.getSignature ? ( + item.setSignature ? ( <> - - {With(item.getSignature.type, (props) => ( - <>{partials.type(props)} - ))} + {item.name} + + :{" "} + + {item.getSignature.type ? ( + <> + {With( + item.getSignature.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + + ) : ( + <> + + any + + + )} ) : ( <> - - any + + {"get "} + + {item.name} + + ():{" "} + + {item.getSignature.type ? ( + <> + {With( + item.getSignature.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + + ) : ( + <> + + any + + + )} - )} - - ) - ) : item.setSignature ? ( - <> - - {"set "} - {item.name} - ( - {/* Rather hacky to use each here... but we know there is exactly one. */} - {item.setSignature.parameters?.map((item) => ( + ) + ) : item.setSignature ? ( <> - + + {"set "} + {item.name} - : - {item.type ? ( + + ( + + {/* Rather hacky to use each here... but we know there is exactly one. */} + {item.setSignature.parameters?.map( + (item) => ( + <> + {item.name} + + :{" "} + + {item.type ? ( + <> + {With( + item.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + + ) : ( + <> + + any + + + )} + + ) + )} + + ) + + + ) : ( + <> + {item.name} + {item.flags.isOptional ? ( + <> + + ?:{" "} + + + ) : ( <> - - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} + + :{" "} + + )} + {item.type ? ( + <>{partials.type(item.type)} ) : ( <> - - any + + any + )} - ))} - ) + )} + + ))} + {" }"} + + ) : props.declaration.signatures ? ( + <> + {props.declaration.signatures[1] ? ( + <> + {/* more than one signature*/} + + {"{"}{" "} + + {props.declaration.signatures.map( + (item, i, l) => ( + <> + {partials["memberSignatureTitle"]( + item, + { hideName: true } + )} + {i < l.length - 1 && ( + <> + + ;{" "} + + + )} + + ) + )} + + {" }"} + ) : ( <> - {item.name} - {item.flags.isOptional ? ( - <> - ?: - - ) : ( + {!!needsParens && ( <> - : + + ( + )} - {item.type ? ( - <> - {partials.type(item.type)} - - ) : ( - <> - any - + {With( + props.declaration.signatures[0], + (props) => ( + <> + {partials["memberSignatureTitle"]( + props, + { + hideName: true, + arrowStyle: true, + } + )} + + ) )} - - )} - - ))} - {" }"} - - ) : props.declaration.signatures ? ( - <> - - {props.declaration.signatures[1] ? ( - <> - - {/* more than one signature*/} - {"{"} - {props.declaration.signatures.map((item, i, l) => ( - <> - {partials["memberSignatureTitle"](item, { hideName: true })} - {i < l.length - 1 && ( + {!!needsParens && ( <> - ; + + ) + )} - ))} - {" }"} + )} ) : ( <> - {!!needsParens && ( - <> - ( - - )} - {With(props.declaration.signatures[0], (props) => ( - <>{partials["memberSignatureTitle"](props, { hideName: true, arrowStyle: true })} - ))} - {!!needsParens && ( - <> - ) - - )} + + {"{"} + {"}"} + )} - ) : ( - <> - - - {"{"} - {"}"} - - - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/rest.hbs b/src/lib/output/themes/default/partials/type-inline-partials/rest.hbs deleted file mode 100644 index 5b82d4a38..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/rest.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - ... - - {{__partials__.type}} - diff --git a/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx b/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx index 28b3e62fc..4221b1de5 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/rest.tsx @@ -1,12 +1,15 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { RestType } from "../../../../../models"; -export const rest = ({partials }: DefaultThemeRenderContext) => (props: RestType) => ( - <> - ... - {With(props.elementType, (props) => ( - <>{partials.type(props)} - ))} - -); +export const rest = + ({ partials }: DefaultThemeRenderContext) => + (props: RestType) => + ( + <> + ... + {With(props.elementType, (props) => ( + <>{partials.type(props)} + ))} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/template-literal.hbs b/src/lib/output/themes/default/partials/type-inline-partials/template-literal.hbs deleted file mode 100644 index 99aa97a5a..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/template-literal.hbs +++ /dev/null @@ -1,16 +0,0 @@ - - ` - {{#if head}} - {{head}} - {{/if}} - {{#each tail}} - ${ - - {{__partials__.type}} - - } - {{#if this.[1]}} - {{this.[1]}} - {{/if}} - {{/each}} - ` diff --git a/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx b/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx index e62c4c2f2..a2e1c431a 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/template-literal.tsx @@ -1,17 +1,28 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; -import * as React from 'react'; -import { TemplateLiteralType } from '../../../../../models'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; +import * as React from "react"; +import { TemplateLiteralType } from "../../../../../models"; -export const templateLiteral = ({partials }: DefaultThemeRenderContext) => (props: TemplateLiteralType) => <> - ` - { - !!props.head && {props.head} - } - {props.tail.map((item) => <> - {"${"} - { !!item[0] && partials.type(item[0]) } - {"}"} - { !!item[1] && {item[1]} } - )} - ` -; +export const templateLiteral = + ({ partials }: DefaultThemeRenderContext) => + (props: TemplateLiteralType) => + ( + <> + ` + {!!props.head && ( + {props.head} + )} + {props.tail.map((item) => ( + <> + {"${"} + {!!item[0] && partials.type(item[0])} + {"}"} + {!!item[1] && ( + + {item[1]} + + )} + + ))} + ` + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/tuple.hbs b/src/lib/output/themes/default/partials/type-inline-partials/tuple.hbs deleted file mode 100644 index a08214172..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/tuple.hbs +++ /dev/null @@ -1,9 +0,0 @@ - - [ - {{#each elements}} - {{#unless @first}} - , - {{/unless}} - {{__partials__.type}} - {{/each}} - ] diff --git a/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx b/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx index 728b21bee..255092908 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/tuple.tsx @@ -1,19 +1,22 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { TupleType } from "../../../../../models"; -export const tuple = ({partials }: DefaultThemeRenderContext) => (props: TupleType) => ( - <> - [ - {props.elements.map((item, i) => ( +export const tuple = + ({ partials }: DefaultThemeRenderContext) => + (props: TupleType) => + ( <> - {i > 0 && ( + [ + {props.elements.map((item, i) => ( <> - , + {i > 0 && ( + <> + , + + )} + {partials.type(item)} - )} - {partials.type(item)} + ))} + ] - ))} - ] - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.hbs b/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.hbs deleted file mode 100644 index e913f4e6c..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - {{operator}} - - {{__partials__.type}} - diff --git a/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx b/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx index 35cb53a32..2a7fd680d 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/typeOperator.tsx @@ -1,12 +1,15 @@ import { With } from "../../../lib"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { TypeOperatorType } from "../../../../../models"; -export const typeOperator = ({partials }: DefaultThemeRenderContext) => (props: TypeOperatorType) => ( - <> - {props.operator} - {With(props.target, (props) => ( - <>{partials.type(props)} - ))} - -); +export const typeOperator = + ({ partials }: DefaultThemeRenderContext) => + (props: TypeOperatorType) => + ( + <> + {props.operator} + {With(props.target, (props) => ( + <>{partials.type(props)} + ))} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.hbs b/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.hbs deleted file mode 100644 index 15bc6f331..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.hbs +++ /dev/null @@ -1,2 +0,0 @@ - - {{name}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx b/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx index b28cfd141..5a383343d 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/typeParameter.tsx @@ -1,8 +1,10 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { TypeParameterType } from "../../../../../models"; -export const typeParameter = (_ctx: DefaultThemeRenderContext) => (props: TypeParameterType) => ( - <> - {props.name} - -); +export const typeParameter = + (_ctx: DefaultThemeRenderContext) => (props: TypeParameterType) => + ( + <> + {props.name} + + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/union.hbs b/src/lib/output/themes/default/partials/type-inline-partials/union.hbs deleted file mode 100644 index 97d140b2f..000000000 --- a/src/lib/output/themes/default/partials/type-inline-partials/union.hbs +++ /dev/null @@ -1,13 +0,0 @@ - - {{#if needsParens}} - ( - {{/if}} - {{#each types}} - {{#unless @first}} - | - {{/unless}} - {{__partials__.type needsParens=true}} - {{/each}} - {{#if needsParens}} - ) - {{/if}} diff --git a/src/lib/output/themes/default/partials/type-inline-partials/union.tsx b/src/lib/output/themes/default/partials/type-inline-partials/union.tsx index 9c402dcdf..95e0c0fdc 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/union.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/union.tsx @@ -1,31 +1,37 @@ import { TypeInlinePartialsOptions } from "./options"; -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { UnionType } from "../../../../../models"; -export const union = ({partials }: DefaultThemeRenderContext) => (props: UnionType, { needsParens = false }: TypeInlinePartialsOptions = {}) => ( - <> - {!!needsParens && ( +export const union = + ({ partials }: DefaultThemeRenderContext) => + ( + props: UnionType, + { needsParens = false }: TypeInlinePartialsOptions = {} + ) => + ( <> - - ( - - )} - {props.types.map((item, i) => ( - <> - {i !== 0 && ( + {!!needsParens && ( <> - - | + ( + + )} + {props.types.map((item, i) => ( + <> + {i !== 0 && ( + <> + + {" "} + |{" "} + + + )} + {partials.type(item, { needsParens: true })} + + ))} + {!!needsParens && ( + <> + ) )} - {partials.type(item, { needsParens: true })} - - ))} - {!!needsParens && ( - <> - - ) - )} - -); + ); diff --git a/src/lib/output/themes/default/partials/type-inline-partials/unknown.hbs b/src/lib/output/themes/default/partials/type-inline-partials/unknown.hbs deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx b/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx index cd4f824c1..563d198ed 100644 --- a/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx +++ b/src/lib/output/themes/default/partials/type-inline-partials/unknown.tsx @@ -1,4 +1,6 @@ -import {DefaultThemeRenderContext} from '../../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../../DefaultThemeRenderContext"; import * as React from "react"; import { UnknownType } from "../../../../../models"; -export const unknown = (_ctx: DefaultThemeRenderContext) => (_props: UnknownType) => <>; +export const unknown = + (_ctx: DefaultThemeRenderContext) => (_props: UnknownType) => + <>; diff --git a/src/lib/output/themes/default/partials/type.hbs b/src/lib/output/themes/default/partials/type.hbs deleted file mode 100644 index 595d3ad73..000000000 --- a/src/lib/output/themes/default/partials/type.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{! Each type gets its own inline helper to determine how it is rendered. }} -{{! The name of the helper is the value of the 'type' property on the type.}} - -{{! -The type helper accepts an optional needsParens parameter that is checked -if an inner type may result in invalid output without them. For example: -1 | 2[] !== (1 | 2)[] -() => 1 | 2 !== (() => 1) | 2 -}} - -{{#if this}} - {{__partials__.lookup.dot.typeString }} -{{else}} - void -{{/if}} diff --git a/src/lib/output/themes/default/partials/type.tsx b/src/lib/output/themes/default/partials/type.tsx index 9535d1a68..660266b5c 100644 --- a/src/lib/output/themes/default/partials/type.tsx +++ b/src/lib/output/themes/default/partials/type.tsx @@ -1,9 +1,11 @@ -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { TypeInlinePartialsOptions } from "./type-inline-partials/options"; import { Type } from "../../../../models"; -export const type = ({partials }: DefaultThemeRenderContext) => (props: Type, options?: TypeInlinePartialsOptions): React.ReactElement => { +export const type = + ({ partials }: DefaultThemeRenderContext) => + (props: Type, options?: TypeInlinePartialsOptions): React.ReactElement => { /* Each type gets its own inline helper to determine how it is rendered. */ /* The name of the helper is the value of the 'type' property on the type.*/ /* @@ -12,16 +14,23 @@ export const type = ({partials }: DefaultThemeRenderContext) => (props: Type, op 1 | 2[] !== (1 | 2)[] () => 1 | 2 !== (() => 1) | 2 */ - if(props) { - const typeIdent = props.type as keyof typeof partials['typePartials']; - const renderFn = partials.typePartials[typeIdent] as TypeRenderTemplate; - return renderFn(props, options); - } else { - return <> + if (props) { + const typeIdent = + props.type as keyof typeof partials["typePartials"]; + const renderFn = partials.typePartials[ + typeIdent + ] as TypeRenderTemplate; + return renderFn(props, options); + } else { + return ( + <> + void + + ); + } + }; - void - ; - } -} - -type TypeRenderTemplate = (type: Type, options?: TypeInlinePartialsOptions) => React.ReactElement; +type TypeRenderTemplate = ( + type: Type, + options?: TypeInlinePartialsOptions +) => React.ReactElement; diff --git a/src/lib/output/themes/default/partials/typeAndParent.hbs b/src/lib/output/themes/default/partials/typeAndParent.hbs deleted file mode 100644 index 6a0bb8b3c..000000000 --- a/src/lib/output/themes/default/partials/typeAndParent.hbs +++ /dev/null @@ -1,43 +0,0 @@ - - {{#if this}} - {{#if elementType}} - - {{__partials__.typeAndParent}} - - [] - {{else}} - {{#if reflection}} - - {{#if reflection.parent.parent.url}} - {{reflection.parent.parent.name}} - {{else}} - {{reflection.parent.parent.name}} - {{/if}} - . - {{#if reflection.parent.url}} - {{reflection.parent.name}} - {{else}} - {{reflection.parent.name}} - {{/if}} - - - {{#if reflection.parent.url}} - {{reflection.parent.name}} - {{else}} - {{reflection.parent.name}} - {{/if}} - . - {{#if reflection.url}} - {{reflection.name}} - {{else}} - {{reflection.name}} - {{/if}} - - {{else}} - {{this}} - {{/if}} - {{/if}} - {{else}} - void - {{/if}} - diff --git a/src/lib/output/themes/default/partials/typeAndParent.tsx b/src/lib/output/themes/default/partials/typeAndParent.tsx index 7e91ec1f9..6b0847a17 100644 --- a/src/lib/output/themes/default/partials/typeAndParent.tsx +++ b/src/lib/output/themes/default/partials/typeAndParent.tsx @@ -1,63 +1,108 @@ -import { With, Compact, IfCond, IfNotCond, isSignature, hasElementType, isReferenceType } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { + With, + Compact, + IfCond, + IfNotCond, + isSignature, + hasElementType, + isReferenceType, +} from "../../lib"; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { Type } from "../../../../models"; -export const typeAndParent = ({relativeURL, partials }: DefaultThemeRenderContext) => (props: Type) => ( - <> - - {props ? ( - hasElementType(props) ? ( - <> - {"bar "} - {With(props.elementType, (props) => ( - <>{partials.typeAndParent(props)} - ))} - [] - - ) : isReferenceType(props) && props.reflection ? ( - <> - - {props.reflection.parent?.parent?.url ? ( - <> - {props.reflection.parent.parent.name} - - ) : ( - <> {props.reflection.parent?.parent?.name} - )} - . - {props.reflection.parent?.url ? ( - <> - {props.reflection.parent.name} - - ) : ( - <> {props.reflection.parent?.name} - )} - - - {props.reflection.parent?.url ? ( - <> - {props.reflection.parent.name} - - ) : ( - <> {props.reflection.parent?.name} - )} - . - {props.reflection.url ? ( - <> - {props.reflection.name} - - ) : ( - <> {props.reflection.name} - )} - - - ) : ( - <> {props.toString()} - ) - ) : ( - " void\n" - )} - - -); +export const typeAndParent = + ({ relativeURL, partials }: DefaultThemeRenderContext) => + (props: Type) => + ( + <> + + {props ? ( + hasElementType(props) ? ( + <> + {"bar "} + {With(props.elementType, (props) => ( + <>{partials.typeAndParent(props)} + ))} + [] + + ) : isReferenceType(props) && props.reflection ? ( + <> + + {props.reflection.parent?.parent?.url ? ( + <> + + { + props.reflection.parent + .parent.name + } + + + ) : ( + <> + {" "} + { + props.reflection.parent?.parent + ?.name + } + + )} + . + {props.reflection.parent?.url ? ( + <> + + {props.reflection.parent.name} + + + ) : ( + <> {props.reflection.parent?.name} + )} + + + {props.reflection.parent?.url ? ( + <> + + {props.reflection.parent.name} + + + ) : ( + <> {props.reflection.parent?.name} + )} + . + {props.reflection.url ? ( + <> + + {props.reflection.name} + + + ) : ( + <> {props.reflection.name} + )} + + + ) : ( + <> {props.toString()} + ) + ) : ( + " void\n" + )} + + + ); diff --git a/src/lib/output/themes/default/partials/typeParameters.hbs b/src/lib/output/themes/default/partials/typeParameters.hbs deleted file mode 100644 index dbf3ba874..000000000 --- a/src/lib/output/themes/default/partials/typeParameters.hbs +++ /dev/null @@ -1,17 +0,0 @@ -
          - {{#each typeParameters}} -
        • -

          - {{name}} - {{#if type}} - - {{__partials__.type}} - {{/if}} - {{#if default}} -  = {{__partials__.type}} - {{/if}} -

          - {{__partials__.comment}} -
        • - {{/each}} -
        diff --git a/src/lib/output/themes/default/partials/typeParameters.tsx b/src/lib/output/themes/default/partials/typeParameters.tsx index 39e82df67..9e6be1039 100644 --- a/src/lib/output/themes/default/partials/typeParameters.tsx +++ b/src/lib/output/themes/default/partials/typeParameters.tsx @@ -1,40 +1,44 @@ import { With, Compact } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { TypeParameterContainer } from "../../../../models"; -export const typeParameters = ({partials }: DefaultThemeRenderContext) => (props: TypeParameterContainer) => ( - <> -
          - {props.typeParameters?.map((item) => ( - <> - -
        • -

          - - {item.name} - {!!item.type && ( - <> - {": "} - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} - - )} - {!!item.default && ( - <> - {" = "} - {With(item.default, (props) => ( - <>{partials.type(props)} - ))} - - )} - -

          - {partials.comment(item)} -
        • - - ))} -
        - -); +export const typeParameters = + ({ partials }: DefaultThemeRenderContext) => + (props: TypeParameterContainer) => + ( + <> +
          + {props.typeParameters?.map((item) => ( + <> +
        • +

          + + {item.name} + {!!item.type && ( + <> + + {": "} + + {With(item.type, (props) => ( + <>{partials.type(props)} + ))} + + )} + {!!item.default && ( + <> + {" = "} + {With(item.default, (props) => ( + <>{partials.type(props)} + ))} + + )} + +

          + {partials.comment(item)} +
        • + + ))} +
        + + ); diff --git a/src/lib/output/themes/default/templates/index.hbs b/src/lib/output/themes/default/templates/index.hbs deleted file mode 100644 index 21ebf8ab1..000000000 --- a/src/lib/output/themes/default/templates/index.hbs +++ /dev/null @@ -1,3 +0,0 @@ -
        - {{{model.readme}}} -
        diff --git a/src/lib/output/themes/default/templates/index.tsx b/src/lib/output/themes/default/templates/index.tsx index 9fe95dc93..adcdcd0c4 100644 --- a/src/lib/output/themes/default/templates/index.tsx +++ b/src/lib/output/themes/default/templates/index.tsx @@ -1,11 +1,18 @@ -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { ProjectReflection } from "../../../../models"; import { PageEvent } from "../../../events"; -export const indexTemplate = ({markdown }: DefaultThemeRenderContext) => (props: PageEvent) => ( - <> -
        -
        - -); +export const indexTemplate = + ({ markdown }: DefaultThemeRenderContext) => + (props: PageEvent) => + ( + <> +
        + + ); diff --git a/src/lib/output/themes/default/templates/reflection.hbs b/src/lib/output/themes/default/templates/reflection.hbs deleted file mode 100644 index c1d0c8312..000000000 --- a/src/lib/output/themes/default/templates/reflection.hbs +++ /dev/null @@ -1,79 +0,0 @@ - - {{#if hasComment}} -
        - {{__partials__.comment}} -
        - {{/if}} -
        - -{{#if model.typeParameters}} -
        -

        Type parameters

        - {{__partials__.typeParameters}} -
        -{{/if}} - -{{#if model.typeHierarchy}} -
        -

        Hierarchy

        - {{__partials__.hierarchy}} -
        -{{/if}} - -{{#if model.implementedTypes}} -
        -

        Implements

        -
          - {{#each model.implementedTypes}} -
        • {{__partials__.type}}
        • - {{/each}} -
        -
        -{{/if}} - -{{#if model.implementedBy}} -
        -

        Implemented by

        -
          - {{#each model.implementedBy}} -
        • {{__partials__.type}}
        • - {{/each}} -
        -
        -{{/if}} - -{{#if model.signatures}} -
        -

        Callable

        - {{__partials__.member.signatures}} -
        -{{/if}} - -{{#if model.indexSignature}} -
        -

        Indexable

        -
        - [ - {{#each model.indexSignature.parameters}} - {{name}}: {{__partials__.type}} - {{/each}} - ]:  - {{__partials__.type}} -
        - - - {{__partials__.comment}} - - - {{#if model.indexSignature.type.declaration}} - - {{__partials__.parameter}} - - {{/if}} -
        -{{/if}} - - - {{__partials__.index}} - {{__partials__.members}} - diff --git a/src/lib/output/themes/default/templates/reflection.tsx b/src/lib/output/themes/default/templates/reflection.tsx index fbd081f6a..e3b38b476 100644 --- a/src/lib/output/themes/default/templates/reflection.tsx +++ b/src/lib/output/themes/default/templates/reflection.tsx @@ -1,131 +1,190 @@ -import { With, Compact, isDeclarationReflection, isReflectionType, hasTypeParameters } from "../../lib"; -import {DefaultThemeRenderContext} from '../DefaultThemeRenderContext'; +import { + With, + Compact, + isDeclarationReflection, + isReflectionType, + hasTypeParameters, +} from "../../lib"; +import { DefaultThemeRenderContext } from "../DefaultThemeRenderContext"; import * as React from "react"; import { PageEvent } from "../../../events"; import { ContainerReflection } from "../../../../models"; // export const reflectionTemplate = ({relativeURL, partials, markdown, Markdown }: DefaultThemeRenderContext) => (props: PageEvent) => ( -export const reflectionTemplate = ({partials }: DefaultThemeRenderContext) => (props: PageEvent) => ( - <> - {With(props.model, (props) => ( +export const reflectionTemplate = + ({ partials }: DefaultThemeRenderContext) => + (props: PageEvent) => + ( <> - {!!props.hasComment() && ( + {With(props.model, (props) => ( <> + {!!props.hasComment() && ( + <> +
        + {partials.comment(props)} +
        + + )} + + ))} -
        {partials.comment(props)}
        + {hasTypeParameters(props.model) && ( + <> +
        +

        Type parameters

        + {With(props.model, (props) => ( + <>{partials.typeParameters(props)} + ))} +
        )} - - ))} - - {hasTypeParameters(props.model) && ( - <> - -
        -

        Type parameters

        - {With(props.model, (props) => ( - <>{partials.typeParameters(props)} - ))} -
        - - )} - {isDeclarationReflection(props.model) && <> - {!!props.model.typeHierarchy && ( - <> - -
        -

        Hierarchy

        - {With(props.model.typeHierarchy, (props) => - partials.hierarchy(props) + {isDeclarationReflection(props.model) && ( + <> + {!!props.model.typeHierarchy && ( + <> +
        +

        Hierarchy

        + {With(props.model.typeHierarchy, (props) => + partials.hierarchy(props) + )} +
        + )} -
        - - )} - {!!props.model.implementedTypes && ( - <> - -
        -

        Implements

        -
          - {props.model.implementedTypes!.map((item) => ( - <> - -
        • - {partials.type(item)} -
        • - - ))} -
        -
        - - )} - {!!props.model.implementedBy && ( - <> - -
        -

        Implemented by

        -
          - {props.model.implementedBy!.map((item) => ( - <> - -
        • - {partials.type(item)} -
        • - - ))} -
        -
        - - )} - {!!props.model.signatures && ( - <> - -
        -

        Callable

        - {With(props.model, (props) => ( - <>{partials["memberSignatures"](props)} - ))} -
        - - )} - {!!props.model.indexSignature && ( - <> - -
        -

        Indexable

        -
        - - [ - {props.model.indexSignature.parameters!.map((item) => ( - <> - {item.name}: - {With(item.type, (props) => ( - <>{partials.type(props)} - ))} - - ))} - {"]: "} - {With(props.model.indexSignature!.type, (props) => ( - <>{partials.type(props)} - ))} - -
        - {With(props.model.indexSignature, (props) => ( - <>{partials.comment(props)} - ))} - {isReflectionType(props.model.indexSignature?.type) && !!props.model.indexSignature?.type?.declaration && ( + {!!props.model.implementedTypes && ( <> - - {With(props.model.indexSignature.type.declaration, (props) => ( - <>{partials.parameter(props)} - ))} +
        +

        Implements

        +
          + {props.model.implementedTypes!.map( + (item) => ( + <> +
        • + + {partials.type( + item + )} + +
        • + + ) + )} +
        +
        + + )} + {!!props.model.implementedBy && ( + <> +
        +

        Implemented by

        +
          + {props.model.implementedBy!.map( + (item) => ( + <> +
        • + + {partials.type( + item + )} + +
        • + + ) + )} +
        +
        )} -
        - - )} - } - {partials.index(props.model)} - {partials.members(props.model)} - -); + {!!props.model.signatures && ( + <> +
        +

        + Callable +

        + {With(props.model, (props) => ( + <> + {partials["memberSignatures"]( + props + )} + + ))} +
        + + )} + {!!props.model.indexSignature && ( + <> +
        +

        + Indexable +

        +
        + + + [ + + {props.model.indexSignature.parameters!.map( + (item) => ( + <> + {item.name}: + {With( + item.type, + (props) => ( + <> + {partials.type( + props + )} + + ) + )} + + ) + )} + + {"]: "} + + {With( + props.model.indexSignature! + .type, + (props) => ( + <>{partials.type(props)} + ) + )} + +
        + {With( + props.model.indexSignature, + (props) => ( + <>{partials.comment(props)} + ) + )} + {isReflectionType( + props.model.indexSignature?.type + ) && + !!props.model.indexSignature?.type + ?.declaration && ( + <> + {With( + props.model.indexSignature + .type.declaration, + (props) => ( + <> + {partials.parameter( + props + )} + + ) + )} + + )} +
        + + )} + + )} + {partials.index(props.model)} + {partials.members(props.model)} + + ); diff --git a/src/lib/output/themes/lib.tsx b/src/lib/output/themes/lib.tsx index 2196c4268..09d5aff12 100644 --- a/src/lib/output/themes/lib.tsx +++ b/src/lib/output/themes/lib.tsx @@ -1,10 +1,25 @@ import assert = require("assert"); import * as React from "react"; -import { SignatureReflection, Reflection, DeclarationReflection } from "../../.."; -import { ContainerReflection, ProjectReflection, ReferenceReflection, ReferenceType, ReflectionType, Type, TypeParameterContainer } from "../../models"; -import { DefaultValueContainer, TypeContainer } from "../../models/reflections/abstract"; -export {wbr} from '../helpers/wbr'; -export {stringify} from '../helpers/stringify'; +import { + SignatureReflection, + Reflection, + DeclarationReflection, +} from "../../.."; +import { + ContainerReflection, + ProjectReflection, + ReferenceReflection, + ReferenceType, + ReflectionType, + Type, + TypeParameterContainer, +} from "../../models"; +import { + DefaultValueContainer, + TypeContainer, +} from "../../models/reflections/abstract"; +export { wbr } from "../helpers/wbr"; +export { stringify } from "../helpers/stringify"; /** * @deprecated @@ -23,7 +38,7 @@ export function With( props: B | null | undefined, cb: (props: B) => C ): C | undefined { - if(props != null) { + if (props != null) { return cb(props); } } @@ -32,10 +47,9 @@ export function With( export class IfCond extends React.Component<{ cond: boolean }> { override render() { if (this.props.cond) { - if(this.props.children == null) return null; + if (this.props.children == null) return null; return this.props.children; - } - else return null; + } else return null; } } @@ -43,10 +57,9 @@ export class IfCond extends React.Component<{ cond: boolean }> { export class IfNotCond extends React.Component<{ cond: boolean }> { override render() { if (!this.props.cond) { - if(this.props.children == null) return null; + if (this.props.children == null) return null; return this.props.children; - } - else return null; + } else return null; } } @@ -66,38 +79,64 @@ export function isSignature( } export function classNames(names: Record) { - return Object.entries(names).filter(([, include]) => include).map(([key]) => key).join(' '); + return Object.entries(names) + .filter(([, include]) => include) + .map(([key]) => key) + .join(" "); } -export function isDeclarationReflection(reflection: Reflection): reflection is DeclarationReflection { +export function isDeclarationReflection( + reflection: Reflection +): reflection is DeclarationReflection { return reflection instanceof DeclarationReflection; } -export function assertIsDeclarationReflection(reflection: Reflection): DeclarationReflection { +export function assertIsDeclarationReflection( + reflection: Reflection +): DeclarationReflection { assert(reflection instanceof DeclarationReflection); return reflection; } -export function isProjectReflection(reflection: Reflection): reflection is ProjectReflection { +export function isProjectReflection( + reflection: Reflection +): reflection is ProjectReflection { return reflection instanceof ProjectReflection; } -export function isReflectionType(type: Type | undefined): type is ReflectionType { +export function isReflectionType( + type: Type | undefined +): type is ReflectionType { return type != null && type instanceof ReflectionType; } export function isReferenceType(type: Type | undefined): type is ReferenceType { return type != null && type instanceof ReferenceType; } -export function isReferenceReflection(reflection: Reflection): reflection is ReferenceReflection { +export function isReferenceReflection( + reflection: Reflection +): reflection is ReferenceReflection { return reflection != null && reflection instanceof ReferenceReflection; } -export function hasTypeParameters(reflection: T): reflection is T & {typeParameters: Exclude} { +export function hasTypeParameters( + reflection: T +): reflection is T & { + typeParameters: Exclude< + TypeParameterContainer["typeParameters"], + undefined + >; +} { return (reflection as TypeParameterContainer).typeParameters != null; } -export function hasType(reflection: T): reflection is T & {type: Exclude} { +export function hasType( + reflection: T +): reflection is T & { type: Exclude } { return (reflection as TypeContainer).type != null; } -export function hasDefaultValue(reflection: T): reflection is T & {defaultValue: Exclude} { +export function hasDefaultValue( + reflection: T +): reflection is T & { + defaultValue: Exclude; +} { return (reflection as DefaultValueContainer).defaultValue != null; } export interface ElementTypeContainer extends Type { @@ -109,6 +148,8 @@ export function hasElementType(type: Type): type is ElementTypeContainer { /** * TODO where this is used, it seems impossible for this to return false. */ -export function isContainer(refl: Reflection | undefined): refl is ContainerReflection { +export function isContainer( + refl: Reflection | undefined +): refl is ContainerReflection { return refl != null && refl instanceof ContainerReflection; } diff --git a/src/lib/output/themes/minimal/MinimalTheme.ts b/src/lib/output/themes/minimal/MinimalTheme.ts index e47010a87..62c9d7feb 100644 --- a/src/lib/output/themes/minimal/MinimalTheme.ts +++ b/src/lib/output/themes/minimal/MinimalTheme.ts @@ -12,7 +12,7 @@ import { import { PageEvent } from "../../events"; import { NavigationItem } from "../../models/NavigationItem"; import { indexTemplate } from "./templates"; -import { defaultLayout } from './layouts/default'; +import { defaultLayout } from "./layouts/default"; import { DefaultThemePartials } from "../default/DefaultThemePartials"; import { DefaultThemeRenderContext } from "../default/DefaultThemeRenderContext"; @@ -35,8 +35,10 @@ export class MinimalTheme extends DefaultTheme { } override getRenderContext(_pageEvent: PageEvent) { - if(!this._renderContext) { - this._renderContext = new MinimalThemeRenderContext(this._markedPlugin); + if (!this._renderContext) { + this._renderContext = new MinimalThemeRenderContext( + this._markedPlugin + ); } return this._renderContext; } diff --git a/src/lib/output/themes/minimal/layouts/default.hbs b/src/lib/output/themes/minimal/layouts/default.hbs deleted file mode 100644 index 299c1cea2..000000000 --- a/src/lib/output/themes/minimal/layouts/default.hbs +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - {{model.name}} | {{project.name}} - - - - - - -{{__partials__.header}} - - - -
        -
        - {{#if model.readme}} -
        - {{{model.readme}}} -
        - {{/if}} - - {{{contents}}} - {{__partials__.footer}} -
        -
        - - - -{{__partials__.analytics}} - - - diff --git a/src/lib/output/themes/minimal/layouts/default.tsx b/src/lib/output/themes/minimal/layouts/default.tsx index 72b4ff7a5..78b5c37e7 100644 --- a/src/lib/output/themes/minimal/layouts/default.tsx +++ b/src/lib/output/themes/minimal/layouts/default.tsx @@ -5,52 +5,79 @@ import { readFileSync } from "fs"; import { resolve } from "path"; import { Reflection } from "../../../../models"; import { MinimalThemeRenderContext } from "../MinimalTheme"; -const inlineCss = readFileSync(resolve(__dirname, '../../bin/minimal/assets/css/main.css'), 'utf8'); -const inlineJs = readFileSync(resolve(__dirname, '../../bin/minimal/assets/js/main.js'), 'utf8'); - -export const defaultLayout = ({partials, Markdown}: MinimalThemeRenderContext) => (props: PageEvent) => ( - <> - - - - - - {props.model.name} | {props.project.name} - - - - - - - {partials.header(props)} +const inlineCss = readFileSync( + resolve(__dirname, "../../bin/minimal/assets/css/main.css"), + "utf8" +); +const inlineJs = readFileSync( + resolve(__dirname, "../../bin/minimal/assets/js/main.js"), + "utf8" +); - +export const defaultLayout = + ({ partials, Markdown }: MinimalThemeRenderContext) => + (props: PageEvent) => + ( + <> + + + + + + {props.model.name} | {props.project.name} + + + + + + + {partials.header(props)} -
        -
        - {isProjectReflection(props.model) && !!props.model.readme && ( - <> + -
        - {props.model.readme} -
        - - )} -
        - {partials.footer(props)} -
        -
        +
        +
        + {isProjectReflection(props.model) && + !!props.model.readme && ( + <> +
        + + {props.model.readme} + +
        + + )} +
        + {partials.footer(props)} +
        +
        - + - {partials.analytics(props)} - - - -); + {partials.analytics(props)} + + + + ); diff --git a/src/lib/output/themes/minimal/partials/header.hbs b/src/lib/output/themes/minimal/partials/header.hbs deleted file mode 100644 index e4924d946..000000000 --- a/src/lib/output/themes/minimal/partials/header.hbs +++ /dev/null @@ -1,38 +0,0 @@ -
        -
        -
        -
        - -
        -
        - Options -
        -
        - All -
          -
        • Public
        • -
        • Public/Protected
        • -
        • All
        • -
        -
        - - - - - {{#unless settings.excludeExternals}} - - - {{/unless}} - - - -
        -
        - Menu -
        -
        -
        -
        -
        \ No newline at end of file diff --git a/src/lib/output/themes/minimal/partials/header.tsx b/src/lib/output/themes/minimal/partials/header.tsx index 90d748461..95bd0120d 100644 --- a/src/lib/output/themes/minimal/partials/header.tsx +++ b/src/lib/output/themes/minimal/partials/header.tsx @@ -3,59 +3,102 @@ import { PageEvent } from "../../../events"; import { Reflection } from "../../../../models"; import { MinimalThemeRenderContext } from "../MinimalTheme"; -export const header = ({relativeURL}: MinimalThemeRenderContext) => (props: PageEvent) => ( -
        -
        -
        -
        - -
        -
        - - Options - -
        -
        - All -
          -
        • Public
        • -
        • Public/Protected
        • -
        • - All -
        • -
        -
        - - - +export const header = + ({ relativeURL }: MinimalThemeRenderContext) => + (props: PageEvent) => + ( +
        +
        +
        +
        + +
        +
        + + Options + +
        +
        + + All + +
          +
        • + Public +
        • +
        • + Public/Protected +
        • +
        • + All +
        • +
        +
        - {!props.settings.excludeExternals && ( - <> + + - -
        +
        + + Menu +
        - - Menu -
        -
        -
        -
        -); +
      + ); diff --git a/src/lib/output/themes/minimal/partials/member.hbs b/src/lib/output/themes/minimal/partials/member.hbs deleted file mode 100644 index ef76ee0e1..000000000 --- a/src/lib/output/themes/minimal/partials/member.hbs +++ /dev/null @@ -1,31 +0,0 @@ -
      - - {{#if name}} -

      {{#each flags}}{{this}} {{/each}}{{{wbr name}}}

      - {{/if}} - - {{#if signatures}} - {{__partials__.member.signatures}} - {{else}}{{#if hasGetterOrSetter}} - {{__partials__.member.getterSetter}} - {{else}}{{#if tryGetTargetReflectionDeep}} - {{__partials__.member.reference}} - {{else}} - {{__partials__.member.declaration}} - {{/if}}{{/if}}{{/if}} - - {{#unless isContainer}} - {{#each groups}} - {{#each children}} - {{#unless hasOwnDocument}} - {{__partials__.member}} - {{/unless}} - {{/each}} - {{/each}} - {{/unless}} -
      - -{{#if isContainer}} - {{__partials__.index}} - {{__partials__.members}} -{{/if}} diff --git a/src/lib/output/themes/minimal/partials/member.tsx b/src/lib/output/themes/minimal/partials/member.tsx index 3a0c40b4c..38bf3e57c 100644 --- a/src/lib/output/themes/minimal/partials/member.tsx +++ b/src/lib/output/themes/minimal/partials/member.tsx @@ -1,50 +1,78 @@ -import { assertIsDeclarationReflection, isContainer, isDeclarationReflection, isReferenceReflection, wbr } from "../../lib"; +import { + assertIsDeclarationReflection, + isContainer, + isDeclarationReflection, + isReferenceReflection, + wbr, +} from "../../lib"; import * as React from "react"; import { DeclarationReflection } from "../../../../models"; import { MinimalThemeRenderContext } from "../MinimalTheme"; -export const member = ({partials}: MinimalThemeRenderContext) => (props: DeclarationReflection) => ( - <> -
      - - {!!props.name && ( - <> +export const member = + ({ partials }: MinimalThemeRenderContext) => + (props: DeclarationReflection) => + ( + <> +
      + + {!!props.name && ( + <> +

      + {props.flags.map((item) => ( + <> + + {item} + {" "} + + ))} + {wbr(props.name)} +

      + + )} + {isDeclarationReflection(props) && props.signatures ? ( + <> {partials["memberSignatures"](props)} + ) : isDeclarationReflection(props) && + props.hasGetterOrSetter() ? ( + <>{partials["memberGetterSetter"](props)} + ) : isReferenceReflection(props) && props.isReference ? ( + <>{partials["memberReference"](props)} + ) : ( + <> {partials["memberDeclaration"](props)} + )} -

      - {props.flags.map((item) => ( + {!isContainer(props) && + /*TODO*/ ( + props as unknown as DeclarationReflection + ).groups?.map((item) => ( <> - {item}{" "} + {item.children.map((item) => ( + <> + {!item.hasOwnDocument && ( + <> + {" "} + {partials.member( + assertIsDeclarationReflection( + item + ) + )} + + )} + + ))} ))} - {wbr(props.name)} -

      - - )} - {(isDeclarationReflection(props) && props.signatures) ? ( - <> {partials["memberSignatures"](props)} - ) : (isDeclarationReflection(props) && props.hasGetterOrSetter()) ? ( - <>{partials["memberGetterSetter"](props)} - ) : (isReferenceReflection(props) && props.isReference) ? ( - <>{partials["memberReference"](props)} - ) : ( - <> {partials["memberDeclaration"](props)} - )} - - {!isContainer(props) && (/*TODO*/props as unknown as DeclarationReflection).groups?.map((item) => ( - <> - {item.children.map((item) => ( - <>{!item.hasOwnDocument && <> {partials.member(assertIsDeclarationReflection(item))}} - ))} - - ))} -
      - - {isContainer(props) && ( - <> +
      - {partials.index(props)} - {partials.members(props)} + {isContainer(props) && ( + <> + {partials.index(props)} + {partials.members(props)} + + )} - )} - -); + ); diff --git a/src/lib/output/themes/minimal/templates/index.hbs b/src/lib/output/themes/minimal/templates/index.hbs deleted file mode 100644 index 3301c5bc4..000000000 --- a/src/lib/output/themes/minimal/templates/index.hbs +++ /dev/null @@ -1,16 +0,0 @@ - - {{__partials__.comment}} - - -{{#if model.typeHierarchy}} -
      -

      Hierarchy

      - {{__partials__.hierarchy}} -
      -{{/if}} - - -
      - {{__partials__.index}} - {{__partials__.members}} -
      diff --git a/src/lib/output/themes/minimal/templates/index.tsx b/src/lib/output/themes/minimal/templates/index.tsx index d29abc75c..13ed73fd0 100644 --- a/src/lib/output/themes/minimal/templates/index.tsx +++ b/src/lib/output/themes/minimal/templates/index.tsx @@ -3,36 +3,47 @@ import * as React from "react"; import { PageEvent } from "../../../events"; import { ProjectReflection } from "../../../../models"; import { MinimalThemeRenderContext } from "../MinimalTheme"; -export const indexTemplate = ({partials}: MinimalThemeRenderContext) => (props: PageEvent) => ( - <> - {With(props.model, (props) => ( - <>{partials.comment(props)} - ))} - - {isDeclarationReflection(props.model) && <> - {!!props.model.typeHierarchy && ( +export const indexTemplate = + ({ partials }: MinimalThemeRenderContext) => + (props: PageEvent) => + ( <> + {With(props.model, (props) => ( + <>{partials.comment(props)} + ))} -
      -

      Hierarchy

      - {With(props.model.typeHierarchy, (props) => ( - <>{partials.hierarchy(props)} - ))} -
      - - )} - {With(props.model, (props) => ( - <> -
      - -
      - {partials.index(props)} - {partials.members(props)} + {isDeclarationReflection(props.model) && ( + <> + {!!props.model.typeHierarchy && ( + <> +
      +

      Hierarchy

      + {With( + props.model.typeHierarchy, + (props) => ( + <>{partials.hierarchy(props)} + ) + )} +
      + + )} + {With(props.model, (props) => ( + <> +
      + +
      + {partials.index(props)} + {partials.members(props)} + + ))} + + )} - ))}} - -); + ); diff --git a/src/lib/output/themes/webpack.common.js b/src/lib/output/themes/webpack.common.js index ba52fd548..8011ffe05 100644 --- a/src/lib/output/themes/webpack.common.js +++ b/src/lib/output/themes/webpack.common.js @@ -46,9 +46,7 @@ const config = { ], }, - plugins: [ - new CleanWebpackPlugin() - ], + plugins: [new CleanWebpackPlugin()], }; module.exports = config; diff --git a/src/lib/output/themes/webpack.default.js b/src/lib/output/themes/webpack.default.js index d4776abeb..2e6125cd5 100644 --- a/src/lib/output/themes/webpack.default.js +++ b/src/lib/output/themes/webpack.default.js @@ -7,7 +7,10 @@ const config = { name: "Default Theme", output: { - path: path.resolve(__dirname, "../../../../dist/lib/output/themes/bin/default"), + path: path.resolve( + __dirname, + "../../../../dist/lib/output/themes/bin/default" + ), filename: "assets/js/main.js", }, @@ -28,7 +31,7 @@ const config = { plugins: [ new MiniCssExtractPlugin({ filename: "assets/css/main.css", - }) + }), ], }; diff --git a/src/lib/output/themes/webpack.minimal.js b/src/lib/output/themes/webpack.minimal.js index 6f1be849e..cda28aa2c 100644 --- a/src/lib/output/themes/webpack.minimal.js +++ b/src/lib/output/themes/webpack.minimal.js @@ -9,7 +9,10 @@ const config = { name: "Minimal Theme", output: { - path: path.resolve(__dirname, "../../../../dist/lib/output/themes/bin/minimal"), + path: path.resolve( + __dirname, + "../../../../dist/lib/output/themes/bin/minimal" + ), filename: "assets/js/main.js", }, @@ -25,7 +28,7 @@ const config = { plugins: [ new MiniCssExtractPlugin({ filename: "assets/css/main.css", - }) + }), ], }; diff --git a/src/test/capture-screenshots.ts b/src/test/capture-screenshots.ts index e9f261eb1..6ea2715a4 100644 --- a/src/test/capture-screenshots.ts +++ b/src/test/capture-screenshots.ts @@ -1,39 +1,48 @@ -import * as puppeteer from 'puppeteer'; -import * as fs from 'fs'; -import * as Path from 'path'; -import {sync as glob} from 'glob'; -import PQueue from 'p-queue'; +import * as puppeteer from "puppeteer"; +import * as fs from "fs"; +import * as Path from "path"; +import { sync as glob } from "glob"; +import PQueue from "p-queue"; const concurrency = 10; -const baseDirectory = Path.join(__dirname, '../../dist/tmp/test'); -const outputDirectory = Path.join(__dirname, '../../dist/tmp/__screenshots__'); -const globPattern = '**/*.html'; +const baseDirectory = Path.join(__dirname, "../../dist/tmp/test"); +const outputDirectory = Path.join(__dirname, "../../dist/tmp/__screenshots__"); +const globPattern = "**/*.html"; const viewport = { width: 1024, height: 768 }; async function main() { - const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] }); + const browser = await puppeteer.launch({ + args: ["--no-sandbox", "--disable-setuid-sandbox"], + }); - const queue = new PQueue({autoStart: true, concurrency}); - for(const file of glob(globPattern, {cwd: baseDirectory})) { - void queue.add(async () => { - const absPath = Path.resolve(baseDirectory, file); - const outputPath = Path.resolve(outputDirectory, Path.format({...Path.parse(file), ext: '.png', base: undefined})); - fs.mkdirSync(Path.dirname(outputPath), {recursive: true}); + const queue = new PQueue({ autoStart: true, concurrency }); + for (const file of glob(globPattern, { cwd: baseDirectory })) { + void queue.add(async () => { + const absPath = Path.resolve(baseDirectory, file); + const outputPath = Path.resolve( + outputDirectory, + Path.format({ + ...Path.parse(file), + ext: ".png", + base: undefined, + }) + ); + fs.mkdirSync(Path.dirname(outputPath), { recursive: true }); - const page = await browser.newPage(); - await page.setViewport(viewport); - await page.goto(`file://${ absPath }`, { - waitUntil: 'domcontentloaded' // 'load' 'networkidle0' 'networkidle2' - }); - await new Promise(res => setTimeout(() => res(undefined), 300)); - await page.screenshot({ path: outputPath, fullPage: true }); + const page = await browser.newPage(); + await page.setViewport(viewport); + await page.goto(`file://${absPath}`, { + waitUntil: "domcontentloaded", // 'load' 'networkidle0' 'networkidle2' + }); + await new Promise((res) => setTimeout(() => res(undefined), 300)); + await page.screenshot({ path: outputPath, fullPage: true }); - await page.close(); - }); - } - await queue.onIdle(); + await page.close(); + }); + } + await queue.onIdle(); - await browser.close(); + await browser.close(); } void main(); diff --git a/src/test/renderer.test.ts b/src/test/renderer.test.ts index 950453c13..9e68d1ce8 100644 --- a/src/test/renderer.test.ts +++ b/src/test/renderer.test.ts @@ -6,7 +6,8 @@ import { readdirSync, readFileSync, statSync } from "fs"; import { remove } from "../lib/utils/fs"; // Set to true if you want to make a visual regression test report -const PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST = process.env['PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST'] === 'true'; +const PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST = + process.env["PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST"] === "true"; function getFileIndex(base: string, dir = "", results: string[] = []) { const files = readdirSync(Path.join(base, dir)); @@ -64,8 +65,7 @@ describe("Renderer", function () { }); after(async function () { - if(!PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST) - await remove(out); + if (!PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST) await remove(out); }); it("constructs", function () { @@ -101,7 +101,7 @@ describe("Renderer", function () { this.timeout(0); await app.generateDocs(project!, out); - if(!PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST) + if (!PRESERVE_OUTPUT_FOR_VISUAL_REGRESSION_TEST) await remove(Path.join(out, "assets")); compareDirectories(Path.join(__dirname, "renderer", "specs"), out); diff --git a/tsconfig.json b/tsconfig.json index 4b4842ad9..ac991ac85 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -31,10 +31,7 @@ "jsx": "react" }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx" - ], + "include": ["src/**/*.ts", "src/**/*.tsx"], "exclude": [ "src/test/converter/**/*.ts", "src/test/converter2/**/*.ts", From 67c0421acfaef5799f62da6e13e251581ed69bfb Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Thu, 29 Jul 2021 09:53:47 -0400 Subject: [PATCH 33/33] Update lib.tsx --- src/lib/output/themes/lib.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/lib/output/themes/lib.tsx b/src/lib/output/themes/lib.tsx index 09d5aff12..5afd5fec7 100644 --- a/src/lib/output/themes/lib.tsx +++ b/src/lib/output/themes/lib.tsx @@ -1,10 +1,5 @@ import assert = require("assert"); import * as React from "react"; -import { - SignatureReflection, - Reflection, - DeclarationReflection, -} from "../../.."; import { ContainerReflection, ProjectReflection, @@ -13,6 +8,9 @@ import { ReflectionType, Type, TypeParameterContainer, + SignatureReflection, + Reflection, + DeclarationReflection, } from "../../models"; import { DefaultValueContainer,