mobility-toolbox-js 2.0.0-beta.2 → 2.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +6 -0
- package/.esdoc.json +17 -0
- package/.eslintignore +1 -0
- package/.github/workflows/conventional-pr-title.yml +21 -0
- package/.github/workflows/cypress.yml +29 -0
- package/.github/workflows/nodejs.yml +28 -0
- package/.husky/commit-msg +4 -0
- package/.husky/post-checkout +4 -0
- package/.husky/post-merge +4 -0
- package/.husky/post-rebase +4 -0
- package/.husky/pre-commit +4 -0
- package/.neutrinorc.js +176 -0
- package/.nvmrc +1 -0
- package/CHANGELOG.md +10 -0
- package/LICENSE +21 -0
- package/README.md +4 -1
- package/__mocks__/mapbox-gl.js +81 -0
- package/__mocks__/maplibre-gl.js +81 -0
- package/commitlint.config.js +1 -0
- package/cypress/fixtures/example.json +5 -0
- package/cypress/integration/examples/api.spec.js +7 -0
- package/cypress/integration/examples/examples.spec.js +7 -0
- package/cypress/integration/examples/navigation.spec.js +29 -0
- package/cypress/plugins/index.js +21 -0
- package/cypress/support/commands.js +25 -0
- package/cypress/support/index.js +20 -0
- package/cypress.json +4 -0
- package/data/fetchRoute.json +292 -0
- package/data/fetchTrajectories.json +18 -0
- package/data/fetchTrajectoryById.json +3 -0
- package/data/fetchTrajectoryStations.json +18 -0
- package/data/stopsSearch.json +15 -0
- package/documentation.yml +4 -0
- package/esdoc/README.md +27 -0
- package/esdoc/plugins/MyPlugin.js +69 -0
- package/esdoc/plugins/dynamic-property-plugin/Plugin.js +50 -0
- package/esdoc/plugins/externals-plugin/Plugin.js +45 -0
- package/esdoc/plugins/externals-plugin/externals.js +96 -0
- package/global-setup.js +3 -0
- package/{ol/README.md → index.html} +0 -0
- package/indexweb.html +49 -0
- package/jest.config.js +5 -0
- package/package.json +29 -9
- package/pull_request_template.md +17 -0
- package/renovate.json +4 -0
- package/scripts/read-pkg-json.js +22 -0
- package/{api → src/api}/index.js +0 -0
- package/{api → src/api}/routing/RoutingAPI.js +0 -0
- package/{api → src/api}/routing/RoutingAPI.test.js +0 -0
- package/{api → src/api}/stops/StopsAPI.js +0 -0
- package/{api → src/api}/stops/StopsAPI.test.js +0 -0
- package/{api → src/api}/tralis/TralisAPI.js +0 -0
- package/{api → src/api}/tralis/TralisAPI.test.js +0 -0
- package/{api → src/api}/tralis/TralisAPIUtils.js +0 -0
- package/{api → src/api}/tralis/WebSocketConnector.js +0 -0
- package/{api → src/api}/tralis/WebSocketConnector.test.js +0 -0
- package/{api → src/api}/tralis/typedefs.js +0 -0
- package/src/assets/Lato-Black.ttf +0 -0
- package/src/assets/Lato-BlackItalic.ttf +0 -0
- package/src/assets/Lato-Bold.ttf +0 -0
- package/src/assets/Lato-BoldItalic.ttf +0 -0
- package/src/assets/Lato-Italic.ttf +0 -0
- package/src/assets/Lato-Light.ttf +0 -0
- package/src/assets/Lato-LightItalic.ttf +0 -0
- package/src/assets/Lato-Regular.ttf +0 -0
- package/src/assets/Lato-Thin.ttf +0 -0
- package/src/assets/Lato-ThinItalic.ttf +0 -0
- package/src/assets/OFL.txt +93 -0
- package/{common → src/common}/Tracker.js +0 -0
- package/{common → src/common}/api/api.js +0 -0
- package/{common → src/common}/api/api.test.js +0 -0
- package/{common → src/common}/controls/Control.js +0 -0
- package/{common → src/common}/controls/Control.test.js +0 -0
- package/src/common/index.js +5 -0
- package/{common → src/common}/layers/Layer.js +0 -0
- package/{common → src/common}/layers/Layer.test.js +0 -0
- package/{common → src/common}/mixins/CopyrightMixin.js +0 -0
- package/{common → src/common}/mixins/SearchMixin.js +0 -0
- package/{common → src/common}/mixins/TralisLayerMixin.js +0 -0
- package/{common → src/common}/styles/index.js +1 -1
- package/{common → src/common}/styles/trackerDefaultStyle.js +8 -8
- package/{common → src/common}/styles/trackerDelayStyle.js +0 -0
- package/{common → src/common}/styles/trackerSimpleStyle.js +0 -0
- package/{common → src/common}/trackerConfig.js +0 -0
- package/{common → src/common}/trackerConfig.test.js +0 -0
- package/{common → src/common}/typedefs.js +0 -0
- package/{common → src/common}/utils/createTrackerFilters.js +0 -0
- package/{common → src/common}/utils/createTrackerFilters.test.js +0 -0
- package/{common → src/common}/utils/getMapboxMapCopyrights.js +0 -0
- package/{common → src/common}/utils/getMapboxMapCopyrights.test.js +0 -0
- package/{common → src/common}/utils/getMapboxStyleUrl.js +0 -0
- package/{common → src/common}/utils/getVehiclePosition.js +0 -0
- package/{common → src/common}/utils/index.js +0 -1
- package/{common → src/common}/utils/removeDuplicate.js +0 -0
- package/{common → src/common}/utils/removeDuplicate.test.js +0 -0
- package/{common → src/common}/utils/sortByDelay.js +0 -0
- package/{common → src/common}/utils/timeUtils.js +0 -0
- package/{common → src/common}/utils/timeUtils.test.js +0 -0
- package/src/doc/App.js +116 -0
- package/src/doc/App.scss +51 -0
- package/src/doc/_redirects +2 -0
- package/src/doc/components/CodeSandboxButton.js +103 -0
- package/src/doc/components/Documentation.js +40 -0
- package/src/doc/components/Esdoc/Anchor.js +57 -0
- package/src/doc/components/Esdoc/ClassDoc.js +272 -0
- package/src/doc/components/Esdoc/DeprecatedHTML.js +16 -0
- package/src/doc/components/Esdoc/DetailDocs.js +281 -0
- package/src/doc/components/Esdoc/DetailHTML.js +33 -0
- package/src/doc/components/Esdoc/DirectSubclassHTML.js +30 -0
- package/src/doc/components/Esdoc/DocBuilderUtils.js +694 -0
- package/src/doc/components/Esdoc/DocLinkHTML.js +62 -0
- package/src/doc/components/Esdoc/DocsLinkHTML.js +38 -0
- package/src/doc/components/Esdoc/Esdoc.js +63 -0
- package/src/doc/components/Esdoc/EsdocContent.js +51 -0
- package/src/doc/components/Esdoc/EsdocNavigation.js +13 -0
- package/src/doc/components/Esdoc/EsdocSearch.js +81 -0
- package/src/doc/components/Esdoc/ExperimentalHTML.js +17 -0
- package/src/doc/components/Esdoc/ExtendsChainHTML.js +32 -0
- package/src/doc/components/Esdoc/FileDocLinkHTML.js +60 -0
- package/src/doc/components/Esdoc/IdentifiersDoc.js +113 -0
- package/src/doc/components/Esdoc/IndirectSubclassHTML.js +30 -0
- package/src/doc/components/Esdoc/InheritedSummaryDoc.js +70 -0
- package/src/doc/components/Esdoc/InheritedSummaryHTML.js +38 -0
- package/src/doc/components/Esdoc/MixinClassesHTML.js +29 -0
- package/src/doc/components/Esdoc/NavDoc.js +112 -0
- package/src/doc/components/Esdoc/OverrideMethod.js +44 -0
- package/src/doc/components/Esdoc/OverrideMethodDescription.js +35 -0
- package/src/doc/components/Esdoc/Properties.js +89 -0
- package/src/doc/components/Esdoc/README.md +45 -0
- package/src/doc/components/Esdoc/SignatureHTML.js +123 -0
- package/src/doc/components/Esdoc/SingleDoc.js +31 -0
- package/src/doc/components/Esdoc/SummaryDoc.js +160 -0
- package/src/doc/components/Esdoc/SummaryHTML.js +96 -0
- package/src/doc/components/Esdoc/TypeDocLinkHTML.js +249 -0
- package/src/doc/components/Esdoc/css/identifiers.css +38 -0
- package/src/doc/components/Esdoc/css/search.css +76 -0
- package/src/doc/components/Esdoc/css/style.css +603 -0
- package/src/doc/components/Esdoc/index.js +7 -0
- package/src/doc/components/Example.js +153 -0
- package/src/doc/components/Examples.js +183 -0
- package/src/doc/components/Home.js +106 -0
- package/src/doc/components/TrackerExample.js +38 -0
- package/src/doc/examples/assets/tralis-live-map/index.js +11 -0
- package/src/doc/examples/assets/tralis-live-map/s1kreis.svg +105 -0
- package/src/doc/examples/assets/tralis-live-map/s20kreis.svg +101 -0
- package/src/doc/examples/assets/tralis-live-map/s2kreis.svg +95 -0
- package/src/doc/examples/assets/tralis-live-map/s3kreis.svg +95 -0
- package/src/doc/examples/assets/tralis-live-map/s4kreis.svg +95 -0
- package/src/doc/examples/assets/tralis-live-map/s6kreis.svg +95 -0
- package/src/doc/examples/assets/tralis-live-map/s7kreis.svg +95 -0
- package/src/doc/examples/assets/tralis-live-map/s8kreis.svg +93 -0
- package/src/doc/examples/assets/tralis-live-map/unknown.svg +107 -0
- package/src/doc/examples/mb-copyright.html +26 -0
- package/src/doc/examples/mb-copyright.js +37 -0
- package/src/doc/examples/mb-tracker.html +1 -0
- package/src/doc/examples/mb-tracker.js +39 -0
- package/src/doc/examples/mb-tracker.md +1 -0
- package/src/doc/examples/mb-tralis.html +1 -0
- package/src/doc/examples/mb-tralis.js +34 -0
- package/src/doc/examples/ol-copyright.html +26 -0
- package/src/doc/examples/ol-copyright.js +43 -0
- package/src/doc/examples/ol-mapbox-layer.html +1 -0
- package/src/doc/examples/ol-mapbox-layer.js +28 -0
- package/src/doc/examples/ol-mapbox-layer.md +0 -0
- package/src/doc/examples/ol-mapbox-style-layer.html +12 -0
- package/src/doc/examples/ol-mapbox-style-layer.js +44 -0
- package/src/doc/examples/ol-query.html +32 -0
- package/src/doc/examples/ol-query.js +83 -0
- package/src/doc/examples/ol-routing.html +26 -0
- package/src/doc/examples/ol-routing.js +59 -0
- package/src/doc/examples/ol-routing.md +1 -0
- package/src/doc/examples/ol-stop-finder.html +15 -0
- package/src/doc/examples/ol-stop-finder.js +31 -0
- package/src/doc/examples/ol-stop-finder.md +1 -0
- package/src/doc/examples/ol-tracker.html +1 -0
- package/src/doc/examples/ol-tracker.js +44 -0
- package/src/doc/examples/ol-tracker.md +1 -0
- package/src/doc/examples/ol-tralis.html +5 -0
- package/src/doc/examples/ol-tralis.js +57 -0
- package/src/doc/examples/tralis-live-map.html +1 -0
- package/src/doc/examples/tralis-live-map.js +51 -0
- package/src/doc/examples/tralis-live-map.md +3 -0
- package/src/doc/examples.js +107 -0
- package/src/doc/img/examples/live_tracker_mb.jpg +0 -0
- package/src/doc/img/examples/live_tracker_munich.jpg +0 -0
- package/src/doc/img/examples/live_tracker_ol.jpg +0 -0
- package/src/doc/img/examples/mapbox.jpg +0 -0
- package/src/doc/img/examples/mapbox_style.jpg +0 -0
- package/src/doc/img/examples/ol-copyright.png +0 -0
- package/src/doc/img/examples/query_objects.jpg +0 -0
- package/src/doc/img/examples/routing.jpg +0 -0
- package/src/doc/img/examples/simple_map.jpg +0 -0
- package/src/doc/img/examples/stops.jpg +0 -0
- package/src/doc/img/favico.ico +0 -0
- package/src/doc/index.js +21 -0
- package/src/iife.js +7 -0
- package/src/index.js +10 -0
- package/{mapbox → src/mapbox}/controls/CopyrightControl.js +0 -0
- package/src/mapbox/controls/index.js +2 -0
- package/src/mapbox/index.js +4 -0
- package/{mapbox → src/mapbox}/layers/Layer.js +0 -0
- package/{mapbox → src/mapbox}/layers/Layer.test.js +0 -0
- package/{mapbox → src/mapbox}/layers/TralisLayer.js +0 -0
- package/{mapbox → src/mapbox}/layers/TralisLayer.test.js +0 -0
- package/src/mapbox/layers/index.js +2 -0
- package/{mapbox → src/mapbox}/utils.js +0 -0
- package/src/ol/README.md +0 -0
- package/{ol → src/ol}/controls/CopyrightControl.js +0 -0
- package/{ol → src/ol}/controls/CopyrightControl.test.js +0 -0
- package/{ol → src/ol}/controls/RoutingControl.js +0 -0
- package/{ol → src/ol}/controls/RoutingControl.test.js +0 -0
- package/{ol → src/ol}/controls/StopFinderControl.js +0 -0
- package/{ol → src/ol}/controls/StopFinderControl.test.js +0 -0
- package/src/ol/controls/index.js +3 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen10.json +0 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen100.json +0 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen30.json +0 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen5.json +0 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlRouteOSM.json +0 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlStation1.json +0 -0
- package/{ol → src/ol}/controls/snapshots/RoutingControlStation2.json +0 -0
- package/src/ol/index.js +5 -0
- package/{ol → src/ol}/layers/Layer.js +0 -0
- package/{ol → src/ol}/layers/Layer.test.js +0 -0
- package/{ol → src/ol}/layers/MapboxLayer.js +0 -0
- package/{ol → src/ol}/layers/MapboxLayer.test.js +0 -0
- package/{ol → src/ol}/layers/MapboxStyleLayer.js +0 -0
- package/{ol → src/ol}/layers/MapboxStyleLayer.test.js +0 -0
- package/{ol → src/ol}/layers/MaplibreLayer.js +0 -0
- package/{ol → src/ol}/layers/RoutingLayer.js +0 -0
- package/{ol → src/ol}/layers/RoutingLayer.test.js +0 -0
- package/{ol → src/ol}/layers/TralisLayer.js +0 -0
- package/{ol → src/ol}/layers/TralisLayer.test.js +0 -0
- package/{ol → src/ol}/layers/VectorLayer.js +0 -0
- package/{ol → src/ol}/layers/VectorLayer.test.js +0 -0
- package/{ol → src/ol}/layers/WMSLayer.js +0 -0
- package/{ol → src/ol}/layers/WMSLayer.test.js +0 -0
- package/src/ol/layers/index.js +8 -0
- package/{ol → src/ol}/styles/fullTrajectoryDelayStyle.js +0 -0
- package/{ol → src/ol}/styles/fullTrajectoryStyle.js +0 -0
- package/{ol → src/ol}/styles/index.js +0 -0
- package/src/setupTests.js +15 -0
- package/webpack.config.js +6 -0
- package/index.js +0 -2
- package/index.js.map +0 -1
- package/mapbox/index.js +0 -3
- package/module.js +0 -23
- package/ol/index.js +0 -13
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/* eslint-disable react/prop-types */
|
|
2
|
+
/* eslint-disable react/no-array-index-key */
|
|
3
|
+
/* eslint-disable no-underscore-dangle */
|
|
4
|
+
import React, { useMemo } from 'react';
|
|
5
|
+
import { _findAccessDocs, _find } from './DocBuilderUtils';
|
|
6
|
+
import SummaryDoc from './SummaryDoc';
|
|
7
|
+
|
|
8
|
+
const accessValues = ['public', 'protected', 'private'];
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* build inherited method/member summary.
|
|
12
|
+
* https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/ClassDocBuilder.js#L220
|
|
13
|
+
* @param {DocObject} doc - target class doc.
|
|
14
|
+
* @returns {string} html of inherited method/member from ancestor classes.
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
function SummaryHTML({ doc, kind, title, isStatic = true, inherited = false }) {
|
|
18
|
+
const accessDocs = useMemo(() => {
|
|
19
|
+
const classDocs = _findAccessDocs(doc, kind, isStatic);
|
|
20
|
+
|
|
21
|
+
if (doc && ['class', 'interface'].indexOf(doc.kind) !== -1) {
|
|
22
|
+
const longnames = [
|
|
23
|
+
...(doc._custom_extends_chains || []),
|
|
24
|
+
// ...doc.implements || [],
|
|
25
|
+
// ...doc._custom_indirect_implements || [],
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
longnames
|
|
29
|
+
.map((longname) => _find({ longname })[0])
|
|
30
|
+
.forEach((classDoc) => {
|
|
31
|
+
// Add inherited methods or members.
|
|
32
|
+
if (classDoc && inherited) {
|
|
33
|
+
const docVals = _find({
|
|
34
|
+
memberof: classDoc.longname,
|
|
35
|
+
kind: [kind],
|
|
36
|
+
static: isStatic,
|
|
37
|
+
}).filter(
|
|
38
|
+
// We display only public classes
|
|
39
|
+
(v) => v.access === 'public' && !v.builtinExternal,
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
if (docVals.length) {
|
|
43
|
+
docVals.forEach((docV) => {
|
|
44
|
+
const idx = accessValues.indexOf(docV.access);
|
|
45
|
+
if (
|
|
46
|
+
idx !== -1 &&
|
|
47
|
+
!classDocs[idx][1].find((el) => el.name === docV.name)
|
|
48
|
+
) {
|
|
49
|
+
classDocs[idx][1].push(docV);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Order alphabetically (by name) the members/methods.
|
|
58
|
+
return classDocs.map((cD) => {
|
|
59
|
+
/* eslint-disable no-param-reassign */
|
|
60
|
+
cD[1] = cD[1].sort((a, b) => {
|
|
61
|
+
if (a.name < b.name) {
|
|
62
|
+
return -1;
|
|
63
|
+
}
|
|
64
|
+
if (a.name > b.name) {
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
return 0;
|
|
68
|
+
});
|
|
69
|
+
return cD;
|
|
70
|
+
});
|
|
71
|
+
}, [doc, kind, isStatic, inherited]);
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<>
|
|
75
|
+
{accessDocs.map((accessDoc, idx) => {
|
|
76
|
+
const docs = accessDoc[1];
|
|
77
|
+
if (!docs.length) return null;
|
|
78
|
+
|
|
79
|
+
let prefix = '';
|
|
80
|
+
if (docs[0].static) prefix = 'Static ';
|
|
81
|
+
const _title = `${prefix}${
|
|
82
|
+
accessDoc[0] === 'Public' ? '' : `${accessDoc[0]} `
|
|
83
|
+
}${title}`;
|
|
84
|
+
return (
|
|
85
|
+
<SummaryDoc
|
|
86
|
+
key={idx}
|
|
87
|
+
docs={docs}
|
|
88
|
+
title={_title}
|
|
89
|
+
memberof={doc && doc.memberof}
|
|
90
|
+
/>
|
|
91
|
+
);
|
|
92
|
+
})}
|
|
93
|
+
</>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
export default SummaryHTML;
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/* eslint-disable prefer-destructuring */
|
|
2
|
+
/* eslint-disable no-shadow */
|
|
3
|
+
/* eslint-disable no-restricted-syntax */
|
|
4
|
+
/* eslint-disable no-param-reassign */
|
|
5
|
+
/* eslint-disable react/prop-types */
|
|
6
|
+
/* eslint-disable react/no-array-index-key */
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import DocLinkHTML from './DocLinkHTML';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* build html link of type.
|
|
12
|
+
* https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L621
|
|
13
|
+
* @param {string} typeName - type name(e.g. ``number[]``, ``Map<number, string>``)
|
|
14
|
+
* @returns {string} html of link.
|
|
15
|
+
* @private
|
|
16
|
+
* @todo re-implement with parser combinator.
|
|
17
|
+
*/
|
|
18
|
+
function TypeDocLinkHTML({ typeName }) {
|
|
19
|
+
// e.g. number[]
|
|
20
|
+
let matched = typeName.match(/^(.*?)\[\]$/);
|
|
21
|
+
if (matched) {
|
|
22
|
+
typeName = matched[1];
|
|
23
|
+
return (
|
|
24
|
+
<span>
|
|
25
|
+
<DocLinkHTML longname={typeName} text={typeName} />
|
|
26
|
+
<span>[]</span>
|
|
27
|
+
</span>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// e.g. function(a: number, b: string): boolean
|
|
32
|
+
matched = typeName.match(/function *\((.*?)\)(.*)/);
|
|
33
|
+
if (matched) {
|
|
34
|
+
const functionLink = <DocLinkHTML longname="function" />;
|
|
35
|
+
if (!matched[1] && !matched[2])
|
|
36
|
+
return (
|
|
37
|
+
<span>
|
|
38
|
+
{functionLink}
|
|
39
|
+
<span>()</span>
|
|
40
|
+
</span>
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
let innerTypes = [];
|
|
44
|
+
if (matched[1]) {
|
|
45
|
+
// bad hack: Map.<string, boolean> => Map.<string\Z boolean>
|
|
46
|
+
// bad hack: {a: string, b: boolean} => {a\Y string\Z b\Y boolean}
|
|
47
|
+
const inner = matched[1]
|
|
48
|
+
.replace(/<.*?>/g, (a) => a.replace(/,/g, '\\Z'))
|
|
49
|
+
.replace(/{.*?}/g, (a) => a.replace(/,/g, '\\Z').replace(/:/g, '\\Y'));
|
|
50
|
+
innerTypes = inner.split(',').map((v) => {
|
|
51
|
+
const tmp = v.split(':').map((v) => v.trim());
|
|
52
|
+
if (tmp.length !== 2)
|
|
53
|
+
throw new SyntaxError(
|
|
54
|
+
`Invalid function type annotation: \`${matched[0]}\``,
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
const paramName = tmp[0];
|
|
58
|
+
const typeName = tmp[1].replace(/\\Z/g, ',').replace(/\\Y/g, ':');
|
|
59
|
+
return (
|
|
60
|
+
<>
|
|
61
|
+
{paramName}: <TypeDocLinkHTML typeName={typeName} />
|
|
62
|
+
</>
|
|
63
|
+
);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let returnType = '';
|
|
68
|
+
if (matched[2]) {
|
|
69
|
+
const type = matched[2].split(':')[1];
|
|
70
|
+
|
|
71
|
+
if (type)
|
|
72
|
+
returnType = (
|
|
73
|
+
<>
|
|
74
|
+
: <TypeDocLinkHTML typeName={type.trim()} />
|
|
75
|
+
</>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<span>
|
|
81
|
+
{functionLink}
|
|
82
|
+
<span>
|
|
83
|
+
(
|
|
84
|
+
{innerTypes.map((comp, idx) => {
|
|
85
|
+
return (
|
|
86
|
+
<React.Fragment key={idx}>
|
|
87
|
+
{comp}
|
|
88
|
+
{idx !== innerTypes.length - 1 ? ', ' : ''}
|
|
89
|
+
</React.Fragment>
|
|
90
|
+
);
|
|
91
|
+
})}
|
|
92
|
+
)
|
|
93
|
+
</span>
|
|
94
|
+
{returnType}
|
|
95
|
+
</span>
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// e.g. {a: number, b: string}
|
|
100
|
+
matched = typeName.match(/^\{(.*?)\}$/);
|
|
101
|
+
if (matched) {
|
|
102
|
+
if (!matched[1]) return '{}';
|
|
103
|
+
|
|
104
|
+
// bad hack: Map.<string, boolean> => Map.<string\Z boolean>
|
|
105
|
+
// bad hack: {a: string, b: boolean} => {a\Y string\Z b\Y boolean}
|
|
106
|
+
const inner = matched[1]
|
|
107
|
+
.replace(/<.*?>/g, (a) => a.replace(/,/g, '\\Z'))
|
|
108
|
+
.replace(/{.*?}/g, (a) => a.replace(/,/g, '\\Z').replace(/:/g, '\\Y'));
|
|
109
|
+
|
|
110
|
+
let broken = false;
|
|
111
|
+
|
|
112
|
+
const innerTypes = inner.split(',').map((v) => {
|
|
113
|
+
const tmp = v.split(':').map((v) => v.trim());
|
|
114
|
+
|
|
115
|
+
// edge case: if object key includes comma, this parsing is broken.
|
|
116
|
+
// e.g. {"a,b": 10}
|
|
117
|
+
// https://github.com/esdoc/esdoc-plugins/pull/49
|
|
118
|
+
if (!tmp[0] || !tmp[1]) {
|
|
119
|
+
broken = true;
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const paramName = tmp[0];
|
|
124
|
+
let typeName = tmp[1].replace(/\\Z/g, ',').replace(/\\Y/g, ':');
|
|
125
|
+
if (typeName.includes('|')) {
|
|
126
|
+
typeName = typeName.replace(/^\(/, '').replace(/\)$/, '');
|
|
127
|
+
const typeNames = typeName.split('|').map((v) => v.trim());
|
|
128
|
+
const html = [];
|
|
129
|
+
for (const unionType of typeNames) {
|
|
130
|
+
html.push(<TypeDocLinkHTML typeName={unionType} />);
|
|
131
|
+
}
|
|
132
|
+
return (
|
|
133
|
+
<>
|
|
134
|
+
{paramName}:{' '}
|
|
135
|
+
{html.map((comp, idx) => {
|
|
136
|
+
return (
|
|
137
|
+
<React.Fragment key={idx}>
|
|
138
|
+
{comp}
|
|
139
|
+
{idx !== html.length - 1 ? '|' : ''}
|
|
140
|
+
</React.Fragment>
|
|
141
|
+
);
|
|
142
|
+
})}
|
|
143
|
+
</>
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
return (
|
|
147
|
+
<>
|
|
148
|
+
{paramName}: <TypeDocLinkHTML typeName={typeName} />
|
|
149
|
+
</>
|
|
150
|
+
);
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
if (broken) return `*`;
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
<>
|
|
157
|
+
{`{`}
|
|
158
|
+
{innerTypes.map((comp, idx) => {
|
|
159
|
+
return (
|
|
160
|
+
<React.Fragment key={idx}>
|
|
161
|
+
{comp}
|
|
162
|
+
{idx !== innerTypes.length - 1 ? ', ' : ''}
|
|
163
|
+
</React.Fragment>
|
|
164
|
+
);
|
|
165
|
+
})}
|
|
166
|
+
{`}`}
|
|
167
|
+
</>
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// e.g. Map<number, string>
|
|
172
|
+
matched = typeName.match(/^(.*?)\.?<(.*?)>$/);
|
|
173
|
+
if (matched) {
|
|
174
|
+
const mainType = matched[1];
|
|
175
|
+
// bad hack: Map.<string, boolean> => Map.<string\Z boolean>
|
|
176
|
+
// bad hack: {a: string, b: boolean} => {a\Y string\Z b\Y boolean}
|
|
177
|
+
const inner = matched[2]
|
|
178
|
+
.replace(/<.*?>/g, (a) => a.replace(/,/g, '\\Z'))
|
|
179
|
+
.replace(/{.*?}/g, (a) => a.replace(/,/g, '\\Z').replace(/:/g, '\\Y'));
|
|
180
|
+
const innerTypes = inner.split(',').map((v) => {
|
|
181
|
+
return v.split('|').map((vv, idx) => {
|
|
182
|
+
vv = vv.trim().replace(/\\Z/g, ',').replace(/\\Y/g, ':');
|
|
183
|
+
return (
|
|
184
|
+
<React.Fragment key={idx}>
|
|
185
|
+
<TypeDocLinkHTML typeName={vv} />
|
|
186
|
+
{idx !== v.split('|').length - 1 ? '|' : ''}
|
|
187
|
+
</React.Fragment>
|
|
188
|
+
);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
const html = (
|
|
193
|
+
<>
|
|
194
|
+
<DocLinkHTML longname={mainType} text={mainType} />
|
|
195
|
+
{`<`}
|
|
196
|
+
{innerTypes.map((comp, idx) => {
|
|
197
|
+
return (
|
|
198
|
+
<React.Fragment key={idx}>
|
|
199
|
+
{comp}
|
|
200
|
+
{idx !== innerTypes.length - 1 ? ', ' : ''}
|
|
201
|
+
</React.Fragment>
|
|
202
|
+
);
|
|
203
|
+
})}
|
|
204
|
+
{`>`}
|
|
205
|
+
</>
|
|
206
|
+
);
|
|
207
|
+
return html;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (typeName.indexOf('...') === 0) {
|
|
211
|
+
typeName = typeName.replace('...', '');
|
|
212
|
+
if (typeName.includes('|')) {
|
|
213
|
+
const typeNames = typeName.replace('(', '').replace(')', '').split('|');
|
|
214
|
+
const typeLinks = typeNames.map((v) => <DocLinkHTML longname={v} />);
|
|
215
|
+
return (
|
|
216
|
+
<>
|
|
217
|
+
...(
|
|
218
|
+
{typeLinks.map((comp, idx) => {
|
|
219
|
+
return (
|
|
220
|
+
<React.Fragment key={idx}>
|
|
221
|
+
{comp}
|
|
222
|
+
{idx !== typeLinks.length - 1 ? '|' : ''}
|
|
223
|
+
</React.Fragment>
|
|
224
|
+
);
|
|
225
|
+
})}
|
|
226
|
+
)
|
|
227
|
+
</>
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
return (
|
|
231
|
+
<>
|
|
232
|
+
...
|
|
233
|
+
<DocLinkHTML longname={typeName} />
|
|
234
|
+
</>
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
if (typeName.indexOf('?') === 0) {
|
|
238
|
+
typeName = typeName.replace('?', '');
|
|
239
|
+
return (
|
|
240
|
+
<>
|
|
241
|
+
?
|
|
242
|
+
<DocLinkHTML longname={typeName} />
|
|
243
|
+
</>
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
return <DocLinkHTML longname={typeName} />;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export default React.memo(TypeDocLinkHTML);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* stylelint-disable */
|
|
2
|
+
/* .identifiers-wrap {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: flex-start;
|
|
5
|
+
} */
|
|
6
|
+
|
|
7
|
+
.identifier-dir-tree {
|
|
8
|
+
background: #fff;
|
|
9
|
+
border: solid 1px #ddd;
|
|
10
|
+
border-radius: 0.25em;
|
|
11
|
+
top: 52px;
|
|
12
|
+
position: -webkit-sticky;
|
|
13
|
+
position: sticky;
|
|
14
|
+
max-height: calc(100vh - 155px);
|
|
15
|
+
overflow-y: scroll;
|
|
16
|
+
min-width: 200px;
|
|
17
|
+
margin-left: 1em;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.identifier-dir-tree-header {
|
|
21
|
+
padding: 0.5em;
|
|
22
|
+
background-color: #fafafa;
|
|
23
|
+
border-bottom: solid 1px #ddd;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.identifier-dir-tree-content {
|
|
27
|
+
padding: 0 0.5em 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.identifier-dir-tree-content > div {
|
|
31
|
+
padding-top: 0.25em;
|
|
32
|
+
padding-bottom: 0.25em;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.identifier-dir-tree-content a {
|
|
36
|
+
color: inherit;
|
|
37
|
+
}
|
|
38
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* stylelint-disable */
|
|
2
|
+
/* search box */
|
|
3
|
+
.search-box {
|
|
4
|
+
/* position: absolute;
|
|
5
|
+
top: 10px;
|
|
6
|
+
right: 50px; */
|
|
7
|
+
position: relative;
|
|
8
|
+
margin: 10px;
|
|
9
|
+
line-height: normal;
|
|
10
|
+
font-size: 12px;
|
|
11
|
+
|
|
12
|
+
/* Geops */
|
|
13
|
+
background: white;
|
|
14
|
+
margin: 20px 5px 10px !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.search-box img {
|
|
18
|
+
width: 20px;
|
|
19
|
+
vertical-align: top;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.esdoc .search-result {
|
|
23
|
+
position: absolute;
|
|
24
|
+
height: 600px;
|
|
25
|
+
width: 100%;
|
|
26
|
+
padding: 0;
|
|
27
|
+
margin-top: 5px;
|
|
28
|
+
margin-left: 24px;
|
|
29
|
+
background: white;
|
|
30
|
+
box-shadow: 1px 1px 4px rgb(0,0,0);
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
overflow-y: scroll;
|
|
33
|
+
|
|
34
|
+
/* Geops */
|
|
35
|
+
max-height: 300px;
|
|
36
|
+
min-width: 200px;
|
|
37
|
+
max-width: 500px;
|
|
38
|
+
width: auto;
|
|
39
|
+
margin-left: 0px;
|
|
40
|
+
height: auto;
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.esdoc .search-result-import-path {
|
|
45
|
+
color: #aaa;
|
|
46
|
+
font-size: 12px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.esdoc .search-result li {
|
|
50
|
+
list-style: none;
|
|
51
|
+
padding: 2px 4px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.search-result li a {
|
|
55
|
+
display: block;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.search-result li.selected {
|
|
59
|
+
background: #ddd;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.search-result li.search-separator {
|
|
63
|
+
background: rgb(37, 138, 175);
|
|
64
|
+
color: white;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.search-box.active .search-input {
|
|
68
|
+
visibility: visible;
|
|
69
|
+
transition: width 0.2s ease-out;
|
|
70
|
+
/* Geops width: 300px; */
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.search-box.active .search-input-edge {
|
|
74
|
+
display: inline-block;
|
|
75
|
+
}
|
|
76
|
+
|