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,103 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { getParameters } from 'codesandbox/lib/api/define';
|
|
4
|
+
import { Button, SvgIcon } from '@material-ui/core';
|
|
5
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
6
|
+
|
|
7
|
+
const useStyles = makeStyles({
|
|
8
|
+
button: {
|
|
9
|
+
padding: '5px 15px',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
function CodeSandboxButton({ html, js, extraFiles, ...props }) {
|
|
14
|
+
const classes = useStyles();
|
|
15
|
+
|
|
16
|
+
if (!html || !js) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const dataSB = {
|
|
21
|
+
files: {
|
|
22
|
+
'index.html': {
|
|
23
|
+
content: `${html}<script src="index.js"></script>`,
|
|
24
|
+
},
|
|
25
|
+
'index.js': {
|
|
26
|
+
content: js // eslint-disable-next-line no-template-curly-in-string
|
|
27
|
+
.replaceAll('${window.apiKey}', window.apiKey)
|
|
28
|
+
.replaceAll('window.apiKey', `'${window.apiKey}'`),
|
|
29
|
+
},
|
|
30
|
+
'package.json': {
|
|
31
|
+
content: {
|
|
32
|
+
name: 'vanilla',
|
|
33
|
+
version: '1.0.0',
|
|
34
|
+
description: 'Mobility example starter project',
|
|
35
|
+
main: 'index.html',
|
|
36
|
+
scripts: {
|
|
37
|
+
start: 'parcel index.html --open',
|
|
38
|
+
build: 'parcel build index.html',
|
|
39
|
+
},
|
|
40
|
+
dependencies: {
|
|
41
|
+
'mapbox-gl': '1',
|
|
42
|
+
'maplibre-gl': '2',
|
|
43
|
+
'mobility-toolbox-js': 'latest@beta',
|
|
44
|
+
ol: '6.3.1',
|
|
45
|
+
'query-string': '6.13.1',
|
|
46
|
+
},
|
|
47
|
+
devDependencies: {
|
|
48
|
+
'@babel/core': '7.2.0',
|
|
49
|
+
'parcel-bundler': '^1.6.1',
|
|
50
|
+
},
|
|
51
|
+
keywords: [
|
|
52
|
+
'javascript',
|
|
53
|
+
'starter',
|
|
54
|
+
'mobility-toolbox-js',
|
|
55
|
+
'mobility',
|
|
56
|
+
'toolbox',
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
...extraFiles,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
const dataSBStr = getParameters(dataSB);
|
|
64
|
+
return (
|
|
65
|
+
<form
|
|
66
|
+
action="https://codesandbox.io/api/v1/sandboxes/define"
|
|
67
|
+
method="POST"
|
|
68
|
+
target="_blank"
|
|
69
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
70
|
+
{...props}
|
|
71
|
+
>
|
|
72
|
+
<input type="hidden" name="parameters" value={dataSBStr} />
|
|
73
|
+
<Button
|
|
74
|
+
type="submit"
|
|
75
|
+
className={classes.button}
|
|
76
|
+
startIcon={
|
|
77
|
+
<SvgIcon fontSize="large">
|
|
78
|
+
<path
|
|
79
|
+
d="M2 6l10.455-6L22.91 6L23 17.95L12.455 24L2 18V6zm2.088 2.481v4.757l3.345 1.86v3.516l3.972 2.296v-8.272L4.088 8.481zm16.739 0l-7.317 4.157v8.272l3.972-2.296V15.1l3.345-1.861V8.48zM5.134 6.601l7.303 4.144l7.32-4.18l-3.871-2.197l-3.41 1.945l-3.43-1.968L5.133 6.6z"
|
|
80
|
+
fill="currentColor"
|
|
81
|
+
/>
|
|
82
|
+
</SvgIcon>
|
|
83
|
+
}
|
|
84
|
+
>
|
|
85
|
+
Edit in Sandbox
|
|
86
|
+
</Button>
|
|
87
|
+
</form>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
CodeSandboxButton.propTypes = {
|
|
92
|
+
html: PropTypes.string,
|
|
93
|
+
js: PropTypes.string,
|
|
94
|
+
extraFiles: PropTypes.shape(),
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
CodeSandboxButton.defaultProps = {
|
|
98
|
+
html: null,
|
|
99
|
+
js: null,
|
|
100
|
+
extraFiles: {},
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export default React.memo(CodeSandboxButton);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
3
|
+
import { useParams, useLocation } from 'react-router-dom';
|
|
4
|
+
import Esdoc from './Esdoc/Esdoc';
|
|
5
|
+
|
|
6
|
+
const useStyles = makeStyles({
|
|
7
|
+
root: {
|
|
8
|
+
display: 'flex',
|
|
9
|
+
flexGrow: 1,
|
|
10
|
+
justifyContent: 'center',
|
|
11
|
+
height: '100%',
|
|
12
|
+
},
|
|
13
|
+
iframe: {
|
|
14
|
+
flexGrow: 1,
|
|
15
|
+
border: 0,
|
|
16
|
+
overflow: 'hidden',
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
function Documentation() {
|
|
21
|
+
const classes = useStyles();
|
|
22
|
+
const params = useParams();
|
|
23
|
+
const { hash } = useLocation();
|
|
24
|
+
const [path, setPath] = useState('identifiers%20html');
|
|
25
|
+
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const matchPath = (params || {})['*'];
|
|
28
|
+
if (matchPath) {
|
|
29
|
+
setPath(matchPath.replace(/ /g, '.') + hash);
|
|
30
|
+
}
|
|
31
|
+
}, [params, hash]);
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<div className={classes.root}>
|
|
35
|
+
<Esdoc path={path} />
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default React.memo(Documentation);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* eslint-disable react/prop-types */
|
|
2
|
+
/* eslint-disable no-underscore-dangle */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import { Scrollchor } from 'react-scrollchor';
|
|
6
|
+
|
|
7
|
+
const propTypes = {
|
|
8
|
+
/**
|
|
9
|
+
* Path to the link, can include an anchor #
|
|
10
|
+
*/
|
|
11
|
+
path: PropTypes.string.isRequired,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Children content of the link.
|
|
15
|
+
*/
|
|
16
|
+
children: PropTypes.node.isRequired,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Anchor which returns a Scrollchor element
|
|
21
|
+
* if the path contains an anchor (#), otherwise it returns a <a> element.
|
|
22
|
+
* @param {string} options.path Path to the link, can include an anchor #
|
|
23
|
+
* @param {node} options.children Children content of the link.
|
|
24
|
+
* @return {node} Scrollchor or <a> element
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
function Anchor({ path, children, ...other }) {
|
|
28
|
+
const pathElements = path.split('#');
|
|
29
|
+
if (pathElements[0] === window.location.pathname) {
|
|
30
|
+
const anchor = pathElements[1];
|
|
31
|
+
const to = anchor ? `#${anchor}` : '';
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<Scrollchor
|
|
35
|
+
to={to}
|
|
36
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
37
|
+
{...other}
|
|
38
|
+
>
|
|
39
|
+
{children}
|
|
40
|
+
</Scrollchor>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<a
|
|
46
|
+
href={path}
|
|
47
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
48
|
+
{...other}
|
|
49
|
+
>
|
|
50
|
+
{children}
|
|
51
|
+
</a>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
Anchor.propTypes = propTypes;
|
|
56
|
+
|
|
57
|
+
export default Anchor;
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/* eslint-disable no-underscore-dangle */
|
|
2
|
+
/* eslint-disable react/prop-types */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
5
|
+
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
6
|
+
import Markdown from 'react-markdown';
|
|
7
|
+
import FileDocLinkHTML from './FileDocLinkHTML';
|
|
8
|
+
import MixinClassesHTML from './MixinClassesHTML';
|
|
9
|
+
import ExtendsChainHTML from './ExtendsChainHTML';
|
|
10
|
+
import DirectSubclassHTML from './DirectSubclassHTML';
|
|
11
|
+
import IndirectSubclassHTML from './IndirectSubclassHTML';
|
|
12
|
+
import DocsLinkHTML from './DocsLinkHTML';
|
|
13
|
+
import SummaryHTML from './SummaryHTML';
|
|
14
|
+
import DetailHTML from './DetailHTML';
|
|
15
|
+
import ExperimentalHTML from './ExperimentalHTML';
|
|
16
|
+
import DeprecatedHTML from './DeprecatedHTML';
|
|
17
|
+
import { parseExample } from './DocBuilderUtils';
|
|
18
|
+
|
|
19
|
+
const useStyles = makeStyles({
|
|
20
|
+
root: {
|
|
21
|
+
height: '100%',
|
|
22
|
+
width: '100%',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* build class output.
|
|
28
|
+
* https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/ClassDocBuilder.js#L30
|
|
29
|
+
* @param {DocObject} doc - class doc object.
|
|
30
|
+
* @returns {IceCap} built output.
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
function ClassDoc({ doc }) {
|
|
34
|
+
const classes = useStyles();
|
|
35
|
+
if (!doc) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const { name, access, version, since } = doc;
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<div className={classes.root}>
|
|
42
|
+
<div className="header-notice">
|
|
43
|
+
{/*
|
|
44
|
+
doc.export && importPath && importStyle && (
|
|
45
|
+
<div data-ice="importPath" className="import-path">
|
|
46
|
+
<SyntaxHighlighter language="js">
|
|
47
|
+
{`import ${importStyle} from '${importPath}';`}
|
|
48
|
+
</SyntaxHighlighter>
|
|
49
|
+
</div>
|
|
50
|
+
)
|
|
51
|
+
*/}
|
|
52
|
+
<span>{access}</span>
|
|
53
|
+
<span>{doc.interface ? ' interface' : ' class'}</span>
|
|
54
|
+
{/* TODO
|
|
55
|
+
<span data-ice="variation"> | variation </span> */}
|
|
56
|
+
{version && <span> | {version}</span>}
|
|
57
|
+
{since && <span> | {since}</span>}
|
|
58
|
+
<span>
|
|
59
|
+
| <FileDocLinkHTML doc={doc} text="source" />
|
|
60
|
+
</span>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div className="self-detail detail">
|
|
64
|
+
<h1>{name}</h1>
|
|
65
|
+
{/* TODO
|
|
66
|
+
<div data-ice="instanceDocs" className="instance-docs">
|
|
67
|
+
<span>You can directly use an instance of this class.</span>
|
|
68
|
+
<span data-ice="instanceDoc" />
|
|
69
|
+
</div> */}
|
|
70
|
+
{/* TODO
|
|
71
|
+
<div className="expression-extends" data-ice="expressionExtends">
|
|
72
|
+
<h4>Expression Extends:</h4>
|
|
73
|
+
<pre className="prettyprint">
|
|
74
|
+
<code data-ice="expressionExtendsCode" />
|
|
75
|
+
</pre>
|
|
76
|
+
</div> */}
|
|
77
|
+
<MixinClassesHTML doc={doc} />
|
|
78
|
+
<ExtendsChainHTML doc={doc} />
|
|
79
|
+
<DirectSubclassHTML doc={doc} />
|
|
80
|
+
<IndirectSubclassHTML doc={doc} />
|
|
81
|
+
{doc.implements && doc.implements.length && (
|
|
82
|
+
<div className="flat-list" data-ice="implements">
|
|
83
|
+
<h4>Implements:</h4>
|
|
84
|
+
<DocsLinkHTML
|
|
85
|
+
longnames={doc.implements}
|
|
86
|
+
text={null}
|
|
87
|
+
inner={false}
|
|
88
|
+
separator=", "
|
|
89
|
+
/>
|
|
90
|
+
</div>
|
|
91
|
+
)}
|
|
92
|
+
{doc._custom_indirect_implements &&
|
|
93
|
+
doc._custom_indirect_implements.length && (
|
|
94
|
+
<div className="flat-list" data-ice="indirectImplements">
|
|
95
|
+
<h4>Indirect Implements:</h4>
|
|
96
|
+
<DocsLinkHTML
|
|
97
|
+
longnames={doc._custom_indirect_implements}
|
|
98
|
+
text={null}
|
|
99
|
+
inner={false}
|
|
100
|
+
separator=", "
|
|
101
|
+
/>
|
|
102
|
+
</div>
|
|
103
|
+
)}
|
|
104
|
+
{doc._custom_direct_implemented &&
|
|
105
|
+
doc._custom_direct_implemented.length && (
|
|
106
|
+
<div className="flat-list" data-ice="directImplemented">
|
|
107
|
+
<h4>Direct Implemented:</h4>
|
|
108
|
+
<DocsLinkHTML
|
|
109
|
+
longnames={doc._custom_direct_implemented}
|
|
110
|
+
text={null}
|
|
111
|
+
inner={false}
|
|
112
|
+
separator=", "
|
|
113
|
+
/>
|
|
114
|
+
</div>
|
|
115
|
+
)}
|
|
116
|
+
{doc._custom_indirect_implemented &&
|
|
117
|
+
doc._custom_indirect_implemented.length && (
|
|
118
|
+
<div className="flat-list" data-ice="indirectImplemented">
|
|
119
|
+
<h4>Indirect Implemented:</h4>
|
|
120
|
+
<DocsLinkHTML
|
|
121
|
+
longnames={doc._custom_indirect_implemented}
|
|
122
|
+
text={null}
|
|
123
|
+
inner={false}
|
|
124
|
+
separator=", "
|
|
125
|
+
/>
|
|
126
|
+
</div>
|
|
127
|
+
)}
|
|
128
|
+
<div className="deprecated" data-ice="deprecated">
|
|
129
|
+
<DeprecatedHTML doc={doc} />
|
|
130
|
+
</div>
|
|
131
|
+
<div className="experimental" data-ice="experimental">
|
|
132
|
+
<ExperimentalHTML doc={doc} />
|
|
133
|
+
</div>
|
|
134
|
+
<div className="description">
|
|
135
|
+
<Markdown>{doc.description}</Markdown>
|
|
136
|
+
</div>
|
|
137
|
+
{/* TODO
|
|
138
|
+
<div className="decorator" data-ice="decorator">
|
|
139
|
+
<h4>Decorators:</h4>
|
|
140
|
+
</div> */}
|
|
141
|
+
{doc.see && doc.see.length && (
|
|
142
|
+
<div data-ice="see">
|
|
143
|
+
<h4>See:</h4>
|
|
144
|
+
<DocsLinkHTML longnames={doc.see} />
|
|
145
|
+
</div>
|
|
146
|
+
)}
|
|
147
|
+
{doc.examples && doc.examples.length && (
|
|
148
|
+
<div data-ice="exampleDocs">
|
|
149
|
+
<h4>Example:</h4>
|
|
150
|
+
|
|
151
|
+
<div className="example-doc" data-ice="exampleDoc">
|
|
152
|
+
{doc.examples.map((example) => {
|
|
153
|
+
const parsed = parseExample(example);
|
|
154
|
+
return (
|
|
155
|
+
<React.Fragment key={example}>
|
|
156
|
+
{parsed.caption && (
|
|
157
|
+
<div
|
|
158
|
+
className="example-caption"
|
|
159
|
+
data-ice="exampleCaption"
|
|
160
|
+
>
|
|
161
|
+
{parsed.caption}
|
|
162
|
+
</div>
|
|
163
|
+
)}
|
|
164
|
+
{/* <pre className="prettyprint source-code"> */}
|
|
165
|
+
{parsed.body ? (
|
|
166
|
+
<SyntaxHighlighter language="js">
|
|
167
|
+
{parsed.body}
|
|
168
|
+
</SyntaxHighlighter>
|
|
169
|
+
) : null}
|
|
170
|
+
{/* </pre> */}
|
|
171
|
+
</React.Fragment>
|
|
172
|
+
);
|
|
173
|
+
})}
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
)}
|
|
177
|
+
{/* TODO
|
|
178
|
+
<div data-ice="tests">
|
|
179
|
+
<h4>Test:</h4>
|
|
180
|
+
<ul>
|
|
181
|
+
<li data-ice="test" />
|
|
182
|
+
</ul>
|
|
183
|
+
</div> */}
|
|
184
|
+
{doc.todo && doc.todo.length && (
|
|
185
|
+
<div data-ice="todo">
|
|
186
|
+
<h4>TODO:</h4>
|
|
187
|
+
<DocsLinkHTML longnames={doc.todo} />
|
|
188
|
+
</div>
|
|
189
|
+
)}
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<div data-ice="staticMemberSummary" className="hide-no-content">
|
|
193
|
+
<h2>Static Member Summary</h2>
|
|
194
|
+
<SummaryHTML doc={doc} kind="member" title="Members" isStatic />
|
|
195
|
+
</div>
|
|
196
|
+
<div data-ice="staticMethodSummary" className="hide-no-content">
|
|
197
|
+
<h2>Static Method Summary</h2>
|
|
198
|
+
<SummaryHTML doc={doc} kind="method" title="Methods" isStatic />
|
|
199
|
+
</div>
|
|
200
|
+
<div data-ice="constructorSummary" className="hide-no-content">
|
|
201
|
+
<h2>Constructor Summary</h2>
|
|
202
|
+
<SummaryHTML
|
|
203
|
+
doc={doc}
|
|
204
|
+
kind="constructor"
|
|
205
|
+
title="Constructor"
|
|
206
|
+
isStatic={false}
|
|
207
|
+
/>
|
|
208
|
+
</div>
|
|
209
|
+
<div data-ice="memberSummary" className="hide-no-content">
|
|
210
|
+
<h2>Member Summary</h2>
|
|
211
|
+
<SummaryHTML
|
|
212
|
+
doc={doc}
|
|
213
|
+
kind="member"
|
|
214
|
+
title="Members"
|
|
215
|
+
isStatic={false}
|
|
216
|
+
inherited
|
|
217
|
+
/>
|
|
218
|
+
{/*
|
|
219
|
+
<div
|
|
220
|
+
className="inherited-summary hide-no-content"
|
|
221
|
+
data-ice="inheritedSummary"
|
|
222
|
+
>
|
|
223
|
+
<h2>Inherited Member Summary</h2>
|
|
224
|
+
<InheritedSummaryHTML doc={doc} kind="member" />
|
|
225
|
+
</div>
|
|
226
|
+
*/}
|
|
227
|
+
</div>
|
|
228
|
+
<div data-ice="methodSummary" className="hide-no-content">
|
|
229
|
+
<h2>Method Summary</h2>
|
|
230
|
+
<SummaryHTML
|
|
231
|
+
doc={doc}
|
|
232
|
+
kind="method"
|
|
233
|
+
title="Methods"
|
|
234
|
+
isStatic={false}
|
|
235
|
+
inherited
|
|
236
|
+
/>
|
|
237
|
+
{/*
|
|
238
|
+
<div
|
|
239
|
+
className="inherited-summary hide-no-content"
|
|
240
|
+
data-ice="inheritedSummary"
|
|
241
|
+
>
|
|
242
|
+
<h2>Inherited Member Summary</h2>
|
|
243
|
+
<InheritedSummaryHTML doc={doc} kind="method" />
|
|
244
|
+
</div>
|
|
245
|
+
*/}
|
|
246
|
+
</div>
|
|
247
|
+
|
|
248
|
+
<div data-ice="staticMemberDetails">
|
|
249
|
+
<DetailHTML doc={doc} kind="member" title="Members" isStatic />
|
|
250
|
+
</div>
|
|
251
|
+
<div data-ice="staticMethodDetails">
|
|
252
|
+
<DetailHTML doc={doc} kind="method" title="Methods" isStatic />
|
|
253
|
+
</div>
|
|
254
|
+
<div data-ice="constructorDetails">
|
|
255
|
+
<DetailHTML
|
|
256
|
+
doc={doc}
|
|
257
|
+
kind="constructor"
|
|
258
|
+
title="Constructors"
|
|
259
|
+
isStatic={false}
|
|
260
|
+
/>
|
|
261
|
+
</div>
|
|
262
|
+
<div data-ice="memberDetails">
|
|
263
|
+
<DetailHTML doc={doc} kind="member" title="Members" isStatic={false} />
|
|
264
|
+
</div>
|
|
265
|
+
<div data-ice="methodDetails">
|
|
266
|
+
<DetailHTML doc={doc} kind="method" title="Methods" isStatic={false} />
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export default React.memo(ClassDoc);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* build deprecated html.
|
|
3
|
+
* https://github.com/esdoc/esdoc-plugins/blob/2de5022baa569785a189056a99acd1d7ca8284b7/esdoc-publish-html-plugin/src/Builder/DocBuilder.js#L920
|
|
4
|
+
* @param {DocObject} doc - target doc object.
|
|
5
|
+
* @returns {string} if doc is not deprecated, returns empty.
|
|
6
|
+
* @private
|
|
7
|
+
*/
|
|
8
|
+
const DeprecatedHTML = (doc) => {
|
|
9
|
+
if (doc.deprecated) {
|
|
10
|
+
const deprecated = [`this ${doc.kind} was deprecated.`];
|
|
11
|
+
if (typeof doc.deprecated === 'string') deprecated.push(doc.deprecated);
|
|
12
|
+
return deprecated.join(' ');
|
|
13
|
+
}
|
|
14
|
+
return '';
|
|
15
|
+
};
|
|
16
|
+
export default DeprecatedHTML;
|