mobility-toolbox-js 2.3.10 → 2.4.0
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/api/RealtimeAPI.d.ts +290 -0
- package/api/RealtimeAPI.d.ts.map +1 -0
- package/api/RealtimeAPI.js +483 -0
- package/api/RoutingAPI.d.ts +37 -0
- package/api/RoutingAPI.d.ts.map +1 -0
- package/api/RoutingAPI.js +35 -0
- package/api/StopsAPI.d.ts +38 -0
- package/api/StopsAPI.d.ts.map +1 -0
- package/api/StopsAPI.js +36 -0
- package/api/index.d.ts +4 -0
- package/api/index.d.ts.map +1 -0
- package/api/typedefs.d.ts +179 -0
- package/api/typedefs.d.ts.map +1 -0
- package/{src/api → api}/typedefs.js +1 -11
- package/common/api/HttpAPI.d.ts +31 -0
- package/common/api/HttpAPI.d.ts.map +1 -0
- package/common/api/HttpAPI.js +57 -0
- package/common/api/WebSocketAPI.d.ts +153 -0
- package/common/api/WebSocketAPI.d.ts.map +1 -0
- package/common/api/WebSocketAPI.js +341 -0
- package/common/controls/ControlCommon.d.ts +76 -0
- package/common/controls/ControlCommon.d.ts.map +1 -0
- package/common/controls/ControlCommon.js +150 -0
- package/common/controls/CopyrightControlCommon.d.ts +13 -0
- package/common/controls/CopyrightControlCommon.d.ts.map +1 -0
- package/common/controls/CopyrightControlCommon.js +34 -0
- package/common/controls/StopFinderControlCommon.d.ts +55 -0
- package/common/controls/StopFinderControlCommon.d.ts.map +1 -0
- package/common/controls/StopFinderControlCommon.js +144 -0
- package/common/index.d.ts +3 -0
- package/common/index.d.ts.map +1 -0
- package/common/layers/LayerCommon.d.ts +94 -0
- package/common/layers/LayerCommon.d.ts.map +1 -0
- package/common/layers/LayerCommon.js +244 -0
- package/common/mixins/RealtimeLayerMixin.d.ts +288 -0
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
- package/common/mixins/RealtimeLayerMixin.js +779 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts +60 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
- package/common/mixins/UserInteractionsLayerMixin.js +241 -0
- package/common/styles/index.d.ts +5 -0
- package/common/styles/index.d.ts.map +1 -0
- package/common/styles/realtimeDefaultStyle.d.ts +36 -0
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
- package/common/styles/realtimeDefaultStyle.js +276 -0
- package/common/styles/realtimeDelayStyle.d.ts +12 -0
- package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
- package/common/styles/realtimeDelayStyle.js +13 -0
- package/common/styles/realtimeHeadingStyle.d.ts +12 -0
- package/common/styles/realtimeHeadingStyle.d.ts.map +1 -0
- package/common/styles/realtimeHeadingStyle.js +87 -0
- package/common/styles/realtimeSimpleStyle.d.ts +4 -0
- package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
- package/common/styles/realtimeSimpleStyle.js +23 -0
- package/common/typedefs.d.ts +183 -0
- package/common/typedefs.d.ts.map +1 -0
- package/{src/common → common}/typedefs.js +1 -1
- package/common/utils/compareDepartures.d.ts +11 -0
- package/common/utils/compareDepartures.d.ts.map +1 -0
- package/common/utils/compareDepartures.js +35 -0
- package/common/utils/createCanvas.d.ts +11 -0
- package/common/utils/createCanvas.d.ts.map +1 -0
- package/common/utils/createCanvas.js +28 -0
- package/common/utils/createRealtimeFilters.d.ts +13 -0
- package/common/utils/createRealtimeFilters.d.ts.map +1 -0
- package/common/utils/createRealtimeFilters.js +74 -0
- package/common/utils/debounceDeparturesMessages.d.ts +13 -0
- package/common/utils/debounceDeparturesMessages.d.ts.map +1 -0
- package/common/utils/debounceDeparturesMessages.js +28 -0
- package/common/utils/debounceWebsocketMessages.d.ts +12 -0
- package/common/utils/debounceWebsocketMessages.d.ts.map +1 -0
- package/common/utils/debounceWebsocketMessages.js +30 -0
- package/common/utils/getLayersAsFlatArray.d.ts +4 -0
- package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
- package/common/utils/getLayersAsFlatArray.js +16 -0
- package/common/utils/getMapboxMapCopyrights.d.ts +18 -0
- package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
- package/common/utils/getMapboxMapCopyrights.js +30 -0
- package/common/utils/getMapboxRender.d.ts +8 -0
- package/common/utils/getMapboxRender.d.ts.map +1 -0
- package/common/utils/getMapboxRender.js +88 -0
- package/common/utils/getMaplibreRender.d.ts +9 -0
- package/common/utils/getMaplibreRender.d.ts.map +1 -0
- package/common/utils/getMaplibreRender.js +40 -0
- package/{src/common/utils/getRealtimeModeSuffix.ts → common/utils/getRealtimeModeSuffix.d.ts} +2 -4
- package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
- package/common/utils/getRealtimeModeSuffix.js +7 -0
- package/common/utils/getUrlWithParams.d.ts +9 -0
- package/common/utils/getUrlWithParams.d.ts.map +1 -0
- package/common/utils/getUrlWithParams.js +18 -0
- package/common/utils/getVehiclePosition.d.ts +16 -0
- package/common/utils/getVehiclePosition.d.ts.map +1 -0
- package/common/utils/getVehiclePosition.js +72 -0
- package/common/utils/index.d.ts +18 -0
- package/common/utils/index.d.ts.map +1 -0
- package/{src/common → common}/utils/index.js +2 -1
- package/common/utils/realtimeConfig.d.ts +53 -0
- package/common/utils/realtimeConfig.d.ts.map +1 -0
- package/common/utils/realtimeConfig.js +202 -0
- package/common/utils/removeDuplicate.d.ts +10 -0
- package/common/utils/removeDuplicate.d.ts.map +1 -0
- package/common/utils/removeDuplicate.js +15 -0
- package/common/utils/renderTrajectories.d.ts +17 -0
- package/common/utils/renderTrajectories.d.ts.map +1 -0
- package/common/utils/renderTrajectories.js +110 -0
- package/common/utils/sortAndFilterDepartures.d.ts +16 -0
- package/common/utils/sortAndFilterDepartures.d.ts.map +1 -0
- package/common/utils/sortAndFilterDepartures.js +58 -0
- package/common/utils/sortByDelay.d.ts +4 -0
- package/common/utils/sortByDelay.d.ts.map +1 -0
- package/common/utils/sortByDelay.js +21 -0
- package/common/utils/timeUtils.d.ts +24 -0
- package/common/utils/timeUtils.d.ts.map +1 -0
- package/common/utils/timeUtils.js +39 -0
- package/iife.d.ts +3 -0
- package/iife.d.ts.map +1 -0
- package/{src/iife.js → iife.js} +1 -3
- package/index.d.ts +10 -0
- package/index.d.ts.map +1 -0
- package/index.js +10 -0
- package/mapbox/controls/CopyrightControl.d.ts +29 -0
- package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
- package/{src/mapbox/controls/CopyrightControl.ts → mapbox/controls/CopyrightControl.js} +21 -26
- package/mapbox/controls/index.d.ts +2 -0
- package/mapbox/controls/index.d.ts.map +1 -0
- package/mapbox/index.d.ts +6 -0
- package/mapbox/index.d.ts.map +1 -0
- package/mapbox/layers/Layer.d.ts +59 -0
- package/mapbox/layers/Layer.d.ts.map +1 -0
- package/mapbox/layers/Layer.js +101 -0
- package/mapbox/layers/RealtimeLayer.d.ts +180 -0
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
- package/mapbox/layers/RealtimeLayer.js +270 -0
- package/mapbox/layers/index.d.ts +3 -0
- package/mapbox/layers/index.d.ts.map +1 -0
- package/mapbox/utils/getMercatorResolution.d.ts +9 -0
- package/mapbox/utils/getMercatorResolution.d.ts.map +1 -0
- package/mapbox/utils/getMercatorResolution.js +18 -0
- package/mapbox/utils/getSourceCoordinates.d.ts +9 -0
- package/mapbox/utils/getSourceCoordinates.d.ts.map +1 -0
- package/mapbox/utils/getSourceCoordinates.js +27 -0
- package/mapbox/utils/index.d.ts +3 -0
- package/mapbox/utils/index.d.ts.map +1 -0
- package/mbt.js +64822 -0
- package/mbt.js.map +7 -0
- package/mbt.min.js +1090 -0
- package/mbt.min.js.map +7 -0
- package/ol/controls/CopyrightControl.d.ts +31 -0
- package/ol/controls/CopyrightControl.d.ts.map +1 -0
- package/ol/controls/CopyrightControl.js +68 -0
- package/ol/controls/RoutingControl.d.ts +193 -0
- package/ol/controls/RoutingControl.d.ts.map +1 -0
- package/ol/controls/RoutingControl.js +631 -0
- package/ol/controls/StopFinderControl.d.ts +30 -0
- package/ol/controls/StopFinderControl.d.ts.map +1 -0
- package/{src/ol/controls/StopFinderControl.ts → ol/controls/StopFinderControl.js} +7 -10
- package/ol/controls/index.d.ts +4 -0
- package/ol/controls/index.d.ts.map +1 -0
- package/ol/index.d.ts +6 -0
- package/ol/index.d.ts.map +1 -0
- package/ol/layers/Layer.d.ts +86 -0
- package/ol/layers/Layer.d.ts.map +1 -0
- package/ol/layers/Layer.js +174 -0
- package/ol/layers/MapGlLayer.d.ts +67 -0
- package/ol/layers/MapGlLayer.d.ts.map +1 -0
- package/ol/layers/MapGlLayer.js +218 -0
- package/ol/layers/MapboxLayer.d.ts +50 -0
- package/ol/layers/MapboxLayer.d.ts.map +1 -0
- package/ol/layers/MapboxLayer.js +109 -0
- package/ol/layers/MapboxStyleLayer.d.ts +131 -0
- package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
- package/ol/layers/MapboxStyleLayer.js +369 -0
- package/{src/ol/layers/MaplibreLayer.ts → ol/layers/MaplibreLayer.d.ts} +10 -21
- package/ol/layers/MaplibreLayer.d.ts.map +1 -0
- package/ol/layers/MaplibreLayer.js +34 -0
- package/ol/layers/RealtimeLayer.d.ts +202 -0
- package/ol/layers/RealtimeLayer.d.ts.map +1 -0
- package/ol/layers/RealtimeLayer.js +332 -0
- package/ol/layers/RoutingLayer.d.ts +35 -0
- package/ol/layers/RoutingLayer.d.ts.map +1 -0
- package/ol/layers/RoutingLayer.js +85 -0
- package/ol/layers/VectorLayer.d.ts +25 -0
- package/ol/layers/VectorLayer.d.ts.map +1 -0
- package/ol/layers/VectorLayer.js +38 -0
- package/ol/layers/WMSLayer.d.ts +42 -0
- package/ol/layers/WMSLayer.d.ts.map +1 -0
- package/ol/layers/WMSLayer.js +88 -0
- package/ol/layers/index.d.ts +9 -0
- package/ol/layers/index.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryDelayStyle.js +33 -0
- package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
- package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryStyle.js +44 -0
- package/ol/styles/index.d.ts +3 -0
- package/ol/styles/index.d.ts.map +1 -0
- package/package.json +1 -1
- package/setupTests.d.ts +2 -0
- package/setupTests.d.ts.map +1 -0
- package/{src/setupTests.js → setupTests.js} +7 -12
- package/.esdoc.js +0 -18
- package/.eslintignore +0 -1
- package/.eslintrc.js +0 -25
- package/.fixpackrc +0 -20
- package/.github/workflows/build.yml +0 -16
- package/.github/workflows/conventional-pr-title.yml +0 -16
- package/.github/workflows/cypress.yml +0 -101
- package/.github/workflows/test.yml +0 -17
- package/.husky/commit-msg +0 -4
- package/.husky/post-checkout +0 -4
- package/.husky/post-merge +0 -4
- package/.husky/post-rebase +0 -4
- package/.husky/pre-commit +0 -4
- package/.lintstagedrc.js +0 -10
- package/.nvmrc +0 -1
- package/.prettierrc.js +0 -5
- package/.stylelintrc.js +0 -4
- package/CHANGELOG.md +0 -132
- package/LICENSE +0 -21
- package/MIGRATION-V2.md +0 -248
- package/README.md +0 -42
- package/__mocks__/mapbox-gl.js +0 -81
- package/__mocks__/maplibre-gl.js +0 -81
- package/babel.config.js +0 -9
- package/commitlint.config.js +0 -1
- package/cypress/e2e/examples/api.cy.js +0 -7
- package/cypress/e2e/examples/examples.cy.js +0 -7
- package/cypress/e2e/examples/navigation.cy.js +0 -29
- package/cypress/fixtures/example.json +0 -5
- package/cypress/plugins/index.js +0 -21
- package/cypress/support/commands.js +0 -25
- package/cypress/support/e2e.js +0 -20
- package/cypress.config.ts +0 -15
- package/data/fetchRoute.json +0 -292
- package/data/fetchTrajectories.json +0 -18
- package/data/fetchTrajectoryById.json +0 -3
- package/data/fetchTrajectoryStations.json +0 -18
- package/data/stopsSearch.json +0 -15
- package/dependabot.yml +0 -15
- package/doc/.eslintrc.json +0 -1
- package/doc/README.md +0 -34
- package/doc/next.config.js +0 -16
- package/doc/package.json +0 -41
- package/doc/pages/404.js +0 -5
- package/doc/pages/_app.js +0 -61
- package/doc/pages/_document.js +0 -64
- package/doc/pages/doc/[...slug].js +0 -23
- package/doc/pages/doc.js +0 -23
- package/doc/pages/example/[example].js +0 -52
- package/doc/pages/examples.js +0 -34
- package/doc/pages/index.js +0 -25
- package/doc/public/README.md +0 -15
- package/doc/public/favicon.ico +0 -0
- package/doc/public/static/assets/Lato-Black.ttf +0 -0
- package/doc/public/static/assets/Lato-BlackItalic.ttf +0 -0
- package/doc/public/static/assets/Lato-Bold.ttf +0 -0
- package/doc/public/static/assets/Lato-BoldItalic.ttf +0 -0
- package/doc/public/static/assets/Lato-Italic.ttf +0 -0
- package/doc/public/static/assets/Lato-Light.ttf +0 -0
- package/doc/public/static/assets/Lato-LightItalic.ttf +0 -0
- package/doc/public/static/assets/Lato-Regular.ttf +0 -0
- package/doc/public/static/assets/Lato-Thin.ttf +0 -0
- package/doc/public/static/assets/Lato-ThinItalic.ttf +0 -0
- package/doc/public/static/assets/OFL.txt +0 -93
- package/doc/public/static/examples/assets/tralis-live-map/index.js +0 -11
- package/doc/public/static/examples/assets/tralis-live-map/s1kreis.svg +0 -105
- package/doc/public/static/examples/assets/tralis-live-map/s20kreis.svg +0 -101
- package/doc/public/static/examples/assets/tralis-live-map/s2kreis.svg +0 -95
- package/doc/public/static/examples/assets/tralis-live-map/s3kreis.svg +0 -95
- package/doc/public/static/examples/assets/tralis-live-map/s4kreis.svg +0 -95
- package/doc/public/static/examples/assets/tralis-live-map/s6kreis.svg +0 -95
- package/doc/public/static/examples/assets/tralis-live-map/s7kreis.svg +0 -95
- package/doc/public/static/examples/assets/tralis-live-map/s8kreis.svg +0 -93
- package/doc/public/static/examples/assets/tralis-live-map/unknown.svg +0 -107
- package/doc/public/static/examples/layers.html +0 -11
- package/doc/public/static/examples/layers.js +0 -97
- package/doc/public/static/examples/mb-copyright.html +0 -26
- package/doc/public/static/examples/mb-copyright.js +0 -37
- package/doc/public/static/examples/mb-tracker.html +0 -1
- package/doc/public/static/examples/mb-tracker.js +0 -40
- package/doc/public/static/examples/mb-tracker.md +0 -1
- package/doc/public/static/examples/mb-tralis.html +0 -1
- package/doc/public/static/examples/mb-tralis.js +0 -34
- package/doc/public/static/examples/ol-copyright.html +0 -26
- package/doc/public/static/examples/ol-copyright.js +0 -43
- package/doc/public/static/examples/ol-mapbox-layer.html +0 -1
- package/doc/public/static/examples/ol-mapbox-layer.js +0 -28
- package/doc/public/static/examples/ol-mapbox-style-layer.html +0 -12
- package/doc/public/static/examples/ol-mapbox-style-layer.js +0 -48
- package/doc/public/static/examples/ol-query.html +0 -32
- package/doc/public/static/examples/ol-query.js +0 -83
- package/doc/public/static/examples/ol-routing.html +0 -26
- package/doc/public/static/examples/ol-routing.js +0 -65
- package/doc/public/static/examples/ol-routing.md +0 -1
- package/doc/public/static/examples/ol-stop-finder.html +0 -15
- package/doc/public/static/examples/ol-stop-finder.js +0 -35
- package/doc/public/static/examples/ol-stop-finder.md +0 -1
- package/doc/public/static/examples/ol-tracker.html +0 -1
- package/doc/public/static/examples/ol-tracker.js +0 -41
- package/doc/public/static/examples/ol-tracker.md +0 -1
- package/doc/public/static/examples/ol-tralis.html +0 -5
- package/doc/public/static/examples/ol-tralis.js +0 -62
- package/doc/public/static/examples/tralis-live-map.html +0 -1
- package/doc/public/static/examples/tralis-live-map.js +0 -67
- package/doc/public/static/examples/tralis-live-map.md +0 -3
- package/doc/public/static/img/live_tracker_mb.jpg +0 -0
- package/doc/public/static/img/live_tracker_munich.jpg +0 -0
- package/doc/public/static/img/live_tracker_ol.jpg +0 -0
- package/doc/public/static/img/mapbox.jpg +0 -0
- package/doc/public/static/img/mapbox_style.jpg +0 -0
- package/doc/public/static/img/ol-copyright.png +0 -0
- package/doc/public/static/img/query_objects.jpg +0 -0
- package/doc/public/static/img/routing.jpg +0 -0
- package/doc/public/static/img/simple_map.jpg +0 -0
- package/doc/public/static/img/stops.jpg +0 -0
- package/doc/public/vercel.svg +0 -4
- package/doc/src/components/CodeSandboxButton.js +0 -102
- package/doc/src/components/Documentation.js +0 -42
- package/doc/src/components/Esdoc/Anchor.js +0 -57
- package/doc/src/components/Esdoc/ClassDoc.js +0 -272
- package/doc/src/components/Esdoc/DeprecatedHTML.js +0 -16
- package/doc/src/components/Esdoc/DetailDocs.js +0 -279
- package/doc/src/components/Esdoc/DetailHTML.js +0 -33
- package/doc/src/components/Esdoc/DirectSubclassHTML.js +0 -30
- package/doc/src/components/Esdoc/DocBuilderUtils.js +0 -697
- package/doc/src/components/Esdoc/DocLinkHTML.js +0 -63
- package/doc/src/components/Esdoc/DocsLinkHTML.js +0 -38
- package/doc/src/components/Esdoc/Esdoc.js +0 -63
- package/doc/src/components/Esdoc/EsdocContent.js +0 -56
- package/doc/src/components/Esdoc/EsdocNavigation.js +0 -13
- package/doc/src/components/Esdoc/EsdocSearch.js +0 -78
- package/doc/src/components/Esdoc/ExperimentalHTML.js +0 -17
- package/doc/src/components/Esdoc/ExtendsChainHTML.js +0 -32
- package/doc/src/components/Esdoc/FileDocLinkHTML.js +0 -62
- package/doc/src/components/Esdoc/IdentifiersDoc.js +0 -113
- package/doc/src/components/Esdoc/IndirectSubclassHTML.js +0 -30
- package/doc/src/components/Esdoc/InheritedSummaryDoc.js +0 -70
- package/doc/src/components/Esdoc/InheritedSummaryHTML.js +0 -38
- package/doc/src/components/Esdoc/MixinClassesHTML.js +0 -29
- package/doc/src/components/Esdoc/NavDoc.js +0 -112
- package/doc/src/components/Esdoc/OverrideMethod.js +0 -44
- package/doc/src/components/Esdoc/OverrideMethodDescription.js +0 -35
- package/doc/src/components/Esdoc/Properties.js +0 -89
- package/doc/src/components/Esdoc/README.md +0 -45
- package/doc/src/components/Esdoc/SignatureHTML.js +0 -123
- package/doc/src/components/Esdoc/SingleDoc.js +0 -31
- package/doc/src/components/Esdoc/SummaryDoc.js +0 -160
- package/doc/src/components/Esdoc/SummaryHTML.js +0 -96
- package/doc/src/components/Esdoc/TypeDocLinkHTML.js +0 -251
- package/doc/src/components/Esdoc/index.js +0 -7
- package/doc/src/components/Esdoc/taffydb.js +0 -2070
- package/doc/src/components/Example.js +0 -200
- package/doc/src/components/ExampleCard.js +0 -126
- package/doc/src/components/Examples.js +0 -78
- package/doc/src/components/Home.js +0 -121
- package/doc/src/components/TrackerExample.js +0 -39
- package/doc/src/examples.js +0 -117
- package/doc/styles/App.scss +0 -53
- package/doc/styles/identifiers.css +0 -38
- package/doc/styles/search.css +0 -76
- package/doc/styles/style.css +0 -603
- package/esdoc/README.md +0 -27
- package/esdoc/plugins/MyPlugin.js +0 -69
- package/esdoc/plugins/dynamic-property-plugin/Plugin.js +0 -50
- package/esdoc/plugins/externals-plugin/Plugin.js +0 -45
- package/esdoc/plugins/externals-plugin/externals.js +0 -93
- package/esdoc/plugins/optional-chaining-plugin/Plugin.js +0 -8
- package/global-setup.js +0 -3
- package/jest.config.js +0 -24
- package/pull_request_template.md +0 -17
- package/scripts/read-pkg-json.js +0 -22
- package/src/api/RealtimeAPI.test.js +0 -144
- package/src/api/RealtimeAPI.ts +0 -712
- package/src/api/RoutingAPI.test.js +0 -41
- package/src/api/RoutingAPI.ts +0 -47
- package/src/api/StopsAPI.test.js +0 -34
- package/src/api/StopsAPI.ts +0 -45
- package/src/common/api/HttpAPI.test.js +0 -68
- package/src/common/api/HttpAPI.ts +0 -77
- package/src/common/api/WebSocketAPI.test.js +0 -421
- package/src/common/api/WebSocketAPI.ts +0 -515
- package/src/common/controls/ControlCommon.test.js +0 -106
- package/src/common/controls/ControlCommon.ts +0 -194
- package/src/common/controls/CopyrightControlCommon.ts +0 -41
- package/src/common/controls/StopFinderControlCommon.ts +0 -192
- package/src/common/layers/LayerCommon.test.js +0 -158
- package/src/common/layers/LayerCommon.ts +0 -321
- package/src/common/mixins/RealtimeLayerMixin.ts +0 -1168
- package/src/common/mixins/UserInteractionsLayerMixin.test.js +0 -227
- package/src/common/mixins/UserInteractionsLayerMixin.ts +0 -352
- package/src/common/styles/realtimeDefaultStyle.ts +0 -436
- package/src/common/styles/realtimeDelayStyle.ts +0 -27
- package/src/common/styles/realtimeHeadingStyle.ts +0 -138
- package/src/common/styles/realtimeSimpleStyle.ts +0 -25
- package/src/common/utils/compareDepartures.ts +0 -46
- package/src/common/utils/createCanvas.ts +0 -33
- package/src/common/utils/createRealtimeFilters.test.js +0 -100
- package/src/common/utils/createRealtimeFilters.ts +0 -96
- package/src/common/utils/debounceDeparturesMessages.ts +0 -52
- package/src/common/utils/debounceWebsocketMessages.ts +0 -47
- package/src/common/utils/getLayersAsFlatArray.ts +0 -17
- package/src/common/utils/getMapboxMapCopyrights.test.js +0 -47
- package/src/common/utils/getMapboxMapCopyrights.ts +0 -52
- package/src/common/utils/getMapboxRender.ts +0 -104
- package/src/common/utils/getMaplibreRender.ts +0 -54
- package/src/common/utils/getUrlWithParams.ts +0 -21
- package/src/common/utils/getVehiclePosition.ts +0 -92
- package/src/common/utils/realtimeConfig.test.js +0 -57
- package/src/common/utils/realtimeConfig.ts +0 -228
- package/src/common/utils/removeDuplicate.test.js +0 -22
- package/src/common/utils/removeDuplicate.ts +0 -22
- package/src/common/utils/renderTrajectories.ts +0 -194
- package/src/common/utils/sortAndFilterDepartures.ts +0 -78
- package/src/common/utils/sortByDelay.ts +0 -29
- package/src/common/utils/timeUtils.test.js +0 -16
- package/src/common/utils/timeUtils.ts +0 -45
- package/src/index.js +0 -10
- package/src/mapbox/layers/Layer.test.js +0 -217
- package/src/mapbox/layers/Layer.ts +0 -144
- package/src/mapbox/layers/RealtimeLayer.test.js +0 -13
- package/src/mapbox/layers/RealtimeLayer.ts +0 -350
- package/src/mapbox/utils/getMercatorResolution.ts +0 -21
- package/src/mapbox/utils/getSourceCoordinates.ts +0 -34
- package/src/ol/README.md +0 -0
- package/src/ol/controls/CopyrightControl.test.js +0 -211
- package/src/ol/controls/CopyrightControl.ts +0 -82
- package/src/ol/controls/RoutingControl.test.js +0 -205
- package/src/ol/controls/RoutingControl.ts +0 -869
- package/src/ol/controls/StopFinderControl.test.js +0 -59
- package/src/ol/controls/snapshots/RoutingControlRouteGen10.json +0 -58
- package/src/ol/controls/snapshots/RoutingControlRouteGen100.json +0 -292
- package/src/ol/controls/snapshots/RoutingControlRouteGen30.json +0 -69
- package/src/ol/controls/snapshots/RoutingControlRouteGen5.json +0 -58
- package/src/ol/controls/snapshots/RoutingControlRouteOSM.json +0 -759
- package/src/ol/controls/snapshots/RoutingControlStation1.json +0 -60
- package/src/ol/controls/snapshots/RoutingControlStation2.json +0 -49
- package/src/ol/layers/Layer.test.js +0 -212
- package/src/ol/layers/Layer.ts +0 -252
- package/src/ol/layers/MapGlLayer.ts +0 -294
- package/src/ol/layers/MapboxLayer.test.js +0 -190
- package/src/ol/layers/MapboxLayer.ts +0 -136
- package/src/ol/layers/MapboxStyleLayer.test.js +0 -258
- package/src/ol/layers/MapboxStyleLayer.ts +0 -466
- package/src/ol/layers/RealtimeLayer.test.js +0 -84
- package/src/ol/layers/RealtimeLayer.ts +0 -465
- package/src/ol/layers/RoutingLayer.test.js +0 -48
- package/src/ol/layers/RoutingLayer.ts +0 -113
- package/src/ol/layers/VectorLayer.test.js +0 -87
- package/src/ol/layers/VectorLayer.ts +0 -48
- package/src/ol/layers/WMSLayer.test.js +0 -65
- package/src/ol/layers/WMSLayer.ts +0 -114
- package/src/ol/styles/fullTrajectoryDelayStyle.ts +0 -37
- package/src/ol/styles/fullTrajectoryStyle.ts +0 -56
- package/tsconfig.json +0 -23
- /package/{src/api → api}/index.js +0 -0
- /package/{src/common → common}/index.js +0 -0
- /package/{src/common → common}/styles/index.js +0 -0
- /package/{src/mapbox → mapbox}/controls/index.js +0 -0
- /package/{src/mapbox → mapbox}/index.js +0 -0
- /package/{src/mapbox → mapbox}/layers/index.js +0 -0
- /package/{src/mapbox → mapbox}/utils/index.js +0 -0
- /package/{src/ol → ol}/controls/index.js +0 -0
- /package/{src/ol → ol}/index.js +0 -0
- /package/{src/ol → ol}/layers/index.js +0 -0
- /package/{src/ol → ol}/styles/index.js +0 -0
- /package/{src/types → types}/common.d.ts +0 -0
- /package/{src/types → types}/index.d.ts +0 -0
- /package/{src/types → types}/realtime.d.ts +0 -0
- /package/{src/types → types}/routing.d.ts +0 -0
- /package/{src/types → types}/stops.d.ts +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { StopsAPI } from '../../api';
|
|
2
|
+
import ControlCommon from './ControlCommon';
|
|
3
|
+
/**
|
|
4
|
+
* A class representing a stop finder control to display on map.
|
|
5
|
+
* This class only draw the html elements.
|
|
6
|
+
* The geographic logic must be implemented by subclasses.
|
|
7
|
+
*/
|
|
8
|
+
class StopFinderControlCommon extends ControlCommon {
|
|
9
|
+
/**
|
|
10
|
+
* Constructor.
|
|
11
|
+
*
|
|
12
|
+
* @param {Object} options Map options
|
|
13
|
+
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
|
|
14
|
+
* @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
|
|
15
|
+
* @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
|
|
16
|
+
* @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
17
|
+
*/
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super(options);
|
|
20
|
+
const { apiParams, apiKey, url, placeholder } = options || {};
|
|
21
|
+
this.apiParams = Object.assign({ limit: 20 }, (apiParams || {}));
|
|
22
|
+
this.placeholder = placeholder || 'Search for a stop...';
|
|
23
|
+
const apiOptions = { apiKey };
|
|
24
|
+
if (url) {
|
|
25
|
+
apiOptions.url = url;
|
|
26
|
+
}
|
|
27
|
+
this.api = new StopsAPI(apiOptions);
|
|
28
|
+
this.abortController = new AbortController();
|
|
29
|
+
}
|
|
30
|
+
deactivate() { }
|
|
31
|
+
render(featureCollection) {
|
|
32
|
+
const suggestions = (featureCollection === null || featureCollection === void 0 ? void 0 : featureCollection.features) || [];
|
|
33
|
+
if (!this.suggestionsElt) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
|
|
37
|
+
this.suggestionsElt.innerHTML = '';
|
|
38
|
+
suggestions.forEach((suggestion) => {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
const suggElt = document.createElement('div');
|
|
41
|
+
suggElt.innerHTML = (_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.properties) === null || _a === void 0 ? void 0 : _a.name;
|
|
42
|
+
suggElt.onclick = () => {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
this.onSuggestionClick(suggestion);
|
|
45
|
+
};
|
|
46
|
+
Object.assign(suggElt.style, {
|
|
47
|
+
padding: '5px 12px',
|
|
48
|
+
});
|
|
49
|
+
(_b = this.suggestionsElt) === null || _b === void 0 ? void 0 : _b.appendChild(suggElt);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
createDefaultElement() {
|
|
53
|
+
/**
|
|
54
|
+
* Define a default element.
|
|
55
|
+
*/
|
|
56
|
+
this.element = document.createElement('div');
|
|
57
|
+
this.element.id = 'mbt-search';
|
|
58
|
+
Object.assign(this.element.style, {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
top: 0,
|
|
61
|
+
left: '50px',
|
|
62
|
+
margin: '10px',
|
|
63
|
+
display: 'flex',
|
|
64
|
+
flexDirection: 'column',
|
|
65
|
+
width: '320px',
|
|
66
|
+
});
|
|
67
|
+
// Create input element
|
|
68
|
+
this.inputElt = document.createElement('input');
|
|
69
|
+
this.inputElt.type = 'text';
|
|
70
|
+
this.inputElt.placeholder = this.placeholder;
|
|
71
|
+
this.inputElt.autocomplete = 'off';
|
|
72
|
+
this.inputElt.onkeyup = (evt) => {
|
|
73
|
+
var _a;
|
|
74
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
|
75
|
+
this.abortController = new AbortController();
|
|
76
|
+
// @ts-ignore
|
|
77
|
+
this.search(evt.target.value, this.abortController);
|
|
78
|
+
};
|
|
79
|
+
Object.assign(this.inputElt.style, {
|
|
80
|
+
padding: '10px 30px 10px 10px',
|
|
81
|
+
});
|
|
82
|
+
this.element.appendChild(this.inputElt);
|
|
83
|
+
// Create suggestions list element
|
|
84
|
+
this.suggestionsElt = document.createElement('div');
|
|
85
|
+
Object.assign(this.suggestionsElt.style, {
|
|
86
|
+
backgroundColor: 'white',
|
|
87
|
+
overflowY: 'auto',
|
|
88
|
+
cursor: 'pointer',
|
|
89
|
+
});
|
|
90
|
+
this.element.appendChild(this.suggestionsElt);
|
|
91
|
+
this.clearElt = document.createElement('div');
|
|
92
|
+
Object.assign(this.clearElt.style, {
|
|
93
|
+
display: 'none',
|
|
94
|
+
position: 'absolute',
|
|
95
|
+
right: '0',
|
|
96
|
+
padding: '0 10px',
|
|
97
|
+
fontSize: '200%',
|
|
98
|
+
cursor: 'pointer',
|
|
99
|
+
});
|
|
100
|
+
this.clearElt.innerHTML = '×';
|
|
101
|
+
this.clearElt.onclick = () => this.clear();
|
|
102
|
+
this.element.appendChild(this.clearElt);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Launch a search.
|
|
106
|
+
*
|
|
107
|
+
* @param {String} query The query to search for.
|
|
108
|
+
* @param {AbortController} abortController Abort controller used to cancel the request.
|
|
109
|
+
* @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
110
|
+
*/
|
|
111
|
+
search(q, abortController) {
|
|
112
|
+
if (q !== undefined || q !== null) {
|
|
113
|
+
this.apiParams.q = q;
|
|
114
|
+
}
|
|
115
|
+
if (this.clearElt) {
|
|
116
|
+
this.clearElt.style.display = 'block';
|
|
117
|
+
}
|
|
118
|
+
return this.api
|
|
119
|
+
.search(this.apiParams, abortController && { signal: abortController.signal })
|
|
120
|
+
.then((data) => {
|
|
121
|
+
this.render(data);
|
|
122
|
+
})
|
|
123
|
+
.catch(() => {
|
|
124
|
+
this.render();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* To be defined in inherited class
|
|
129
|
+
*/
|
|
130
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
131
|
+
onSuggestionClick(suggestion) { }
|
|
132
|
+
/**
|
|
133
|
+
* Clear the search field and close the control.
|
|
134
|
+
*/
|
|
135
|
+
clear() {
|
|
136
|
+
if (!this.suggestionsElt || !this.inputElt || !this.clearElt) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
this.inputElt.value = '';
|
|
140
|
+
this.suggestionsElt.innerHTML = '';
|
|
141
|
+
this.clearElt.style.display = 'none';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export default StopFinderControlCommon;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import BaseObject from 'ol/Object';
|
|
2
|
+
import type { AnyMap, LayerGetFeatureInfoOptions, LayerGetFeatureInfoResponse } from '../../types';
|
|
3
|
+
export type LayerCommonOptions = {
|
|
4
|
+
key?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
group?: string;
|
|
7
|
+
copyrights?: string[];
|
|
8
|
+
children?: Layer[];
|
|
9
|
+
visible?: Boolean;
|
|
10
|
+
disabled?: Boolean;
|
|
11
|
+
hitTolerance?: Number;
|
|
12
|
+
properties?: {
|
|
13
|
+
[x: string]: any;
|
|
14
|
+
};
|
|
15
|
+
map?: AnyMap;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A class representing a layer to display on map.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const layer = new Layer({
|
|
22
|
+
* name: 'My Layer',
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* @classproperty {string} key - Identifier of the layer. Must be unique.
|
|
26
|
+
* @classproperty {string} name - Name of the layer
|
|
27
|
+
* @classproperty {string[]} copyrights - Array of copyrights.
|
|
28
|
+
* @classproperty {Layer[]} children - List of children layers.
|
|
29
|
+
* @classproperty {boolean} visible - Define if the layer is currently display on the map.
|
|
30
|
+
* @classproperty {boolean} disabled - Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
|
|
31
|
+
* @classproperty {number} hitTolerance - Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
|
|
32
|
+
* @classproperty {Object} properties - Custom properties.
|
|
33
|
+
* @classproperty {ol/Map~Map|mapboxgl.Map} map - The map where the layer is displayed.
|
|
34
|
+
*/
|
|
35
|
+
export default class Layer extends BaseObject {
|
|
36
|
+
key?: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
group?: string;
|
|
39
|
+
copyrights?: string[];
|
|
40
|
+
children?: Layer[];
|
|
41
|
+
visible?: boolean;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
hitTolerance?: number;
|
|
44
|
+
properties?: {
|
|
45
|
+
[x: string]: any;
|
|
46
|
+
};
|
|
47
|
+
map?: AnyMap;
|
|
48
|
+
parent?: Layer;
|
|
49
|
+
options: LayerCommonOptions;
|
|
50
|
+
/**
|
|
51
|
+
* Constructor
|
|
52
|
+
*
|
|
53
|
+
* @param {Object} options
|
|
54
|
+
* @param {string} [options.key=uuid()] Identifier of the layer. Muste be unique. Default use a generated uuid.
|
|
55
|
+
* @param {string} [options.name] Name of the layer.
|
|
56
|
+
* @param {string[]} [options.copyrights] Array of copyrights.
|
|
57
|
+
* @param {Array<Layer>} [options.children=[]] Sublayers, all child layers will have a parent property associated to this layer.
|
|
58
|
+
* @param {boolean} [options.visible=true] Define if the layer is currently display on the map.
|
|
59
|
+
* @param {boolean} [options.disabled=false] Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
|
|
60
|
+
* @param {number} [options.hitTolerance=5] Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
|
|
61
|
+
* @param {Object} [options.properties={}] Application-specific layer properties.
|
|
62
|
+
*/
|
|
63
|
+
constructor(options?: LayerCommonOptions);
|
|
64
|
+
/**
|
|
65
|
+
* Define layer's properties that needs custom get and set.
|
|
66
|
+
*
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
defineProperties(options?: LayerCommonOptions): void;
|
|
70
|
+
/**
|
|
71
|
+
* Initialize the layer with the map passed in parameters.
|
|
72
|
+
*
|
|
73
|
+
* @param {ol/Map~Map|mapboxgl.Map} map A map.
|
|
74
|
+
*/
|
|
75
|
+
attachToMap(map: AnyMap): void;
|
|
76
|
+
/**
|
|
77
|
+
* Terminate what was initialized in init function. Remove layer, events...
|
|
78
|
+
*/
|
|
79
|
+
detachFromMap(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Request feature information for a given coordinate.
|
|
82
|
+
* This function must be implemented by inheriting layers.
|
|
83
|
+
*
|
|
84
|
+
* @param {ol/coordinate~Coordinate} coordinate Coordinate.
|
|
85
|
+
* @param {Object} options Some options. See child classes to see which are supported.
|
|
86
|
+
* @return {Promise<FeatureInfo>} An empty response.
|
|
87
|
+
*/
|
|
88
|
+
getFeatureInfoAtCoordinate(coordinate: number[], options?: LayerGetFeatureInfoOptions): Promise<LayerGetFeatureInfoResponse>;
|
|
89
|
+
/**
|
|
90
|
+
* Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
|
|
91
|
+
*/
|
|
92
|
+
flat(): any[];
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=LayerCommon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayerCommon.d.ts","sourceRoot":"","sources":["../../../src/common/layers/LayerCommon.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AAInC,OAAO,KAAK,EACV,MAAM,EACN,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,UAAU;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAEnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAEvC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf,OAAO,EAAE,kBAAkB,CAAM;IAEjC;;;;;;;;;;;;OAYG;gBACS,OAAO,GAAE,kBAAuB;IAoC5C;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,GAAE,kBAAuB;IA2IjD;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM;IAYvB;;OAEG;IAEH,aAAa;IAKb;;;;;;;OAOG;IAEH,0BAA0B,CACxB,UAAU,EAAE,MAAM,EAAE,EAEpB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;OAEG;IACH,IAAI;CAGL"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import BaseObject from 'ol/Object';
|
|
2
|
+
import { v4 as uuid } from 'uuid';
|
|
3
|
+
import BaseEvent from 'ol/events/Event';
|
|
4
|
+
import getLayersAsFlatArray from '../utils/getLayersAsFlatArray';
|
|
5
|
+
/**
|
|
6
|
+
* A class representing a layer to display on map.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const layer = new Layer({
|
|
10
|
+
* name: 'My Layer',
|
|
11
|
+
* });
|
|
12
|
+
*
|
|
13
|
+
* @classproperty {string} key - Identifier of the layer. Must be unique.
|
|
14
|
+
* @classproperty {string} name - Name of the layer
|
|
15
|
+
* @classproperty {string[]} copyrights - Array of copyrights.
|
|
16
|
+
* @classproperty {Layer[]} children - List of children layers.
|
|
17
|
+
* @classproperty {boolean} visible - Define if the layer is currently display on the map.
|
|
18
|
+
* @classproperty {boolean} disabled - Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
|
|
19
|
+
* @classproperty {number} hitTolerance - Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
|
|
20
|
+
* @classproperty {Object} properties - Custom properties.
|
|
21
|
+
* @classproperty {ol/Map~Map|mapboxgl.Map} map - The map where the layer is displayed.
|
|
22
|
+
*/
|
|
23
|
+
export default class Layer extends BaseObject {
|
|
24
|
+
/**
|
|
25
|
+
* Constructor
|
|
26
|
+
*
|
|
27
|
+
* @param {Object} options
|
|
28
|
+
* @param {string} [options.key=uuid()] Identifier of the layer. Muste be unique. Default use a generated uuid.
|
|
29
|
+
* @param {string} [options.name] Name of the layer.
|
|
30
|
+
* @param {string[]} [options.copyrights] Array of copyrights.
|
|
31
|
+
* @param {Array<Layer>} [options.children=[]] Sublayers, all child layers will have a parent property associated to this layer.
|
|
32
|
+
* @param {boolean} [options.visible=true] Define if the layer is currently display on the map.
|
|
33
|
+
* @param {boolean} [options.disabled=false] Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
|
|
34
|
+
* @param {number} [options.hitTolerance=5] Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
|
|
35
|
+
* @param {Object} [options.properties={}] Application-specific layer properties.
|
|
36
|
+
*/
|
|
37
|
+
constructor(options = {}) {
|
|
38
|
+
super();
|
|
39
|
+
this.properties = {};
|
|
40
|
+
this.options = {};
|
|
41
|
+
this.defineProperties(options);
|
|
42
|
+
if (options.properties) {
|
|
43
|
+
this.setProperties(options.properties);
|
|
44
|
+
}
|
|
45
|
+
this.options = options;
|
|
46
|
+
this.visible = options.visible === undefined ? true : !!options.visible;
|
|
47
|
+
this.group = options.group;
|
|
48
|
+
this.copyrights = options.copyrights;
|
|
49
|
+
this.children = options.children;
|
|
50
|
+
// Listen for group visiblity change
|
|
51
|
+
// if a layer from a group is newly visible we hide the others.
|
|
52
|
+
/* @ts-ignore */
|
|
53
|
+
this.on(`change:visible:group`, (evt) => {
|
|
54
|
+
// We hide layer of the same group
|
|
55
|
+
if (this.group === evt.target.group &&
|
|
56
|
+
this !== evt.target &&
|
|
57
|
+
this.visible) {
|
|
58
|
+
this.visible = false;
|
|
59
|
+
// Propagate event to parent
|
|
60
|
+
}
|
|
61
|
+
else if (this.children) {
|
|
62
|
+
this.children.forEach((child) => child.dispatchEvent(evt));
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Define layer's properties that needs custom get and set.
|
|
68
|
+
*
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
defineProperties(options = {}) {
|
|
72
|
+
const { name, key, properties, hitTolerance } = Object.assign({}, options);
|
|
73
|
+
const uid = uuid();
|
|
74
|
+
Object.defineProperties(this, {
|
|
75
|
+
/* Layer's information properties */
|
|
76
|
+
name: {
|
|
77
|
+
value: name,
|
|
78
|
+
},
|
|
79
|
+
key: {
|
|
80
|
+
value: key || name || uid,
|
|
81
|
+
},
|
|
82
|
+
group: {
|
|
83
|
+
get: () => this.get('group'),
|
|
84
|
+
set: (newGroup) => {
|
|
85
|
+
this.set('group', newGroup);
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
copyrights: {
|
|
89
|
+
get: () => this.get('copyrights'),
|
|
90
|
+
set: (newCopyrights) => {
|
|
91
|
+
const arrValue = newCopyrights && !Array.isArray(newCopyrights)
|
|
92
|
+
? [newCopyrights]
|
|
93
|
+
: newCopyrights;
|
|
94
|
+
this.set('copyrights', arrValue || []);
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
// options is used for clone function.
|
|
98
|
+
options: {
|
|
99
|
+
value: options,
|
|
100
|
+
},
|
|
101
|
+
map: {
|
|
102
|
+
writable: true,
|
|
103
|
+
},
|
|
104
|
+
/* Layer's state properties */
|
|
105
|
+
visible: {
|
|
106
|
+
get: () => this.get('visible'),
|
|
107
|
+
set: (newVisible) => {
|
|
108
|
+
if (newVisible === this.visible) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this.set('visible', newVisible);
|
|
112
|
+
if (this.visible) {
|
|
113
|
+
// We make the parent visible
|
|
114
|
+
if (this.parent) {
|
|
115
|
+
this.parent.visible = true;
|
|
116
|
+
}
|
|
117
|
+
// If children doesn't contain any visible layers, we display all children.
|
|
118
|
+
if (this.children &&
|
|
119
|
+
!this.children.some((child) => child.visible)) {
|
|
120
|
+
this.children.forEach((child) => {
|
|
121
|
+
// eslint-disable-next-line no-param-reassign
|
|
122
|
+
child.visible = true;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Warn the same group that a new layer is visible
|
|
126
|
+
if (this.parent && this.group) {
|
|
127
|
+
// We search for the higher parent then it will dispatch to all the tree.
|
|
128
|
+
let higherParent = this.parent;
|
|
129
|
+
while (higherParent.parent) {
|
|
130
|
+
higherParent = higherParent.parent;
|
|
131
|
+
}
|
|
132
|
+
const evt = new BaseEvent(`change:visible:group`);
|
|
133
|
+
evt.target = this;
|
|
134
|
+
higherParent.dispatchEvent(evt);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (!this.visible) {
|
|
138
|
+
// We hide all the children
|
|
139
|
+
if (this.children) {
|
|
140
|
+
this.children.forEach((child) => {
|
|
141
|
+
// eslint-disable-next-line no-param-reassign
|
|
142
|
+
child.visible = false;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
// If the parent has no more visible child we also hide it.
|
|
146
|
+
if (this.parent &&
|
|
147
|
+
this.parent.visible &&
|
|
148
|
+
this.parent.children &&
|
|
149
|
+
!this.parent.children.find((child) => child.visible)) {
|
|
150
|
+
this.parent.visible = false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
disabled: {
|
|
156
|
+
get: () => this.get('disabled'),
|
|
157
|
+
set: (newValue) => {
|
|
158
|
+
this.set('disabled', newValue);
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
/* Layer's hierarchy properties */
|
|
162
|
+
parent: {
|
|
163
|
+
value: null,
|
|
164
|
+
writable: true,
|
|
165
|
+
},
|
|
166
|
+
children: {
|
|
167
|
+
get: () => this.get('children') || [],
|
|
168
|
+
set: (newValue) => {
|
|
169
|
+
(this.children || []).forEach((child) => {
|
|
170
|
+
// eslint-disable-next-line no-param-reassign
|
|
171
|
+
child.parent = undefined;
|
|
172
|
+
});
|
|
173
|
+
if (Array.isArray(newValue)) {
|
|
174
|
+
newValue.forEach((child) => {
|
|
175
|
+
// eslint-disable-next-line no-param-reassign
|
|
176
|
+
child.parent = this;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
this.set('children', newValue || []);
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
/* Layer's query properties */
|
|
183
|
+
hitTolerance: {
|
|
184
|
+
value: hitTolerance || 5,
|
|
185
|
+
writable: true,
|
|
186
|
+
},
|
|
187
|
+
/* Custom app specific properties */
|
|
188
|
+
properties: {
|
|
189
|
+
value: Object.assign({}, (properties || {})),
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Initialize the layer with the map passed in parameters.
|
|
195
|
+
*
|
|
196
|
+
* @param {ol/Map~Map|mapboxgl.Map} map A map.
|
|
197
|
+
*/
|
|
198
|
+
attachToMap(map) {
|
|
199
|
+
this.detachFromMap();
|
|
200
|
+
/** @private */
|
|
201
|
+
this.map = map;
|
|
202
|
+
if (this.children) {
|
|
203
|
+
this.children.forEach((child) => {
|
|
204
|
+
child.attachToMap(map);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Terminate what was initialized in init function. Remove layer, events...
|
|
210
|
+
*/
|
|
211
|
+
// eslint-disable-next-line class-methods-use-this
|
|
212
|
+
detachFromMap() {
|
|
213
|
+
/** @private */
|
|
214
|
+
this.map = undefined;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Request feature information for a given coordinate.
|
|
218
|
+
* This function must be implemented by inheriting layers.
|
|
219
|
+
*
|
|
220
|
+
* @param {ol/coordinate~Coordinate} coordinate Coordinate.
|
|
221
|
+
* @param {Object} options Some options. See child classes to see which are supported.
|
|
222
|
+
* @return {Promise<FeatureInfo>} An empty response.
|
|
223
|
+
*/
|
|
224
|
+
// eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
|
|
225
|
+
getFeatureInfoAtCoordinate(coordinate,
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
227
|
+
options) {
|
|
228
|
+
// eslint-disable-next-line no-console
|
|
229
|
+
console.error('getFeatureInfoAtCoordinate must be implemented by inheriting layers', this.key);
|
|
230
|
+
// This layer returns no feature info.
|
|
231
|
+
// The function is implemented by inheriting layers.
|
|
232
|
+
return Promise.resolve({
|
|
233
|
+
layer: this,
|
|
234
|
+
features: [],
|
|
235
|
+
coordinate,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
|
|
240
|
+
*/
|
|
241
|
+
flat() {
|
|
242
|
+
return getLayersAsFlatArray(this);
|
|
243
|
+
}
|
|
244
|
+
}
|