@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/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.34.0] - 2025-04-15
11
+
12
+ ### Added
13
+
14
+ - callback onDrag on Marker component
15
+
16
+ ## [0.33.0] - 2025-04-10
17
+
18
+ ### Added
19
+
20
+ - Memo for markers
21
+ - OnLoad cb on markers
22
+
10
23
  ## [0.32.0] - 2025-04-03
11
24
 
12
25
  ### Added
package/dist/index.esm.js CHANGED
@@ -15937,6 +15937,28 @@ var InfoWindow = function InfoWindow(_ref) {
15937
15937
  }, children));
15938
15938
  };
15939
15939
 
15940
+ var getCoordsFromEvent = function getCoordsFromEvent() {
15941
+ var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15942
+ if (_typeof(event) !== 'object') return;
15943
+ var _event$latLng = event.latLng;
15944
+ _event$latLng = _event$latLng === void 0 ? {} : _event$latLng;
15945
+ var _event$latLng$lat = _event$latLng.lat,
15946
+ lat = _event$latLng$lat === void 0 ? function () {} : _event$latLng$lat,
15947
+ _event$latLng$lng = _event$latLng.lng,
15948
+ lng = _event$latLng$lng === void 0 ? function () {} : _event$latLng$lng;
15949
+ return {
15950
+ lat: lat(),
15951
+ lng: lng()
15952
+ };
15953
+ };
15954
+ var markerHasEqualPosition = function markerHasEqualPosition() {
15955
+ var prevPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15956
+ var newPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15957
+ var hasEqualLat = (prevPosition === null || prevPosition === void 0 ? void 0 : prevPosition.lat) === (newPosition === null || newPosition === void 0 ? void 0 : newPosition.lat);
15958
+ var hasEqualLng = (prevPosition === null || prevPosition === void 0 ? void 0 : prevPosition.lng) === (newPosition === null || newPosition === void 0 ? void 0 : newPosition.lng);
15959
+ return hasEqualLat && hasEqualLng;
15960
+ };
15961
+
15940
15962
  var Marker = function Marker(_ref) {
15941
15963
  var _ref$markerData = _ref.markerData,
15942
15964
  markerData = _ref$markerData === void 0 ? {} : _ref$markerData,
@@ -15945,29 +15967,40 @@ var Marker = function Marker(_ref) {
15945
15967
  _ref$readOnly = _ref.readOnly,
15946
15968
  readOnly = _ref$readOnly === void 0 ? true : _ref$readOnly;
15947
15969
 
15948
- var _ref2 = markerData || {},
15970
+ var _useState = useState(markerData),
15971
+ _useState2 = _slicedToArray(_useState, 2),
15972
+ marker = _useState2[0],
15973
+ setMarker = _useState2[1];
15974
+
15975
+ var _ref2 = marker || {},
15949
15976
  icon = _ref2.icon,
15950
15977
  position = _ref2.position,
15951
15978
  overlay = _ref2.overlay,
15952
15979
  infoWindowChildren = _ref2.infoWindowChildren,
15953
15980
  isDraggable = _ref2.isDraggable;
15954
15981
 
15955
- var _markerOptions$onClic = markerOptions.onClick,
15982
+ var _markerOptions$onLoad = markerOptions.onLoad,
15983
+ _onLoad = _markerOptions$onLoad === void 0 ? function () {} : _markerOptions$onLoad,
15984
+ _markerOptions$onClic = markerOptions.onClick,
15956
15985
  _onClick = _markerOptions$onClic === void 0 ? function () {} : _markerOptions$onClic,
15957
- _markerOptions$onDrag = markerOptions.onDragStart,
15958
- _onDragStart = _markerOptions$onDrag === void 0 ? function () {} : _markerOptions$onDrag,
15959
- _markerOptions$onDrag2 = markerOptions.onDragEnd,
15960
- _onDragEnd = _markerOptions$onDrag2 === void 0 ? function () {} : _markerOptions$onDrag2;
15986
+ _markerOptions$onDrag = markerOptions.onDrag,
15987
+ _onDrag = _markerOptions$onDrag === void 0 ? function () {} : _markerOptions$onDrag,
15988
+ _markerOptions$onDrag2 = markerOptions.onDragStart,
15989
+ _onDragStart = _markerOptions$onDrag2 === void 0 ? function () {} : _markerOptions$onDrag2,
15990
+ _markerOptions$onDrag3 = markerOptions.onDragEnd,
15991
+ _onDragEnd = _markerOptions$onDrag3 === void 0 ? function () {} : _markerOptions$onDrag3;
15961
15992
 
15962
- var _useState = useState(false),
15963
- _useState2 = _slicedToArray(_useState, 2),
15964
- infoWindowOpen = _useState2[0],
15965
- setInfoWindowOpen = _useState2[1];
15993
+ var markerRef = useRef(null);
15966
15994
 
15967
15995
  var _useState3 = useState(false),
15968
15996
  _useState4 = _slicedToArray(_useState3, 2),
15969
- mouseOverInfoWindow = _useState4[0],
15970
- setMouseOverInfoWindow = _useState4[1];
15997
+ infoWindowOpen = _useState4[0],
15998
+ setInfoWindowOpen = _useState4[1];
15999
+
16000
+ var _useState5 = useState(false),
16001
+ _useState6 = _slicedToArray(_useState5, 2),
16002
+ mouseOverInfoWindow = _useState6[0],
16003
+ setMouseOverInfoWindow = _useState6[1];
15971
16004
 
15972
16005
  var openInfoWindow = function openInfoWindow() {
15973
16006
  return setInfoWindowOpen(true);
@@ -15980,18 +16013,51 @@ var Marker = function Marker(_ref) {
15980
16013
  var delayedInfoWindowHover = debounce(function () {
15981
16014
  if (!mouseOverInfoWindow) closeInfoWindow();
15982
16015
  }, 100);
16016
+
16017
+ var updateMarker = function updateMarker() {
16018
+ var newData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16019
+
16020
+ var updatedMarker = _objectSpread2(_objectSpread2({}, marker), newData);
16021
+
16022
+ setMarker(updatedMarker);
16023
+ return updatedMarker;
16024
+ };
16025
+
16026
+ var getEventHandlerData = function getEventHandlerData(event) {
16027
+ var _markerRef$current;
16028
+
16029
+ var newPosition = getCoordsFromEvent(event);
16030
+ return {
16031
+ marker: markerHasEqualPosition(marker === null || marker === void 0 ? void 0 : marker.position, newPosition) ? marker : updateMarker({
16032
+ position: newPosition
16033
+ }),
16034
+ prevMarker: marker,
16035
+ instance: (_markerRef$current = markerRef.current) === null || _markerRef$current === void 0 ? void 0 : _markerRef$current.marker
16036
+ };
16037
+ };
16038
+
15983
16039
  var markerProps = {
16040
+ ref: markerRef,
15984
16041
  position: position,
15985
16042
  draggable: isDraggable || !readOnly,
15986
16043
  icon: icon,
15987
- onClick: function onClick(eventData) {
15988
- return _onClick(markerData, eventData);
16044
+ onLoad: function onLoad(instance) {
16045
+ return _onLoad({
16046
+ prevMarker: marker,
16047
+ instance: instance
16048
+ });
16049
+ },
16050
+ onClick: function onClick(event) {
16051
+ return _onClick(getEventHandlerData(event));
15989
16052
  },
15990
- onDragEnd: function onDragEnd(eventData) {
15991
- return _onDragEnd(markerData, eventData);
16053
+ onDrag: function onDrag(event) {
16054
+ return _onDrag(event);
15992
16055
  },
15993
- onDragStart: function onDragStart(eventData) {
15994
- return _onDragStart(markerData, eventData);
16056
+ onDragEnd: function onDragEnd(event) {
16057
+ return _onDragEnd(getEventHandlerData(event));
16058
+ },
16059
+ onDragStart: function onDragStart(event) {
16060
+ return _onDragStart(getEventHandlerData(event));
15995
16061
  },
15996
16062
  onMouseOver: function onMouseOver() {
15997
16063
  return openInfoWindow();
@@ -16032,7 +16098,11 @@ var Marker = function Marker(_ref) {
16032
16098
  }, infoWindowChildren()));
16033
16099
  };
16034
16100
 
16035
- var Marker$1 = /*#__PURE__*/React__default.memo(Marker);
16101
+ var Marker$1 = /*#__PURE__*/React__default.memo(Marker, function (prev, next) {
16102
+ var serializedPrev = JSON.stringify(prev);
16103
+ var serializedNext = JSON.stringify(next);
16104
+ return serializedPrev === serializedNext;
16105
+ });
16036
16106
 
16037
16107
  var Markers = function Markers(_ref) {
16038
16108
  var _ref$readOnly = _ref.readOnly,
@@ -16043,10 +16113,12 @@ var Markers = function Markers(_ref) {
16043
16113
  markerOptions = _ref$markerOptions === void 0 ? {} : _ref$markerOptions;
16044
16114
  if (!markers.length) return null;
16045
16115
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, markers.map(function (marker, idx) {
16116
+ var _marker$position, _marker$position2;
16117
+
16046
16118
  return /*#__PURE__*/React__default.createElement(Marker$1, {
16047
16119
  markerData: _objectSpread2({}, marker),
16048
16120
  markerOptions: markerOptions,
16049
- key: idx,
16121
+ 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),
16050
16122
  readOnly: readOnly,
16051
16123
  markerIdx: idx
16052
16124
  });