@janiscommerce/ui-web 0.32.0 → 0.34.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/dist/index.umd.js CHANGED
@@ -15963,6 +15963,28 @@
15963
15963
  }, children));
15964
15964
  };
15965
15965
 
15966
+ var getCoordsFromEvent = function getCoordsFromEvent() {
15967
+ var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15968
+ if (_typeof(event) !== 'object') return;
15969
+ var _event$latLng = event.latLng;
15970
+ _event$latLng = _event$latLng === void 0 ? {} : _event$latLng;
15971
+ var _event$latLng$lat = _event$latLng.lat,
15972
+ lat = _event$latLng$lat === void 0 ? function () {} : _event$latLng$lat,
15973
+ _event$latLng$lng = _event$latLng.lng,
15974
+ lng = _event$latLng$lng === void 0 ? function () {} : _event$latLng$lng;
15975
+ return {
15976
+ lat: lat(),
15977
+ lng: lng()
15978
+ };
15979
+ };
15980
+ var markerHasEqualPosition = function markerHasEqualPosition() {
15981
+ var prevPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15982
+ var newPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15983
+ var hasEqualLat = (prevPosition === null || prevPosition === void 0 ? void 0 : prevPosition.lat) === (newPosition === null || newPosition === void 0 ? void 0 : newPosition.lat);
15984
+ var hasEqualLng = (prevPosition === null || prevPosition === void 0 ? void 0 : prevPosition.lng) === (newPosition === null || newPosition === void 0 ? void 0 : newPosition.lng);
15985
+ return hasEqualLat && hasEqualLng;
15986
+ };
15987
+
15966
15988
  var Marker = function Marker(_ref) {
15967
15989
  var _ref$markerData = _ref.markerData,
15968
15990
  markerData = _ref$markerData === void 0 ? {} : _ref$markerData,
@@ -15971,29 +15993,40 @@
15971
15993
  _ref$readOnly = _ref.readOnly,
15972
15994
  readOnly = _ref$readOnly === void 0 ? true : _ref$readOnly;
15973
15995
 
15974
- var _ref2 = markerData || {},
15996
+ var _useState = React.useState(markerData),
15997
+ _useState2 = _slicedToArray(_useState, 2),
15998
+ marker = _useState2[0],
15999
+ setMarker = _useState2[1];
16000
+
16001
+ var _ref2 = marker || {},
15975
16002
  icon = _ref2.icon,
15976
16003
  position = _ref2.position,
15977
16004
  overlay = _ref2.overlay,
15978
16005
  infoWindowChildren = _ref2.infoWindowChildren,
15979
16006
  isDraggable = _ref2.isDraggable;
15980
16007
 
15981
- var _markerOptions$onClic = markerOptions.onClick,
16008
+ var _markerOptions$onLoad = markerOptions.onLoad,
16009
+ _onLoad = _markerOptions$onLoad === void 0 ? function () {} : _markerOptions$onLoad,
16010
+ _markerOptions$onClic = markerOptions.onClick,
15982
16011
  _onClick = _markerOptions$onClic === void 0 ? function () {} : _markerOptions$onClic,
15983
- _markerOptions$onDrag = markerOptions.onDragStart,
15984
- _onDragStart = _markerOptions$onDrag === void 0 ? function () {} : _markerOptions$onDrag,
15985
- _markerOptions$onDrag2 = markerOptions.onDragEnd,
15986
- _onDragEnd = _markerOptions$onDrag2 === void 0 ? function () {} : _markerOptions$onDrag2;
16012
+ _markerOptions$onDrag = markerOptions.onDrag,
16013
+ _onDrag = _markerOptions$onDrag === void 0 ? function () {} : _markerOptions$onDrag,
16014
+ _markerOptions$onDrag2 = markerOptions.onDragStart,
16015
+ _onDragStart = _markerOptions$onDrag2 === void 0 ? function () {} : _markerOptions$onDrag2,
16016
+ _markerOptions$onDrag3 = markerOptions.onDragEnd,
16017
+ _onDragEnd = _markerOptions$onDrag3 === void 0 ? function () {} : _markerOptions$onDrag3;
15987
16018
 
15988
- var _useState = React.useState(false),
15989
- _useState2 = _slicedToArray(_useState, 2),
15990
- infoWindowOpen = _useState2[0],
15991
- setInfoWindowOpen = _useState2[1];
16019
+ var markerRef = React.useRef(null);
15992
16020
 
15993
16021
  var _useState3 = React.useState(false),
15994
16022
  _useState4 = _slicedToArray(_useState3, 2),
15995
- mouseOverInfoWindow = _useState4[0],
15996
- setMouseOverInfoWindow = _useState4[1];
16023
+ infoWindowOpen = _useState4[0],
16024
+ setInfoWindowOpen = _useState4[1];
16025
+
16026
+ var _useState5 = React.useState(false),
16027
+ _useState6 = _slicedToArray(_useState5, 2),
16028
+ mouseOverInfoWindow = _useState6[0],
16029
+ setMouseOverInfoWindow = _useState6[1];
15997
16030
 
15998
16031
  var openInfoWindow = function openInfoWindow() {
15999
16032
  return setInfoWindowOpen(true);
@@ -16006,18 +16039,51 @@
16006
16039
  var delayedInfoWindowHover = debounce(function () {
16007
16040
  if (!mouseOverInfoWindow) closeInfoWindow();
16008
16041
  }, 100);
16042
+
16043
+ var updateMarker = function updateMarker() {
16044
+ var newData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16045
+
16046
+ var updatedMarker = _objectSpread2(_objectSpread2({}, marker), newData);
16047
+
16048
+ setMarker(updatedMarker);
16049
+ return updatedMarker;
16050
+ };
16051
+
16052
+ var getEventHandlerData = function getEventHandlerData(event) {
16053
+ var _markerRef$current;
16054
+
16055
+ var newPosition = getCoordsFromEvent(event);
16056
+ return {
16057
+ marker: markerHasEqualPosition(marker === null || marker === void 0 ? void 0 : marker.position, newPosition) ? marker : updateMarker({
16058
+ position: newPosition
16059
+ }),
16060
+ prevMarker: marker,
16061
+ instance: (_markerRef$current = markerRef.current) === null || _markerRef$current === void 0 ? void 0 : _markerRef$current.marker
16062
+ };
16063
+ };
16064
+
16009
16065
  var markerProps = {
16066
+ ref: markerRef,
16010
16067
  position: position,
16011
16068
  draggable: isDraggable || !readOnly,
16012
16069
  icon: icon,
16013
- onClick: function onClick(eventData) {
16014
- return _onClick(markerData, eventData);
16070
+ onLoad: function onLoad(instance) {
16071
+ return _onLoad({
16072
+ prevMarker: marker,
16073
+ instance: instance
16074
+ });
16075
+ },
16076
+ onClick: function onClick(event) {
16077
+ return _onClick(getEventHandlerData(event));
16015
16078
  },
16016
- onDragEnd: function onDragEnd(eventData) {
16017
- return _onDragEnd(markerData, eventData);
16079
+ onDrag: function onDrag(event) {
16080
+ return _onDrag(event);
16018
16081
  },
16019
- onDragStart: function onDragStart(eventData) {
16020
- return _onDragStart(markerData, eventData);
16082
+ onDragEnd: function onDragEnd(event) {
16083
+ return _onDragEnd(getEventHandlerData(event));
16084
+ },
16085
+ onDragStart: function onDragStart(event) {
16086
+ return _onDragStart(getEventHandlerData(event));
16021
16087
  },
16022
16088
  onMouseOver: function onMouseOver() {
16023
16089
  return openInfoWindow();
@@ -16058,7 +16124,11 @@
16058
16124
  }, infoWindowChildren()));
16059
16125
  };
16060
16126
 
16061
- var Marker$1 = /*#__PURE__*/React__default["default"].memo(Marker);
16127
+ var Marker$1 = /*#__PURE__*/React__default["default"].memo(Marker, function (prev, next) {
16128
+ var serializedPrev = JSON.stringify(prev);
16129
+ var serializedNext = JSON.stringify(next);
16130
+ return serializedPrev === serializedNext;
16131
+ });
16062
16132
 
16063
16133
  var Markers = function Markers(_ref) {
16064
16134
  var _ref$readOnly = _ref.readOnly,
@@ -16069,10 +16139,12 @@
16069
16139
  markerOptions = _ref$markerOptions === void 0 ? {} : _ref$markerOptions;
16070
16140
  if (!markers.length) return null;
16071
16141
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, markers.map(function (marker, idx) {
16142
+ var _marker$position, _marker$position2;
16143
+
16072
16144
  return /*#__PURE__*/React__default["default"].createElement(Marker$1, {
16073
16145
  markerData: _objectSpread2({}, marker),
16074
16146
  markerOptions: markerOptions,
16075
- key: idx,
16147
+ key: "".concat(idx.toString(), "-").concat(marker === null || marker === void 0 ? void 0 : (_marker$position = marker.position) === null || _marker$position === void 0 ? void 0 : _marker$position.lat, "-").concat(marker === null || marker === void 0 ? void 0 : (_marker$position2 = marker.position) === null || _marker$position2 === void 0 ? void 0 : _marker$position2.lng),
16076
16148
  readOnly: readOnly,
16077
16149
  markerIdx: idx
16078
16150
  });