@opentripplanner/vehicle-rental-overlay 1.4.2 → 2.0.0-alpha.1
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/esm/StationPopup.js +99 -0
- package/esm/StationPopup.js.map +1 -0
- package/esm/index.js +146 -351
- package/esm/index.js.map +1 -1
- package/esm/styled.js +48 -50
- package/esm/styled.js.map +1 -1
- package/lib/StationPopup.d.ts +15 -0
- package/lib/StationPopup.d.ts.map +1 -0
- package/lib/StationPopup.js +119 -0
- package/lib/StationPopup.js.map +1 -0
- package/lib/index.d.ts +61 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +126 -329
- package/lib/index.js.map +1 -1
- package/lib/styled.d.ts +11 -0
- package/lib/styled.d.ts.map +1 -0
- package/lib/styled.js +48 -63
- package/lib/styled.js.map +1 -1
- package/package.json +8 -6
- package/src/StationPopup.tsx +146 -0
- package/src/VehicleRentalOverlay.story.tsx +124 -0
- package/src/index.tsx +255 -0
- package/src/styled.ts +52 -0
- package/tsconfig.json +15 -0
- package/tsconfig.tsbuildinfo +4891 -0
- package/esm/DefaultMarkers/index.js +0 -140
- package/esm/DefaultMarkers/index.js.map +0 -1
- package/esm/bike-icons.js +0 -21
- package/esm/bike-icons.js.map +0 -1
- package/lib/DefaultMarkers/index.js +0 -165
- package/lib/DefaultMarkers/index.js.map +0 -1
- package/lib/bike-icons.js +0 -38
- package/lib/bike-icons.js.map +0 -1
- package/src/DefaultMarkers/index.js +0 -130
- package/src/VehicleRentalOverlay.story.js +0 -284
- package/src/bike-icons.js +0 -23
- package/src/index.js +0 -371
- package/src/styled.js +0 -78
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { divIcon } from "leaflet";
|
|
2
|
-
import memoize from "lodash.memoize";
|
|
3
|
-
import PropTypes from "prop-types";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import ReactDOMServer from "react-dom/server";
|
|
6
|
-
import { CircleMarker, Marker } from "react-leaflet";
|
|
7
|
-
import { floatingBikeIcon, hubIcons } from "../bike-icons";
|
|
8
|
-
import * as Styled from "../styled";
|
|
9
|
-
/**
|
|
10
|
-
* This file contains default marker types for rental vehicles,
|
|
11
|
-
* that can be used when defining the VehicleRentalOverlay's symbol prop:
|
|
12
|
-
* - SharedBikeCircle
|
|
13
|
-
* - GenericMarker
|
|
14
|
-
* - HubAndFloatingBike
|
|
15
|
-
*/
|
|
16
|
-
// Prop types reused across components.
|
|
17
|
-
|
|
18
|
-
var templatePropTypes = {
|
|
19
|
-
/** The children of the component. */
|
|
20
|
-
children: PropTypes.node,
|
|
21
|
-
|
|
22
|
-
/** The rental vehicle or station to render. */
|
|
23
|
-
// entity: coreUtils.types.stationType.isRequired,
|
|
24
|
-
// eslint-disable-next-line react/forbid-prop-types
|
|
25
|
-
entity: PropTypes.object.isRequired,
|
|
26
|
-
|
|
27
|
-
/** leaflet attribute to control tabindex value for keyboaryd-only / SR users */
|
|
28
|
-
keyboard: PropTypes.bool
|
|
29
|
-
};
|
|
30
|
-
var templateDefaultProps = {
|
|
31
|
-
children: null,
|
|
32
|
-
keyboard: false
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Renders a shared bike or shared bike dock as a circle
|
|
36
|
-
* with predefined colors and size.
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
export var SharedBikeCircle = function SharedBikeCircle(_ref) {
|
|
40
|
-
var dockStrokeColor = _ref.dockStrokeColor,
|
|
41
|
-
_ref$fillColor = _ref.fillColor,
|
|
42
|
-
fillColor = _ref$fillColor === void 0 ? "gray" : _ref$fillColor,
|
|
43
|
-
pixels = _ref.pixels,
|
|
44
|
-
strokeColor = _ref.strokeColor;
|
|
45
|
-
|
|
46
|
-
var GeneratedMarker = function GeneratedMarker(_ref2) {
|
|
47
|
-
var children = _ref2.children,
|
|
48
|
-
keyboard = _ref2.keyboard,
|
|
49
|
-
station = _ref2.entity;
|
|
50
|
-
var newStrokeColor = strokeColor || fillColor;
|
|
51
|
-
|
|
52
|
-
if (!station.isFloatingBike) {
|
|
53
|
-
newStrokeColor = dockStrokeColor || strokeColor;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return /*#__PURE__*/React.createElement(CircleMarker, {
|
|
57
|
-
center: [station.y, station.x],
|
|
58
|
-
color: newStrokeColor,
|
|
59
|
-
fillColor: fillColor,
|
|
60
|
-
fillOpacity: 1,
|
|
61
|
-
keyboard: keyboard,
|
|
62
|
-
radius: pixels - (station.isFloatingBike ? 1 : 0),
|
|
63
|
-
weight: 1
|
|
64
|
-
}, children);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
GeneratedMarker.propTypes = templatePropTypes;
|
|
68
|
-
GeneratedMarker.defaultProps = templateDefaultProps;
|
|
69
|
-
return GeneratedMarker;
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* A component that renders rental bike entities
|
|
73
|
-
* either as a bike or a bike dock (or hub, showing spaces available).
|
|
74
|
-
*/
|
|
75
|
-
|
|
76
|
-
export var HubAndFloatingBike = function HubAndFloatingBike(_ref3) {
|
|
77
|
-
var children = _ref3.children,
|
|
78
|
-
keyboard = _ref3.keyboard,
|
|
79
|
-
station = _ref3.entity;
|
|
80
|
-
var icon;
|
|
81
|
-
|
|
82
|
-
if (station.isFloatingBike) {
|
|
83
|
-
icon = floatingBikeIcon;
|
|
84
|
-
} else {
|
|
85
|
-
var capacity = station.bikesAvailable + station.spacesAvailable;
|
|
86
|
-
if (capacity === 0) return null;
|
|
87
|
-
var pctFull = station.bikesAvailable / capacity;
|
|
88
|
-
var i = Math.round(pctFull * 9);
|
|
89
|
-
icon = hubIcons[i];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return /*#__PURE__*/React.createElement(Marker, {
|
|
93
|
-
icon: icon,
|
|
94
|
-
keyboard: keyboard,
|
|
95
|
-
position: [station.y, station.x]
|
|
96
|
-
}, children);
|
|
97
|
-
};
|
|
98
|
-
HubAndFloatingBike.propTypes = templatePropTypes;
|
|
99
|
-
HubAndFloatingBike.defaultProps = templateDefaultProps;
|
|
100
|
-
/**
|
|
101
|
-
* Creates and caches a leaflet element icon based on color.
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
var getStationMarkerByColor = memoize(function (color) {
|
|
105
|
-
return divIcon({
|
|
106
|
-
className: "",
|
|
107
|
-
iconSize: [11, 16],
|
|
108
|
-
popupAnchor: [0, -6],
|
|
109
|
-
html: ReactDOMServer.renderToStaticMarkup( /*#__PURE__*/React.createElement(Styled.StationMarker, {
|
|
110
|
-
color: color
|
|
111
|
-
}))
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
/**
|
|
115
|
-
* Helper function to create a leaflet Marker component to render entities
|
|
116
|
-
* using fixed fill color.
|
|
117
|
-
* Usage: GenericMarker({ fillColor: "#F204B5" })
|
|
118
|
-
*/
|
|
119
|
-
|
|
120
|
-
export var GenericMarker = function GenericMarker(_ref4) {
|
|
121
|
-
var _ref4$fillColor = _ref4.fillColor,
|
|
122
|
-
fillColor = _ref4$fillColor === void 0 ? "gray" : _ref4$fillColor;
|
|
123
|
-
var markerIcon = getStationMarkerByColor(fillColor);
|
|
124
|
-
|
|
125
|
-
var GeneratedMarker = function GeneratedMarker(_ref5) {
|
|
126
|
-
var children = _ref5.children,
|
|
127
|
-
keyboard = _ref5.keyboard,
|
|
128
|
-
station = _ref5.entity;
|
|
129
|
-
return /*#__PURE__*/React.createElement(Marker, {
|
|
130
|
-
icon: markerIcon,
|
|
131
|
-
keyboard: keyboard,
|
|
132
|
-
position: [station.y, station.x]
|
|
133
|
-
}, children);
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
GeneratedMarker.propTypes = templatePropTypes;
|
|
137
|
-
GeneratedMarker.defaultProps = templateDefaultProps;
|
|
138
|
-
return GeneratedMarker;
|
|
139
|
-
};
|
|
140
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/DefaultMarkers/index.js"],"names":["divIcon","memoize","PropTypes","React","ReactDOMServer","CircleMarker","Marker","floatingBikeIcon","hubIcons","Styled","templatePropTypes","children","node","entity","object","isRequired","keyboard","bool","templateDefaultProps","SharedBikeCircle","dockStrokeColor","fillColor","pixels","strokeColor","GeneratedMarker","station","newStrokeColor","isFloatingBike","y","x","propTypes","defaultProps","HubAndFloatingBike","icon","capacity","bikesAvailable","spacesAvailable","pctFull","i","Math","round","getStationMarkerByColor","color","className","iconSize","popupAnchor","html","renderToStaticMarkup","GenericMarker","markerIcon"],"mappings":"AAAA,SAASA,OAAT,QAAwB,SAAxB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,SAASC,YAAT,EAAuBC,MAAvB,QAAqC,eAArC;AAEA,SAASC,gBAAT,EAA2BC,QAA3B,QAA2C,eAA3C;AACA,OAAO,KAAKC,MAAZ,MAAwB,WAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,IAAMC,iBAAiB,GAAG;AACxB;AACAC,EAAAA,QAAQ,EAAET,SAAS,CAACU,IAFI;;AAGxB;AACA;AACA;AACAC,EAAAA,MAAM,EAAEX,SAAS,CAACY,MAAV,CAAiBC,UAND;;AAOxB;AACAC,EAAAA,QAAQ,EAAEd,SAAS,CAACe;AARI,CAA1B;AAUA,IAAMC,oBAAoB,GAAG;AAC3BP,EAAAA,QAAQ,EAAE,IADiB;AAE3BK,EAAAA,QAAQ,EAAE;AAFiB,CAA7B;AAKA;AACA;AACA;AACA;;AACA,OAAO,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAmB,OAK1B;AAAA,MAJJC,eAII,QAJJA,eAII;AAAA,4BAHJC,SAGI;AAAA,MAHJA,SAGI,+BAHQ,MAGR;AAAA,MAFJC,MAEI,QAFJA,MAEI;AAAA,MADJC,WACI,QADJA,WACI;;AACJ,MAAMC,eAAe,GAAG,SAAlBA,eAAkB,QAA6C;AAAA,QAA1Cb,QAA0C,SAA1CA,QAA0C;AAAA,QAAhCK,QAAgC,SAAhCA,QAAgC;AAAA,QAAdS,OAAc,SAAtBZ,MAAsB;AACnE,QAAIa,cAAc,GAAGH,WAAW,IAAIF,SAApC;;AAEA,QAAI,CAACI,OAAO,CAACE,cAAb,EAA6B;AAC3BD,MAAAA,cAAc,GAAGN,eAAe,IAAIG,WAApC;AACD;;AAED,wBACE,oBAAC,YAAD;AACE,MAAA,MAAM,EAAE,CAACE,OAAO,CAACG,CAAT,EAAYH,OAAO,CAACI,CAApB,CADV;AAEE,MAAA,KAAK,EAAEH,cAFT;AAGE,MAAA,SAAS,EAAEL,SAHb;AAIE,MAAA,WAAW,EAAE,CAJf;AAKE,MAAA,QAAQ,EAAEL,QALZ;AAME,MAAA,MAAM,EAAEM,MAAM,IAAIG,OAAO,CAACE,cAAR,GAAyB,CAAzB,GAA6B,CAAjC,CANhB;AAOE,MAAA,MAAM,EAAE;AAPV,OASGhB,QATH,CADF;AAaD,GApBD;;AAsBAa,EAAAA,eAAe,CAACM,SAAhB,GAA4BpB,iBAA5B;AACAc,EAAAA,eAAe,CAACO,YAAhB,GAA+Bb,oBAA/B;AACA,SAAOM,eAAP;AACD,CA/BM;AAiCP;AACA;AACA;AACA;;AACA,OAAO,IAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,QAA6C;AAAA,MAA1CrB,QAA0C,SAA1CA,QAA0C;AAAA,MAAhCK,QAAgC,SAAhCA,QAAgC;AAAA,MAAdS,OAAc,SAAtBZ,MAAsB;AAC7E,MAAIoB,IAAJ;;AACA,MAAIR,OAAO,CAACE,cAAZ,EAA4B;AAC1BM,IAAAA,IAAI,GAAG1B,gBAAP;AACD,GAFD,MAEO;AACL,QAAM2B,QAAQ,GAAGT,OAAO,CAACU,cAAR,GAAyBV,OAAO,CAACW,eAAlD;AACA,QAAIF,QAAQ,KAAK,CAAjB,EAAoB,OAAO,IAAP;AACpB,QAAMG,OAAO,GAAGZ,OAAO,CAACU,cAAR,GAAyBD,QAAzC;AACA,QAAMI,CAAC,GAAGC,IAAI,CAACC,KAAL,CAAWH,OAAO,GAAG,CAArB,CAAV;AACAJ,IAAAA,IAAI,GAAGzB,QAAQ,CAAC8B,CAAD,CAAf;AACD;;AACD,sBACE,oBAAC,MAAD;AAAQ,IAAA,IAAI,EAAEL,IAAd;AAAoB,IAAA,QAAQ,EAAEjB,QAA9B;AAAwC,IAAA,QAAQ,EAAE,CAACS,OAAO,CAACG,CAAT,EAAYH,OAAO,CAACI,CAApB;AAAlD,KACGlB,QADH,CADF;AAKD,CAhBM;AAiBPqB,kBAAkB,CAACF,SAAnB,GAA+BpB,iBAA/B;AACAsB,kBAAkB,CAACD,YAAnB,GAAkCb,oBAAlC;AAEA;AACA;AACA;;AACA,IAAMuB,uBAAuB,GAAGxC,OAAO,CAAC,UAAAyC,KAAK;AAAA,SAC3C1C,OAAO,CAAC;AACN2C,IAAAA,SAAS,EAAE,EADL;AAENC,IAAAA,QAAQ,EAAE,CAAC,EAAD,EAAK,EAAL,CAFJ;AAGNC,IAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAC,CAAL,CAHP;AAINC,IAAAA,IAAI,EAAE1C,cAAc,CAAC2C,oBAAf,eACJ,oBAAC,MAAD,CAAQ,aAAR;AAAsB,MAAA,KAAK,EAAEL;AAA7B,MADI;AAJA,GAAD,CADoC;AAAA,CAAN,CAAvC;AAWA;AACA;AACA;AACA;AACA;;AACA,OAAO,IAAMM,aAAa,GAAG,SAAhBA,aAAgB,QAA4B;AAAA,8BAAzB3B,SAAyB;AAAA,MAAzBA,SAAyB,gCAAb,MAAa;AACvD,MAAM4B,UAAU,GAAGR,uBAAuB,CAACpB,SAAD,CAA1C;;AAEA,MAAMG,eAAe,GAAG,SAAlBA,eAAkB;AAAA,QAAGb,QAAH,SAAGA,QAAH;AAAA,QAAaK,QAAb,SAAaA,QAAb;AAAA,QAA+BS,OAA/B,SAAuBZ,MAAvB;AAAA,wBACtB,oBAAC,MAAD;AACE,MAAA,IAAI,EAAEoC,UADR;AAEE,MAAA,QAAQ,EAAEjC,QAFZ;AAGE,MAAA,QAAQ,EAAE,CAACS,OAAO,CAACG,CAAT,EAAYH,OAAO,CAACI,CAApB;AAHZ,OAKGlB,QALH,CADsB;AAAA,GAAxB;;AASAa,EAAAA,eAAe,CAACM,SAAhB,GAA4BpB,iBAA5B;AACAc,EAAAA,eAAe,CAACO,YAAhB,GAA+Bb,oBAA/B;AACA,SAAOM,eAAP;AACD,CAfM","sourcesContent":["import { divIcon } from \"leaflet\";\nimport memoize from \"lodash.memoize\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { CircleMarker, Marker } from \"react-leaflet\";\n\nimport { floatingBikeIcon, hubIcons } from \"../bike-icons\";\nimport * as Styled from \"../styled\";\n\n/**\n * This file contains default marker types for rental vehicles,\n * that can be used when defining the VehicleRentalOverlay's symbol prop:\n * - SharedBikeCircle\n * - GenericMarker\n * - HubAndFloatingBike\n */\n\n// Prop types reused across components.\nconst templatePropTypes = {\n /** The children of the component. */\n children: PropTypes.node,\n /** The rental vehicle or station to render. */\n // entity: coreUtils.types.stationType.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n entity: PropTypes.object.isRequired,\n /** leaflet attribute to control tabindex value for keyboaryd-only / SR users */\n keyboard: PropTypes.bool\n};\nconst templateDefaultProps = {\n children: null,\n keyboard: false\n};\n\n/**\n * Renders a shared bike or shared bike dock as a circle\n * with predefined colors and size.\n */\nexport const SharedBikeCircle = ({\n dockStrokeColor,\n fillColor = \"gray\",\n pixels,\n strokeColor\n}) => {\n const GeneratedMarker = ({ children, keyboard, entity: station }) => {\n let newStrokeColor = strokeColor || fillColor;\n\n if (!station.isFloatingBike) {\n newStrokeColor = dockStrokeColor || strokeColor;\n }\n\n return (\n <CircleMarker\n center={[station.y, station.x]}\n color={newStrokeColor}\n fillColor={fillColor}\n fillOpacity={1}\n keyboard={keyboard}\n radius={pixels - (station.isFloatingBike ? 1 : 0)}\n weight={1}\n >\n {children}\n </CircleMarker>\n );\n };\n\n GeneratedMarker.propTypes = templatePropTypes;\n GeneratedMarker.defaultProps = templateDefaultProps;\n return GeneratedMarker;\n};\n\n/**\n * A component that renders rental bike entities\n * either as a bike or a bike dock (or hub, showing spaces available).\n */\nexport const HubAndFloatingBike = ({ children, keyboard, entity: station }) => {\n let icon;\n if (station.isFloatingBike) {\n icon = floatingBikeIcon;\n } else {\n const capacity = station.bikesAvailable + station.spacesAvailable;\n if (capacity === 0) return null;\n const pctFull = station.bikesAvailable / capacity;\n const i = Math.round(pctFull * 9);\n icon = hubIcons[i];\n }\n return (\n <Marker icon={icon} keyboard={keyboard} position={[station.y, station.x]}>\n {children}\n </Marker>\n );\n};\nHubAndFloatingBike.propTypes = templatePropTypes;\nHubAndFloatingBike.defaultProps = templateDefaultProps;\n\n/**\n * Creates and caches a leaflet element icon based on color.\n */\nconst getStationMarkerByColor = memoize(color =>\n divIcon({\n className: \"\",\n iconSize: [11, 16],\n popupAnchor: [0, -6],\n html: ReactDOMServer.renderToStaticMarkup(\n <Styled.StationMarker color={color} />\n )\n })\n);\n\n/**\n * Helper function to create a leaflet Marker component to render entities\n * using fixed fill color.\n * Usage: GenericMarker({ fillColor: \"#F204B5\" })\n */\nexport const GenericMarker = ({ fillColor = \"gray\" }) => {\n const markerIcon = getStationMarkerByColor(fillColor);\n\n const GeneratedMarker = ({ children, keyboard, entity: station }) => (\n <Marker\n icon={markerIcon}\n keyboard={keyboard}\n position={[station.y, station.x]}\n >\n {children}\n </Marker>\n );\n GeneratedMarker.propTypes = templatePropTypes;\n GeneratedMarker.defaultProps = templateDefaultProps;\n return GeneratedMarker;\n};\n"],"file":"index.js"}
|
package/esm/bike-icons.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { divIcon } from "leaflet";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import ReactDOMServer from "react-dom/server";
|
|
4
|
-
import * as S from "./styled";
|
|
5
|
-
export var floatingBikeIcon = divIcon({
|
|
6
|
-
iconSize: [24, 24],
|
|
7
|
-
iconAnchor: [12, 24],
|
|
8
|
-
popupAnchor: [0, -12],
|
|
9
|
-
html: ReactDOMServer.renderToStaticMarkup( /*#__PURE__*/React.createElement(S.OutOfHubBikeIcon, null)),
|
|
10
|
-
className: ""
|
|
11
|
-
});
|
|
12
|
-
export var hubIcons = S.hubIcons.map(function (StyledIcon) {
|
|
13
|
-
return divIcon({
|
|
14
|
-
iconSize: [24, 24],
|
|
15
|
-
iconAnchor: [12, 24],
|
|
16
|
-
popupAnchor: [0, -12],
|
|
17
|
-
html: ReactDOMServer.renderToStaticMarkup( /*#__PURE__*/React.createElement(StyledIcon, null)),
|
|
18
|
-
className: ""
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=bike-icons.js.map
|
package/esm/bike-icons.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bike-icons.js"],"names":["divIcon","React","ReactDOMServer","S","floatingBikeIcon","iconSize","iconAnchor","popupAnchor","html","renderToStaticMarkup","className","hubIcons","map","StyledIcon"],"mappings":"AAAA,SAASA,OAAT,QAAwB,SAAxB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAOC,cAAP,MAA2B,kBAA3B;AAEA,OAAO,KAAKC,CAAZ,MAAmB,UAAnB;AAEA,OAAO,IAAMC,gBAAgB,GAAGJ,OAAO,CAAC;AACtCK,EAAAA,QAAQ,EAAE,CAAC,EAAD,EAAK,EAAL,CAD4B;AAEtCC,EAAAA,UAAU,EAAE,CAAC,EAAD,EAAK,EAAL,CAF0B;AAGtCC,EAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAC,EAAL,CAHyB;AAItCC,EAAAA,IAAI,EAAEN,cAAc,CAACO,oBAAf,eAAoC,oBAAC,CAAD,CAAG,gBAAH,OAApC,CAJgC;AAKtCC,EAAAA,SAAS,EAAE;AAL2B,CAAD,CAAhC;AAQP,OAAO,IAAMC,QAAQ,GAAGR,CAAC,CAACQ,QAAF,CAAWC,GAAX,CAAe,UAAAC,UAAU;AAAA,SAC/Cb,OAAO,CAAC;AACNK,IAAAA,QAAQ,EAAE,CAAC,EAAD,EAAK,EAAL,CADJ;AAENC,IAAAA,UAAU,EAAE,CAAC,EAAD,EAAK,EAAL,CAFN;AAGNC,IAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAC,EAAL,CAHP;AAINC,IAAAA,IAAI,EAAEN,cAAc,CAACO,oBAAf,eAAoC,oBAAC,UAAD,OAApC,CAJA;AAKNC,IAAAA,SAAS,EAAE;AALL,GAAD,CADwC;AAAA,CAAzB,CAAjB","sourcesContent":["import { divIcon } from \"leaflet\";\nimport React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\n\nimport * as S from \"./styled\";\n\nexport const floatingBikeIcon = divIcon({\n iconSize: [24, 24],\n iconAnchor: [12, 24],\n popupAnchor: [0, -12],\n html: ReactDOMServer.renderToStaticMarkup(<S.OutOfHubBikeIcon />),\n className: \"\"\n});\n\nexport const hubIcons = S.hubIcons.map(StyledIcon =>\n divIcon({\n iconSize: [24, 24],\n iconAnchor: [12, 24],\n popupAnchor: [0, -12],\n html: ReactDOMServer.renderToStaticMarkup(<StyledIcon />),\n className: \"\"\n })\n);\n"],"file":"bike-icons.js"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.GenericMarker = exports.HubAndFloatingBike = exports.SharedBikeCircle = void 0;
|
|
9
|
-
|
|
10
|
-
var _leaflet = require("leaflet");
|
|
11
|
-
|
|
12
|
-
var _lodash = _interopRequireDefault(require("lodash.memoize"));
|
|
13
|
-
|
|
14
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
-
|
|
16
|
-
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
|
-
var _server = _interopRequireDefault(require("react-dom/server"));
|
|
19
|
-
|
|
20
|
-
var _reactLeaflet = require("react-leaflet");
|
|
21
|
-
|
|
22
|
-
var _bikeIcons = require("../bike-icons");
|
|
23
|
-
|
|
24
|
-
var Styled = _interopRequireWildcard(require("../styled"));
|
|
25
|
-
|
|
26
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* This file contains default marker types for rental vehicles,
|
|
32
|
-
* that can be used when defining the VehicleRentalOverlay's symbol prop:
|
|
33
|
-
* - SharedBikeCircle
|
|
34
|
-
* - GenericMarker
|
|
35
|
-
* - HubAndFloatingBike
|
|
36
|
-
*/
|
|
37
|
-
// Prop types reused across components.
|
|
38
|
-
const templatePropTypes = {
|
|
39
|
-
/** The children of the component. */
|
|
40
|
-
children: _propTypes.default.node,
|
|
41
|
-
|
|
42
|
-
/** The rental vehicle or station to render. */
|
|
43
|
-
// entity: coreUtils.types.stationType.isRequired,
|
|
44
|
-
// eslint-disable-next-line react/forbid-prop-types
|
|
45
|
-
entity: _propTypes.default.object.isRequired,
|
|
46
|
-
|
|
47
|
-
/** leaflet attribute to control tabindex value for keyboaryd-only / SR users */
|
|
48
|
-
keyboard: _propTypes.default.bool
|
|
49
|
-
};
|
|
50
|
-
const templateDefaultProps = {
|
|
51
|
-
children: null,
|
|
52
|
-
keyboard: false
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* Renders a shared bike or shared bike dock as a circle
|
|
56
|
-
* with predefined colors and size.
|
|
57
|
-
*/
|
|
58
|
-
|
|
59
|
-
const SharedBikeCircle = ({
|
|
60
|
-
dockStrokeColor,
|
|
61
|
-
fillColor = "gray",
|
|
62
|
-
pixels,
|
|
63
|
-
strokeColor
|
|
64
|
-
}) => {
|
|
65
|
-
const GeneratedMarker = ({
|
|
66
|
-
children,
|
|
67
|
-
keyboard,
|
|
68
|
-
entity: station
|
|
69
|
-
}) => {
|
|
70
|
-
let newStrokeColor = strokeColor || fillColor;
|
|
71
|
-
|
|
72
|
-
if (!station.isFloatingBike) {
|
|
73
|
-
newStrokeColor = dockStrokeColor || strokeColor;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return /*#__PURE__*/_react.default.createElement(_reactLeaflet.CircleMarker, {
|
|
77
|
-
center: [station.y, station.x],
|
|
78
|
-
color: newStrokeColor,
|
|
79
|
-
fillColor: fillColor,
|
|
80
|
-
fillOpacity: 1,
|
|
81
|
-
keyboard: keyboard,
|
|
82
|
-
radius: pixels - (station.isFloatingBike ? 1 : 0),
|
|
83
|
-
weight: 1
|
|
84
|
-
}, children);
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
GeneratedMarker.propTypes = templatePropTypes;
|
|
88
|
-
GeneratedMarker.defaultProps = templateDefaultProps;
|
|
89
|
-
return GeneratedMarker;
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* A component that renders rental bike entities
|
|
93
|
-
* either as a bike or a bike dock (or hub, showing spaces available).
|
|
94
|
-
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
exports.SharedBikeCircle = SharedBikeCircle;
|
|
98
|
-
|
|
99
|
-
const HubAndFloatingBike = ({
|
|
100
|
-
children,
|
|
101
|
-
keyboard,
|
|
102
|
-
entity: station
|
|
103
|
-
}) => {
|
|
104
|
-
let icon;
|
|
105
|
-
|
|
106
|
-
if (station.isFloatingBike) {
|
|
107
|
-
icon = _bikeIcons.floatingBikeIcon;
|
|
108
|
-
} else {
|
|
109
|
-
const capacity = station.bikesAvailable + station.spacesAvailable;
|
|
110
|
-
if (capacity === 0) return null;
|
|
111
|
-
const pctFull = station.bikesAvailable / capacity;
|
|
112
|
-
const i = Math.round(pctFull * 9);
|
|
113
|
-
icon = _bikeIcons.hubIcons[i];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return /*#__PURE__*/_react.default.createElement(_reactLeaflet.Marker, {
|
|
117
|
-
icon: icon,
|
|
118
|
-
keyboard: keyboard,
|
|
119
|
-
position: [station.y, station.x]
|
|
120
|
-
}, children);
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
exports.HubAndFloatingBike = HubAndFloatingBike;
|
|
124
|
-
HubAndFloatingBike.propTypes = templatePropTypes;
|
|
125
|
-
HubAndFloatingBike.defaultProps = templateDefaultProps;
|
|
126
|
-
/**
|
|
127
|
-
* Creates and caches a leaflet element icon based on color.
|
|
128
|
-
*/
|
|
129
|
-
|
|
130
|
-
const getStationMarkerByColor = (0, _lodash.default)(color => (0, _leaflet.divIcon)({
|
|
131
|
-
className: "",
|
|
132
|
-
iconSize: [11, 16],
|
|
133
|
-
popupAnchor: [0, -6],
|
|
134
|
-
html: _server.default.renderToStaticMarkup( /*#__PURE__*/_react.default.createElement(Styled.StationMarker, {
|
|
135
|
-
color: color
|
|
136
|
-
}))
|
|
137
|
-
}));
|
|
138
|
-
/**
|
|
139
|
-
* Helper function to create a leaflet Marker component to render entities
|
|
140
|
-
* using fixed fill color.
|
|
141
|
-
* Usage: GenericMarker({ fillColor: "#F204B5" })
|
|
142
|
-
*/
|
|
143
|
-
|
|
144
|
-
const GenericMarker = ({
|
|
145
|
-
fillColor = "gray"
|
|
146
|
-
}) => {
|
|
147
|
-
const markerIcon = getStationMarkerByColor(fillColor);
|
|
148
|
-
|
|
149
|
-
const GeneratedMarker = ({
|
|
150
|
-
children,
|
|
151
|
-
keyboard,
|
|
152
|
-
entity: station
|
|
153
|
-
}) => /*#__PURE__*/_react.default.createElement(_reactLeaflet.Marker, {
|
|
154
|
-
icon: markerIcon,
|
|
155
|
-
keyboard: keyboard,
|
|
156
|
-
position: [station.y, station.x]
|
|
157
|
-
}, children);
|
|
158
|
-
|
|
159
|
-
GeneratedMarker.propTypes = templatePropTypes;
|
|
160
|
-
GeneratedMarker.defaultProps = templateDefaultProps;
|
|
161
|
-
return GeneratedMarker;
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
exports.GenericMarker = GenericMarker;
|
|
165
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/DefaultMarkers/index.js"],"names":["templatePropTypes","children","PropTypes","node","entity","object","isRequired","keyboard","bool","templateDefaultProps","SharedBikeCircle","dockStrokeColor","fillColor","pixels","strokeColor","GeneratedMarker","station","newStrokeColor","isFloatingBike","y","x","propTypes","defaultProps","HubAndFloatingBike","icon","floatingBikeIcon","capacity","bikesAvailable","spacesAvailable","pctFull","i","Math","round","hubIcons","getStationMarkerByColor","color","className","iconSize","popupAnchor","html","ReactDOMServer","renderToStaticMarkup","GenericMarker","markerIcon"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,MAAMA,iBAAiB,GAAG;AACxB;AACAC,EAAAA,QAAQ,EAAEC,mBAAUC,IAFI;;AAGxB;AACA;AACA;AACAC,EAAAA,MAAM,EAAEF,mBAAUG,MAAV,CAAiBC,UAND;;AAOxB;AACAC,EAAAA,QAAQ,EAAEL,mBAAUM;AARI,CAA1B;AAUA,MAAMC,oBAAoB,GAAG;AAC3BR,EAAAA,QAAQ,EAAE,IADiB;AAE3BM,EAAAA,QAAQ,EAAE;AAFiB,CAA7B;AAKA;AACA;AACA;AACA;;AACO,MAAMG,gBAAgB,GAAG,CAAC;AAC/BC,EAAAA,eAD+B;AAE/BC,EAAAA,SAAS,GAAG,MAFmB;AAG/BC,EAAAA,MAH+B;AAI/BC,EAAAA;AAJ+B,CAAD,KAK1B;AACJ,QAAMC,eAAe,GAAG,CAAC;AAAEd,IAAAA,QAAF;AAAYM,IAAAA,QAAZ;AAAsBH,IAAAA,MAAM,EAAEY;AAA9B,GAAD,KAA6C;AACnE,QAAIC,cAAc,GAAGH,WAAW,IAAIF,SAApC;;AAEA,QAAI,CAACI,OAAO,CAACE,cAAb,EAA6B;AAC3BD,MAAAA,cAAc,GAAGN,eAAe,IAAIG,WAApC;AACD;;AAED,wBACE,6BAAC,0BAAD;AACE,MAAA,MAAM,EAAE,CAACE,OAAO,CAACG,CAAT,EAAYH,OAAO,CAACI,CAApB,CADV;AAEE,MAAA,KAAK,EAAEH,cAFT;AAGE,MAAA,SAAS,EAAEL,SAHb;AAIE,MAAA,WAAW,EAAE,CAJf;AAKE,MAAA,QAAQ,EAAEL,QALZ;AAME,MAAA,MAAM,EAAEM,MAAM,IAAIG,OAAO,CAACE,cAAR,GAAyB,CAAzB,GAA6B,CAAjC,CANhB;AAOE,MAAA,MAAM,EAAE;AAPV,OASGjB,QATH,CADF;AAaD,GApBD;;AAsBAc,EAAAA,eAAe,CAACM,SAAhB,GAA4BrB,iBAA5B;AACAe,EAAAA,eAAe,CAACO,YAAhB,GAA+Bb,oBAA/B;AACA,SAAOM,eAAP;AACD,CA/BM;AAiCP;AACA;AACA;AACA;;;;;AACO,MAAMQ,kBAAkB,GAAG,CAAC;AAAEtB,EAAAA,QAAF;AAAYM,EAAAA,QAAZ;AAAsBH,EAAAA,MAAM,EAAEY;AAA9B,CAAD,KAA6C;AAC7E,MAAIQ,IAAJ;;AACA,MAAIR,OAAO,CAACE,cAAZ,EAA4B;AAC1BM,IAAAA,IAAI,GAAGC,2BAAP;AACD,GAFD,MAEO;AACL,UAAMC,QAAQ,GAAGV,OAAO,CAACW,cAAR,GAAyBX,OAAO,CAACY,eAAlD;AACA,QAAIF,QAAQ,KAAK,CAAjB,EAAoB,OAAO,IAAP;AACpB,UAAMG,OAAO,GAAGb,OAAO,CAACW,cAAR,GAAyBD,QAAzC;AACA,UAAMI,CAAC,GAAGC,IAAI,CAACC,KAAL,CAAWH,OAAO,GAAG,CAArB,CAAV;AACAL,IAAAA,IAAI,GAAGS,oBAASH,CAAT,CAAP;AACD;;AACD,sBACE,6BAAC,oBAAD;AAAQ,IAAA,IAAI,EAAEN,IAAd;AAAoB,IAAA,QAAQ,EAAEjB,QAA9B;AAAwC,IAAA,QAAQ,EAAE,CAACS,OAAO,CAACG,CAAT,EAAYH,OAAO,CAACI,CAApB;AAAlD,KACGnB,QADH,CADF;AAKD,CAhBM;;;AAiBPsB,kBAAkB,CAACF,SAAnB,GAA+BrB,iBAA/B;AACAuB,kBAAkB,CAACD,YAAnB,GAAkCb,oBAAlC;AAEA;AACA;AACA;;AACA,MAAMyB,uBAAuB,GAAG,qBAAQC,KAAK,IAC3C,sBAAQ;AACNC,EAAAA,SAAS,EAAE,EADL;AAENC,EAAAA,QAAQ,EAAE,CAAC,EAAD,EAAK,EAAL,CAFJ;AAGNC,EAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAC,CAAL,CAHP;AAINC,EAAAA,IAAI,EAAEC,gBAAeC,oBAAf,eACJ,6BAAC,MAAD,CAAQ,aAAR;AAAsB,IAAA,KAAK,EAAEN;AAA7B,IADI;AAJA,CAAR,CAD8B,CAAhC;AAWA;AACA;AACA;AACA;AACA;;AACO,MAAMO,aAAa,GAAG,CAAC;AAAE9B,EAAAA,SAAS,GAAG;AAAd,CAAD,KAA4B;AACvD,QAAM+B,UAAU,GAAGT,uBAAuB,CAACtB,SAAD,CAA1C;;AAEA,QAAMG,eAAe,GAAG,CAAC;AAAEd,IAAAA,QAAF;AAAYM,IAAAA,QAAZ;AAAsBH,IAAAA,MAAM,EAAEY;AAA9B,GAAD,kBACtB,6BAAC,oBAAD;AACE,IAAA,IAAI,EAAE2B,UADR;AAEE,IAAA,QAAQ,EAAEpC,QAFZ;AAGE,IAAA,QAAQ,EAAE,CAACS,OAAO,CAACG,CAAT,EAAYH,OAAO,CAACI,CAApB;AAHZ,KAKGnB,QALH,CADF;;AASAc,EAAAA,eAAe,CAACM,SAAhB,GAA4BrB,iBAA5B;AACAe,EAAAA,eAAe,CAACO,YAAhB,GAA+Bb,oBAA/B;AACA,SAAOM,eAAP;AACD,CAfM","sourcesContent":["import { divIcon } from \"leaflet\";\nimport memoize from \"lodash.memoize\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { CircleMarker, Marker } from \"react-leaflet\";\n\nimport { floatingBikeIcon, hubIcons } from \"../bike-icons\";\nimport * as Styled from \"../styled\";\n\n/**\n * This file contains default marker types for rental vehicles,\n * that can be used when defining the VehicleRentalOverlay's symbol prop:\n * - SharedBikeCircle\n * - GenericMarker\n * - HubAndFloatingBike\n */\n\n// Prop types reused across components.\nconst templatePropTypes = {\n /** The children of the component. */\n children: PropTypes.node,\n /** The rental vehicle or station to render. */\n // entity: coreUtils.types.stationType.isRequired,\n // eslint-disable-next-line react/forbid-prop-types\n entity: PropTypes.object.isRequired,\n /** leaflet attribute to control tabindex value for keyboaryd-only / SR users */\n keyboard: PropTypes.bool\n};\nconst templateDefaultProps = {\n children: null,\n keyboard: false\n};\n\n/**\n * Renders a shared bike or shared bike dock as a circle\n * with predefined colors and size.\n */\nexport const SharedBikeCircle = ({\n dockStrokeColor,\n fillColor = \"gray\",\n pixels,\n strokeColor\n}) => {\n const GeneratedMarker = ({ children, keyboard, entity: station }) => {\n let newStrokeColor = strokeColor || fillColor;\n\n if (!station.isFloatingBike) {\n newStrokeColor = dockStrokeColor || strokeColor;\n }\n\n return (\n <CircleMarker\n center={[station.y, station.x]}\n color={newStrokeColor}\n fillColor={fillColor}\n fillOpacity={1}\n keyboard={keyboard}\n radius={pixels - (station.isFloatingBike ? 1 : 0)}\n weight={1}\n >\n {children}\n </CircleMarker>\n );\n };\n\n GeneratedMarker.propTypes = templatePropTypes;\n GeneratedMarker.defaultProps = templateDefaultProps;\n return GeneratedMarker;\n};\n\n/**\n * A component that renders rental bike entities\n * either as a bike or a bike dock (or hub, showing spaces available).\n */\nexport const HubAndFloatingBike = ({ children, keyboard, entity: station }) => {\n let icon;\n if (station.isFloatingBike) {\n icon = floatingBikeIcon;\n } else {\n const capacity = station.bikesAvailable + station.spacesAvailable;\n if (capacity === 0) return null;\n const pctFull = station.bikesAvailable / capacity;\n const i = Math.round(pctFull * 9);\n icon = hubIcons[i];\n }\n return (\n <Marker icon={icon} keyboard={keyboard} position={[station.y, station.x]}>\n {children}\n </Marker>\n );\n};\nHubAndFloatingBike.propTypes = templatePropTypes;\nHubAndFloatingBike.defaultProps = templateDefaultProps;\n\n/**\n * Creates and caches a leaflet element icon based on color.\n */\nconst getStationMarkerByColor = memoize(color =>\n divIcon({\n className: \"\",\n iconSize: [11, 16],\n popupAnchor: [0, -6],\n html: ReactDOMServer.renderToStaticMarkup(\n <Styled.StationMarker color={color} />\n )\n })\n);\n\n/**\n * Helper function to create a leaflet Marker component to render entities\n * using fixed fill color.\n * Usage: GenericMarker({ fillColor: \"#F204B5\" })\n */\nexport const GenericMarker = ({ fillColor = \"gray\" }) => {\n const markerIcon = getStationMarkerByColor(fillColor);\n\n const GeneratedMarker = ({ children, keyboard, entity: station }) => (\n <Marker\n icon={markerIcon}\n keyboard={keyboard}\n position={[station.y, station.x]}\n >\n {children}\n </Marker>\n );\n GeneratedMarker.propTypes = templatePropTypes;\n GeneratedMarker.defaultProps = templateDefaultProps;\n return GeneratedMarker;\n};\n"],"file":"index.js"}
|
package/lib/bike-icons.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.hubIcons = exports.floatingBikeIcon = void 0;
|
|
9
|
-
|
|
10
|
-
var _leaflet = require("leaflet");
|
|
11
|
-
|
|
12
|
-
var _react = _interopRequireDefault(require("react"));
|
|
13
|
-
|
|
14
|
-
var _server = _interopRequireDefault(require("react-dom/server"));
|
|
15
|
-
|
|
16
|
-
var S = _interopRequireWildcard(require("./styled"));
|
|
17
|
-
|
|
18
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
|
-
const floatingBikeIcon = (0, _leaflet.divIcon)({
|
|
23
|
-
iconSize: [24, 24],
|
|
24
|
-
iconAnchor: [12, 24],
|
|
25
|
-
popupAnchor: [0, -12],
|
|
26
|
-
html: _server.default.renderToStaticMarkup( /*#__PURE__*/_react.default.createElement(S.OutOfHubBikeIcon, null)),
|
|
27
|
-
className: ""
|
|
28
|
-
});
|
|
29
|
-
exports.floatingBikeIcon = floatingBikeIcon;
|
|
30
|
-
const hubIcons = S.hubIcons.map(StyledIcon => (0, _leaflet.divIcon)({
|
|
31
|
-
iconSize: [24, 24],
|
|
32
|
-
iconAnchor: [12, 24],
|
|
33
|
-
popupAnchor: [0, -12],
|
|
34
|
-
html: _server.default.renderToStaticMarkup( /*#__PURE__*/_react.default.createElement(StyledIcon, null)),
|
|
35
|
-
className: ""
|
|
36
|
-
}));
|
|
37
|
-
exports.hubIcons = hubIcons;
|
|
38
|
-
//# sourceMappingURL=bike-icons.js.map
|
package/lib/bike-icons.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bike-icons.js"],"names":["floatingBikeIcon","iconSize","iconAnchor","popupAnchor","html","ReactDOMServer","renderToStaticMarkup","className","hubIcons","S","map","StyledIcon"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;AAEO,MAAMA,gBAAgB,GAAG,sBAAQ;AACtCC,EAAAA,QAAQ,EAAE,CAAC,EAAD,EAAK,EAAL,CAD4B;AAEtCC,EAAAA,UAAU,EAAE,CAAC,EAAD,EAAK,EAAL,CAF0B;AAGtCC,EAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAC,EAAL,CAHyB;AAItCC,EAAAA,IAAI,EAAEC,gBAAeC,oBAAf,eAAoC,6BAAC,CAAD,CAAG,gBAAH,OAApC,CAJgC;AAKtCC,EAAAA,SAAS,EAAE;AAL2B,CAAR,CAAzB;;AAQA,MAAMC,QAAQ,GAAGC,CAAC,CAACD,QAAF,CAAWE,GAAX,CAAeC,UAAU,IAC/C,sBAAQ;AACNV,EAAAA,QAAQ,EAAE,CAAC,EAAD,EAAK,EAAL,CADJ;AAENC,EAAAA,UAAU,EAAE,CAAC,EAAD,EAAK,EAAL,CAFN;AAGNC,EAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAC,EAAL,CAHP;AAINC,EAAAA,IAAI,EAAEC,gBAAeC,oBAAf,eAAoC,6BAAC,UAAD,OAApC,CAJA;AAKNC,EAAAA,SAAS,EAAE;AALL,CAAR,CADsB,CAAjB","sourcesContent":["import { divIcon } from \"leaflet\";\nimport React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\n\nimport * as S from \"./styled\";\n\nexport const floatingBikeIcon = divIcon({\n iconSize: [24, 24],\n iconAnchor: [12, 24],\n popupAnchor: [0, -12],\n html: ReactDOMServer.renderToStaticMarkup(<S.OutOfHubBikeIcon />),\n className: \"\"\n});\n\nexport const hubIcons = S.hubIcons.map(StyledIcon =>\n divIcon({\n iconSize: [24, 24],\n iconAnchor: [12, 24],\n popupAnchor: [0, -12],\n html: ReactDOMServer.renderToStaticMarkup(<StyledIcon />),\n className: \"\"\n })\n);\n"],"file":"bike-icons.js"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { divIcon } from "leaflet";
|
|
2
|
-
import memoize from "lodash.memoize";
|
|
3
|
-
import PropTypes from "prop-types";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import ReactDOMServer from "react-dom/server";
|
|
6
|
-
import { CircleMarker, Marker } from "react-leaflet";
|
|
7
|
-
|
|
8
|
-
import { floatingBikeIcon, hubIcons } from "../bike-icons";
|
|
9
|
-
import * as Styled from "../styled";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* This file contains default marker types for rental vehicles,
|
|
13
|
-
* that can be used when defining the VehicleRentalOverlay's symbol prop:
|
|
14
|
-
* - SharedBikeCircle
|
|
15
|
-
* - GenericMarker
|
|
16
|
-
* - HubAndFloatingBike
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
// Prop types reused across components.
|
|
20
|
-
const templatePropTypes = {
|
|
21
|
-
/** The children of the component. */
|
|
22
|
-
children: PropTypes.node,
|
|
23
|
-
/** The rental vehicle or station to render. */
|
|
24
|
-
// entity: coreUtils.types.stationType.isRequired,
|
|
25
|
-
// eslint-disable-next-line react/forbid-prop-types
|
|
26
|
-
entity: PropTypes.object.isRequired,
|
|
27
|
-
/** leaflet attribute to control tabindex value for keyboaryd-only / SR users */
|
|
28
|
-
keyboard: PropTypes.bool
|
|
29
|
-
};
|
|
30
|
-
const templateDefaultProps = {
|
|
31
|
-
children: null,
|
|
32
|
-
keyboard: false
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Renders a shared bike or shared bike dock as a circle
|
|
37
|
-
* with predefined colors and size.
|
|
38
|
-
*/
|
|
39
|
-
export const SharedBikeCircle = ({
|
|
40
|
-
dockStrokeColor,
|
|
41
|
-
fillColor = "gray",
|
|
42
|
-
pixels,
|
|
43
|
-
strokeColor
|
|
44
|
-
}) => {
|
|
45
|
-
const GeneratedMarker = ({ children, keyboard, entity: station }) => {
|
|
46
|
-
let newStrokeColor = strokeColor || fillColor;
|
|
47
|
-
|
|
48
|
-
if (!station.isFloatingBike) {
|
|
49
|
-
newStrokeColor = dockStrokeColor || strokeColor;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return (
|
|
53
|
-
<CircleMarker
|
|
54
|
-
center={[station.y, station.x]}
|
|
55
|
-
color={newStrokeColor}
|
|
56
|
-
fillColor={fillColor}
|
|
57
|
-
fillOpacity={1}
|
|
58
|
-
keyboard={keyboard}
|
|
59
|
-
radius={pixels - (station.isFloatingBike ? 1 : 0)}
|
|
60
|
-
weight={1}
|
|
61
|
-
>
|
|
62
|
-
{children}
|
|
63
|
-
</CircleMarker>
|
|
64
|
-
);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
GeneratedMarker.propTypes = templatePropTypes;
|
|
68
|
-
GeneratedMarker.defaultProps = templateDefaultProps;
|
|
69
|
-
return GeneratedMarker;
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* A component that renders rental bike entities
|
|
74
|
-
* either as a bike or a bike dock (or hub, showing spaces available).
|
|
75
|
-
*/
|
|
76
|
-
export const HubAndFloatingBike = ({ children, keyboard, entity: station }) => {
|
|
77
|
-
let icon;
|
|
78
|
-
if (station.isFloatingBike) {
|
|
79
|
-
icon = floatingBikeIcon;
|
|
80
|
-
} else {
|
|
81
|
-
const capacity = station.bikesAvailable + station.spacesAvailable;
|
|
82
|
-
if (capacity === 0) return null;
|
|
83
|
-
const pctFull = station.bikesAvailable / capacity;
|
|
84
|
-
const i = Math.round(pctFull * 9);
|
|
85
|
-
icon = hubIcons[i];
|
|
86
|
-
}
|
|
87
|
-
return (
|
|
88
|
-
<Marker icon={icon} keyboard={keyboard} position={[station.y, station.x]}>
|
|
89
|
-
{children}
|
|
90
|
-
</Marker>
|
|
91
|
-
);
|
|
92
|
-
};
|
|
93
|
-
HubAndFloatingBike.propTypes = templatePropTypes;
|
|
94
|
-
HubAndFloatingBike.defaultProps = templateDefaultProps;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Creates and caches a leaflet element icon based on color.
|
|
98
|
-
*/
|
|
99
|
-
const getStationMarkerByColor = memoize(color =>
|
|
100
|
-
divIcon({
|
|
101
|
-
className: "",
|
|
102
|
-
iconSize: [11, 16],
|
|
103
|
-
popupAnchor: [0, -6],
|
|
104
|
-
html: ReactDOMServer.renderToStaticMarkup(
|
|
105
|
-
<Styled.StationMarker color={color} />
|
|
106
|
-
)
|
|
107
|
-
})
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Helper function to create a leaflet Marker component to render entities
|
|
112
|
-
* using fixed fill color.
|
|
113
|
-
* Usage: GenericMarker({ fillColor: "#F204B5" })
|
|
114
|
-
*/
|
|
115
|
-
export const GenericMarker = ({ fillColor = "gray" }) => {
|
|
116
|
-
const markerIcon = getStationMarkerByColor(fillColor);
|
|
117
|
-
|
|
118
|
-
const GeneratedMarker = ({ children, keyboard, entity: station }) => (
|
|
119
|
-
<Marker
|
|
120
|
-
icon={markerIcon}
|
|
121
|
-
keyboard={keyboard}
|
|
122
|
-
position={[station.y, station.x]}
|
|
123
|
-
>
|
|
124
|
-
{children}
|
|
125
|
-
</Marker>
|
|
126
|
-
);
|
|
127
|
-
GeneratedMarker.propTypes = templatePropTypes;
|
|
128
|
-
GeneratedMarker.defaultProps = templateDefaultProps;
|
|
129
|
-
return GeneratedMarker;
|
|
130
|
-
};
|