iticket-seatingplan-dev 2.0.17 → 2.0.19

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.
@@ -99,7 +99,7 @@ function Controls(_ref) {
99
99
  onClick: () => map.fitBounds(bounds),
100
100
  className: "leaflet-control-zoom-in"
101
101
  }, /*#__PURE__*/_react.default.createElement("img", {
102
- src: "https://au-iticket-shop-legacy.azurewebsites.net/assets/images/fit-icon.jpg",
102
+ src: _encodedSvgs.fitIcon,
103
103
  style: {
104
104
  height: "17px"
105
105
  }
@@ -116,7 +116,7 @@ function Controls(_ref) {
116
116
  }
117
117
  }, /*#__PURE__*/_react.default.createElement("img", {
118
118
  className: isReloading ? "rotate" : "",
119
- src: "https://au-iticket-shop-legacy.azurewebsites.net/assets/images/refresh.png",
119
+ src: _encodedSvgs.reloadIcon,
120
120
  style: {
121
121
  height: "17px"
122
122
  }
@@ -191,7 +191,7 @@ function Controls(_ref) {
191
191
  className: "leaflet-control-zoom-in single-button"
192
192
  }, /*#__PURE__*/_react.default.createElement("span", null)))), /*#__PURE__*/_react.default.createElement(_reactLeaflet.FeatureGroup, {
193
193
  ref: drawLayersRef
194
- }, /*#__PURE__*/_react.default.createElement(_reactLeafletDraw.EditControl, {
194
+ }, drawLayersRef.current && /*#__PURE__*/_react.default.createElement(_reactLeafletDraw.EditControl, {
195
195
  position: "bottomleft",
196
196
  onCreated: handleDrawBox,
197
197
  onDrawStart: () => {
@@ -210,7 +210,8 @@ function Controls(_ref) {
210
210
  },
211
211
  edit: {
212
212
  edit: false,
213
- remove: false
213
+ remove: false,
214
+ featureGroup: drawLayersRef.current
214
215
  },
215
216
  onMounted: drawInstance => {
216
217
  drawRef.current = drawInstance;
@@ -299,7 +299,7 @@ function SeatMap(_ref) {
299
299
  }
300
300
  if (highlightedSeats.length === desiredSeatQuantity) {
301
301
  setClickedSeat(null);
302
- const groupedSeats = (0, _utils.groupSeatsByPriceSection)(highlightedSeats, seats.pricing, priceSectionIds);
302
+ const groupedSeats = (0, _utils.groupSeatsByPriceSection)(highlightedSeats, bookedSeats, seats.pricing, priceSectionIds);
303
303
  const priceages = Object.values(groupedSeats).flatMap(group => group.priceages.map(pa => pa.priceage));
304
304
  if (priceages.length === 1 && (priceages[0].q === null || priceages[0].q >= desiredSeatQuantity) && !isSingleFlexi) {
305
305
  batchAddTicketsToCart(highlightedSeats.map(s => ({
@@ -436,7 +436,12 @@ function SeatMap(_ref) {
436
436
  lng: s.x,
437
437
  radius: 110
438
438
  };
439
- const seatPrices = ((_seats$pricing3 = seats.pricing) === null || _seats$pricing3 === void 0 ? void 0 : _seats$pricing3.filter(price => (!priceSectionIds || priceSectionIds.includes(price.psId)) && price.psId === s.psId)) || [];
439
+ const seatPrices = (((_seats$pricing3 = seats.pricing) === null || _seats$pricing3 === void 0 ? void 0 : _seats$pricing3.filter(price => (!priceSectionIds || priceSectionIds.includes(price.psId)) && price.psId === s.psId)) || []).map(p => {
440
+ const bookedQty = bookedSeats.filter(bs => bs.pId === p.paId && bs.psId === s.psId).length;
441
+ return _objectSpread(_objectSpread({}, p), {}, {
442
+ q: p.q === null ? null : Math.max(p.q - bookedQty, 0)
443
+ });
444
+ });
440
445
  const hasSeatPrices = (seatPrices === null || seatPrices === void 0 ? void 0 : seatPrices.length) > 0;
441
446
  const isSingleFlexi = seatPrices.length === 1 && !!seatPrices[0].pMax && !!seatPrices[0].pMin && seatPrices[0].pMax > seatPrices[0].pMin;
442
447
  const radiusInDeg = seatCenter.radius / _constants.ONE_DEG_LAT_IN_METERS;
@@ -208,11 +208,12 @@ function PricingPopup(_ref4) {
208
208
  let {
209
209
  onClose,
210
210
  selectedSeats,
211
+ bookedSeats,
211
212
  batchAddTicketsToCart,
212
213
  pricing,
213
214
  priceSectionIds
214
215
  } = _ref4;
215
- const [seatGroupsToBook, setSeatGroupsToBook] = (0, _react.useState)(() => (0, _utils.groupSeatsByPriceSection)(selectedSeats, pricing, priceSectionIds));
216
+ const [seatGroupsToBook, setSeatGroupsToBook] = (0, _react.useState)(() => (0, _utils.groupSeatsByPriceSection)(selectedSeats, bookedSeats, pricing, priceSectionIds));
216
217
  const updateSeatGroupPriceage = (priceage, qty) => {
217
218
  const newSeatGroupsToBook = _objectSpread({}, seatGroupsToBook);
218
219
  const group = newSeatGroupsToBook[priceage.psId];
@@ -561,16 +561,23 @@ const SeatingPlan = _ref => {
561
561
  throw new Error("Something went wrong. Please try again or contact support.");
562
562
  }
563
563
  }
564
- setBookedSeats(data.seats.filter(s => s.s === _utils.statuses.USER_PENDING && s.bookedPrice === price).map(s => ({
565
- ssId: s.ssId,
566
- r: s.r,
567
- c: s.c,
568
- showingId: showingId,
569
- p: s.p,
570
- //price || s.defaultPrice,
571
- pId: s.pId,
572
- paName: s.paName
573
- })));
564
+
565
+ // setBookedSeats(
566
+ // data.seats
567
+ // .filter(
568
+ // (s) => s.s === statuses.USER_PENDING && s.bookedPrice === price,
569
+ // )
570
+ // .map((s) => ({
571
+ // ssId: s.ssId,
572
+ // r: s.r,
573
+ // c: s.c,
574
+ // showingId: showingId,
575
+ // p: s.p, //price || s.defaultPrice,
576
+ // pId: s.pId,
577
+ // paName: s.paName,
578
+ // })),
579
+ // );
580
+
574
581
  const img = new Image();
575
582
  const setupSeats = (h, w) => {
576
583
  const lat1 = 0;
@@ -656,6 +663,7 @@ const SeatingPlan = _ref => {
656
663
  setSelectedSeats([]);
657
664
  },
658
665
  selectedSeats: selectedSeats,
666
+ bookedSeats: bookedSeats,
659
667
  pricing: seats.pricing,
660
668
  priceSectionIds: priceSectionIds,
661
669
  batchAddTicketsToCart: batchAddTicketsToCart
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.wheelchairIcon = exports.userIcon = exports.handIcon = exports.flexiIcon = exports.expandIcon = exports.editIcon = exports.cursorIcon = exports.collapseIcon = exports.closeIconWhite = exports.closeIcon = void 0;
6
+ exports.wheelchairIcon = exports.userIcon = exports.reloadIcon = exports.handIcon = exports.flexiIcon = exports.fitIcon = exports.expandIcon = exports.editIcon = exports.cursorIcon = exports.collapseIcon = exports.closeIconWhite = exports.closeIcon = void 0;
7
7
  const expandIcon = exports.expandIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIj4KIDxwYXRoIGQ9Ik03IDE0SDV2NWg1di0ySDd6bS0yLTRoMlY3aDNWNUg1em0xMiA3aC0zdjJoNXYtNWgtMnpNMTQgNXYyaDN2M2gyVjV6Ij48L3BhdGg+Cjwvc3ZnPgo=";
8
8
  const collapseIcon = exports.collapseIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIj4KPHBhdGggZD0iTTUgMTZoM3YzaDJ2LTVINXptMy04SDV2Mmg1VjVIOHptNiAxMWgydi0zaDN2LTJoLTV6bTItMTFWNWgtMnY1aDVWOHoiPjwvcGF0aD4KPC9zdmc+Cg==";
9
9
  const closeIcon = exports.closeIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxsaW5lIHgxPSIxOCIgeTE9IjYiIHgyPSI2IiB5Mj0iMTgiLz48bGluZSB4MT0iNiIgeTE9IjYiIHgyPSIxOCIgeTI9IjE4Ii8+PC9zdmc+";
@@ -13,4 +13,6 @@ const handIcon = exports.handIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvb
13
13
  const cursorIcon = exports.cursorIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyMCA1MTIiPjwhLS0hRm9udCBBd2Vzb21lIEZyZWUgNi43LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSBDb3B5cmlnaHQgMjAyNCBGb250aWNvbnMsIEluYy4tLT48cGF0aCBkPSJNMCA1NS4yTDAgNDI2YzAgMTIuMiA5LjkgMjIgMjIgMjJjNi4zIDAgMTIuNC0yLjcgMTYuNi03LjVMMTIxLjIgMzQ2bDU4LjEgMTE2LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45TDE3OS44IDMyMGwxMTguMSAwYzEyLjIgMCAyMi4xLTkuOSAyMi4xLTIyLjFjMC02LjMtMi43LTEyLjMtNy40LTE2LjVMMzguNiAzNy45QzM0LjMgMzQuMSAyOC45IDMyIDIzLjIgMzJDMTAuNCAzMiAwIDQyLjQgMCA1NS4yeiIvPjwvc3ZnPg==";
14
14
  const flexiIcon = exports.flexiIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGNsYXNzPSJzaXplLTYiPgogIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTIuMjUgMTggOSAxMS4yNWw0LjMwNiA0LjMwNmExMS45NSAxMS45NSAwIDAgMSA1LjgxNC01LjUxOGwyLjc0LTEuMjJtMCAwLTUuOTQtMi4yODFtNS45NCAyLjI4LTIuMjggNS45NDEiIC8+Cjwvc3ZnPg==";
15
15
  const editIcon = exports.editIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGNsYXNzPSJzaXplLTYiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTE2Ljg2MiA0LjQ4NyAxLjY4Ny0xLjY4OGExLjg3NSAxLjg3NSAwIDEgMSAyLjY1MiAyLjY1MkwxMC41ODIgMTYuMDdhNC41IDQuNSAwIDAgMS0xLjg5NyAxLjEzTDYgMThsLjgtMi42ODVhNC41IDQuNSAwIDAgMSAxLjEzLTEuODk3bDguOTMyLTguOTMxWm0wIDBMMTkuNSA3LjEyNU0xOCAxNHY0Ljc1QTIuMjUgMi4yNSAwIDAgMSAxNS43NSAyMUg1LjI1QTIuMjUgMi4yNSAwIDAgMSAzIDE4Ljc1VjguMjVBMi4yNSAyLjI1IDAgMCAxIDUuMjUgNkgxMCIgLz48L3N2Zz4=";
16
- const closeIconWhite = exports.closeIconWhite = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48bGluZSB4MT0iMTgiIHkxPSI2IiB4Mj0iNiIgeTI9IjE4Ii8+PGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iMTgiIHkyPSIxOCIvPjwvc3ZnPg==";
16
+ const closeIconWhite = exports.closeIconWhite = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48bGluZSB4MT0iMTgiIHkxPSI2IiB4Mj0iNiIgeTI9IjE4Ii8+PGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iMTgiIHkyPSIxOCIvPjwvc3ZnPg==";
17
+ const fitIcon = exports.fitIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGRhdGEtc2xvdD0iaWNvbiIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZT0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTMuNzUgMy43NXY0LjVtMC00LjVoNC41bS00LjUgMEw5IDlNMy43NSAyMC4yNXYtNC41bTAgNC41aDQuNW0tNC41IDBMOSAxNU0yMC4yNSAzLjc1aC00LjVtNC41IDB2NC41bTAtNC41TDE1IDltNS4yNSAxMS4yNWgtNC41bTQuNSAwdi00LjVtMCA0LjVMMTUgMTUiPjwvcGF0aD48L3N2Zz4=";
18
+ const reloadIcon = exports.reloadIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGRhdGEtc2xvdD0iaWNvbiIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZT0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTE2LjAyMyA5LjM0OGg0Ljk5MnYtLjAwMU0yLjk4NSAxOS42NDR2LTQuOTkybTAgMGg0Ljk5Mm0tNC45OTMgMCAzLjE4MSAzLjE4M2E4LjI1IDguMjUgMCAwIDAgMTMuODAzLTMuN000LjAzMSA5Ljg2NWE4LjI1IDguMjUgMCAwIDEgMTMuODAzLTMuN2wzLjE4MSAzLjE4Mm0wLTQuOTkxdjQuOTkiPjwvcGF0aD48L3N2Zz4=";
@@ -124,7 +124,7 @@ button {
124
124
  transform: rotate(0deg);
125
125
  }
126
126
  to {
127
- transform: rotate(-359deg);
127
+ transform: rotate(359deg);
128
128
  }
129
129
  }
130
130
 
@@ -265,8 +265,8 @@ button {
265
265
  }
266
266
 
267
267
  code {
268
- font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
269
- monospace;
268
+ font-family:
269
+ source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
270
270
  }
271
271
 
272
272
  .App {
@@ -566,7 +566,8 @@ svg.leaflet-image-layer.leaflet-interactive path {
566
566
  --accent-color: rgba(99, 102, 241, 0.08);
567
567
  --bg-color: rgb(249, 250, 251);
568
568
  background-color: var(--bg-color);
569
- background-image: linear-gradient(var(--accent-color) 1px, transparent 1px),
569
+ background-image:
570
+ linear-gradient(var(--accent-color) 1px, transparent 1px),
570
571
  linear-gradient(to right, var(--accent-color) 1px, var(--bg-color) 1px);
571
572
  background-size: 20px 20px;
572
573
  outline-offset: 1px;
@@ -664,7 +665,10 @@ svg.leaflet-image-layer.leaflet-interactive path {
664
665
 
665
666
  .leaflet-control-zoom-in,
666
667
  .leaflet-control-zoom-out {
667
- font: bold 18px "Lucida Console", Monaco, monospace;
668
+ font:
669
+ bold 18px "Lucida Console",
670
+ Monaco,
671
+ monospace;
668
672
  text-indent: 1px;
669
673
  }
670
674
 
@@ -925,7 +929,10 @@ svg.leaflet-image-layer.leaflet-interactive path {
925
929
  text-align: center;
926
930
  width: 24px;
927
931
  height: 24px;
928
- font: 16px/24px Tahoma, Verdana, sans-serif;
932
+ font:
933
+ 16px/24px Tahoma,
934
+ Verdana,
935
+ sans-serif;
929
936
  color: #757575;
930
937
  text-decoration: none;
931
938
  background: transparent;
@@ -6,6 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.groupSeatsByPriceSection = exports.getValidSeats = exports.getSeatCenterLatLng = exports.getRowSection = exports.getRetryDelay = exports.getIsTouchScreen = exports.getInitialColor = exports.getAdjacentBookedSeats = exports.createsOrphan = exports.canSelectSingleSeatGivenOrphanRules = exports.NZDollar = void 0;
7
7
  var _enums = require("./enums");
8
8
  var _constants = require("./constants");
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
14
  const getIsTouchScreen = () => {
10
15
  let hasTouchScreen = false;
11
16
  if (typeof window !== "undefined") {
@@ -228,12 +233,18 @@ const getRetryDelay = response => {
228
233
  return delay + Math.random() * 1000;
229
234
  };
230
235
  exports.getRetryDelay = getRetryDelay;
231
- const groupSeatsByPriceSection = (seats, pricing, priceSectionIds) => {
236
+ const groupSeatsByPriceSection = (seats, bookedSeats, pricing, priceSectionIds) => {
232
237
  const groupedSeats = seats.reduce((acc, curr) => {
233
238
  if (curr.psId) {
234
239
  const priceages = pricing.filter(price => price.psId === curr.psId && (!priceSectionIds || priceSectionIds.includes(price.psId)));
235
- const availablePriceages = priceages.filter(p => p.q === null || p.q > 0);
236
- const soldOutPriceages = priceages.filter(p => p.q === 0);
240
+ const adjustedPriceages = priceages.map(p => {
241
+ const bookedQty = bookedSeats.filter(s => s.pId === p.paId && s.psId === curr.psId).length;
242
+ return _objectSpread(_objectSpread({}, p), {}, {
243
+ q: p.q !== null ? Math.max(p.q - bookedQty, 0) : null
244
+ });
245
+ });
246
+ const availablePriceages = adjustedPriceages.filter(p => p.q === null || p.q > 0);
247
+ const soldOutPriceages = adjustedPriceages.filter(p => p.q === 0);
237
248
  const numSeats = seats.filter(s => s.psId === curr.psId).length;
238
249
  if (!acc[curr.psId]) {
239
250
  let qtyFilled = 0;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "iticket-seatingplan-dev",
3
3
  "description": "Seating plan with FLEXi pricing",
4
4
  "author": "gedwyne",
5
- "version": "2.0.17",
5
+ "version": "2.0.19",
6
6
  "private": false,
7
7
  "keywords": [
8
8
  "iticket",
@@ -20,10 +20,10 @@
20
20
  "@types/leaflet-draw": "^1.0.11",
21
21
  "leaflet": "^1.9.4",
22
22
  "leaflet-draw": "^1.0.4",
23
- "react": "^19.0.0",
24
- "react-dom": "^19.0.0",
25
- "react-leaflet": "^5.0.0-rc.2",
26
- "react-leaflet-draw": "^0.20.4",
23
+ "react": "^19.2.1",
24
+ "react-dom": "^19.2.1",
25
+ "react-leaflet": "^5.0.0",
26
+ "react-leaflet-draw": "0.20.3",
27
27
  "react-scripts": "^5.0.1"
28
28
  },
29
29
  "codependencies": {