@pisell/private-materials 6.11.115 → 6.11.117

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.
Files changed (129) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/meta.js +1 -1
  5. package/build/lowcode/render/default/view.js +1 -1
  6. package/build/lowcode/view.js +1 -1
  7. package/es/components/appointmentBooking/components/TimeSlicing/components/SelectDateOS.d.ts +0 -1
  8. package/es/components/booking/hooks/useClearCart.d.ts +0 -1
  9. package/es/components/booking/info/notes/index.d.ts +0 -1
  10. package/es/components/ecocup/components/AddCustomerModal/index.d.ts +1 -0
  11. package/es/components/ecocup/components/CupActionList/index.d.ts +1 -0
  12. package/es/components/ecocup/components/CupActionModal/index.d.ts +1 -0
  13. package/es/components/ecocup/components/CupInfoCard/index.d.ts +1 -0
  14. package/es/components/ecocup/components/CupStatusModal/index.d.ts +1 -0
  15. package/es/components/ecocup/components/CustomerAndCupModal/index.d.ts +1 -0
  16. package/es/components/ecocup/components/CustomerCard/index.d.ts +1 -0
  17. package/es/components/ecocup/components/MoreDropdown/index.d.ts +1 -0
  18. package/es/components/ecocup/components/SearchBar/index.d.ts +1 -0
  19. package/es/components/ecocup/components/SettingModal/index.d.ts +1 -0
  20. package/es/components/ecocup/cupList/hooks/useColumns.d.ts +1 -0
  21. package/es/components/ecocup/cupList/hooks/useSummary.d.ts +1 -0
  22. package/es/components/eftpos/hooks.d.ts +1 -0
  23. package/es/components/eftpos/index.d.ts +1 -0
  24. package/es/components/eftposPay/component/fail/network.d.ts +0 -1
  25. package/es/components/eftposPay/component/fail/unknow.d.ts +0 -1
  26. package/es/components/eftposPay/component/signature/index.d.ts +0 -1
  27. package/es/components/eftposPay/store/index.d.ts +1 -1
  28. package/es/components/eftposPay/tip.d.ts +0 -1
  29. package/es/components/eftposPay/windcave/receiptAction.d.ts +0 -1
  30. package/es/components/shoppingCart/hooks/useClearCart.d.ts +0 -1
  31. package/es/plus/clinetSearch/Add/BirthdayField/index.d.ts +1 -0
  32. package/es/plus/clinetSearch/Add/GenderField/index.d.ts +1 -0
  33. package/es/plus/clinetSearch/Add/PhoneField/index.d.ts +1 -0
  34. package/es/plus/orderList/components/HandleActions.d.ts +1 -0
  35. package/es/plus/orderList/components/QuickFilter.d.ts +1 -0
  36. package/es/plus/orderList/components/Reset.d.ts +1 -0
  37. package/es/plus/orderList/components/Toolbar.d.ts +1 -0
  38. package/es/plus/pisellReservation/PisellReservation.js +369 -41
  39. package/es/plus/pisellReservation/components/PisellReservationSubcomponents.d.ts +7 -6
  40. package/es/plus/pisellReservation/components/PisellReservationSubcomponents.js +25 -12
  41. package/es/plus/pisellReservation/components/ReservationResourceWallResourceSelect.d.ts +14 -0
  42. package/es/plus/pisellReservation/components/ReservationResourceWallResourceSelect.js +30 -0
  43. package/es/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +5 -5
  44. package/es/plus/pisellReservation/data/bookingToReservationTables.d.ts +4 -0
  45. package/es/plus/pisellReservation/data/bookingToReservationTables.js +12 -4
  46. package/es/plus/pisellReservation/data/mapReservationToVenueWallCards.d.ts +6 -0
  47. package/es/plus/pisellReservation/data/mapReservationToVenueWallCards.js +171 -0
  48. package/es/plus/pisellReservation/data/reservationDataUtils.js +1 -1
  49. package/es/plus/pisellReservation/floorMap/reservationMock.js +160 -0
  50. package/es/plus/pisellReservation/floorRoomCard/buildCardBodyViewModel.js +4 -4
  51. package/es/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.d.ts +18 -0
  52. package/es/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.js +44 -0
  53. package/es/plus/pisellReservation/hooks/useReservationScheduleDebounced.d.ts +3 -3
  54. package/es/plus/pisellReservation/locales/locales-ja.d.ts +5 -0
  55. package/es/plus/pisellReservation/locales/locales-ja.js +5 -0
  56. package/es/plus/pisellReservation/locales/locales-pt.d.ts +5 -0
  57. package/es/plus/pisellReservation/locales/locales-pt.js +5 -0
  58. package/es/plus/pisellReservation/locales/locales.d.ts +17 -0
  59. package/es/plus/pisellReservation/locales/locales.js +7 -0
  60. package/es/plus/pisellReservation/reservationConstants.d.ts +23 -5
  61. package/es/plus/pisellReservation/reservationConstants.js +7 -0
  62. package/es/plus/pisellReservation/types.d.ts +4 -0
  63. package/es/plus/saasAttendance/settings/components/membersField/index.d.ts +1 -0
  64. package/es/plus/skuOptionsSelection/components/OptionsCard/index.d.ts +1 -0
  65. package/es/plus/walletPassGallery/components/timelineSection/index.d.ts +1 -0
  66. package/es/pro/Selector/demo.d.ts +1 -0
  67. package/es/pro/pisellPhoneKeyboard/index.d.ts +1 -0
  68. package/lib/components/appointmentBooking/components/TimeSlicing/components/SelectDateOS.d.ts +0 -1
  69. package/lib/components/booking/hooks/useClearCart.d.ts +0 -1
  70. package/lib/components/booking/info/notes/index.d.ts +0 -1
  71. package/lib/components/ecocup/components/AddCustomerModal/index.d.ts +1 -0
  72. package/lib/components/ecocup/components/CupActionList/index.d.ts +1 -0
  73. package/lib/components/ecocup/components/CupActionModal/index.d.ts +1 -0
  74. package/lib/components/ecocup/components/CupInfoCard/index.d.ts +1 -0
  75. package/lib/components/ecocup/components/CupStatusModal/index.d.ts +1 -0
  76. package/lib/components/ecocup/components/CustomerAndCupModal/index.d.ts +1 -0
  77. package/lib/components/ecocup/components/CustomerCard/index.d.ts +1 -0
  78. package/lib/components/ecocup/components/MoreDropdown/index.d.ts +1 -0
  79. package/lib/components/ecocup/components/SearchBar/index.d.ts +1 -0
  80. package/lib/components/ecocup/components/SettingModal/index.d.ts +1 -0
  81. package/lib/components/ecocup/cupList/hooks/useColumns.d.ts +1 -0
  82. package/lib/components/ecocup/cupList/hooks/useSummary.d.ts +1 -0
  83. package/lib/components/eftpos/hooks.d.ts +1 -0
  84. package/lib/components/eftpos/index.d.ts +1 -0
  85. package/lib/components/eftposPay/component/fail/network.d.ts +0 -1
  86. package/lib/components/eftposPay/component/fail/unknow.d.ts +0 -1
  87. package/lib/components/eftposPay/component/signature/index.d.ts +0 -1
  88. package/lib/components/eftposPay/store/index.d.ts +1 -1
  89. package/lib/components/eftposPay/tip.d.ts +0 -1
  90. package/lib/components/eftposPay/windcave/receiptAction.d.ts +0 -1
  91. package/lib/components/shoppingCart/hooks/useClearCart.d.ts +0 -1
  92. package/lib/plus/clinetSearch/Add/BirthdayField/index.d.ts +1 -0
  93. package/lib/plus/clinetSearch/Add/GenderField/index.d.ts +1 -0
  94. package/lib/plus/clinetSearch/Add/PhoneField/index.d.ts +1 -0
  95. package/lib/plus/orderList/components/HandleActions.d.ts +1 -0
  96. package/lib/plus/orderList/components/QuickFilter.d.ts +1 -0
  97. package/lib/plus/orderList/components/Reset.d.ts +1 -0
  98. package/lib/plus/orderList/components/Toolbar.d.ts +1 -0
  99. package/lib/plus/pisellReservation/PisellReservation.js +312 -12
  100. package/lib/plus/pisellReservation/components/PisellReservationSubcomponents.d.ts +7 -6
  101. package/lib/plus/pisellReservation/components/PisellReservationSubcomponents.js +18 -5
  102. package/lib/plus/pisellReservation/components/ReservationResourceWallResourceSelect.d.ts +14 -0
  103. package/lib/plus/pisellReservation/components/ReservationResourceWallResourceSelect.js +60 -0
  104. package/lib/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +1 -1
  105. package/lib/plus/pisellReservation/data/bookingToReservationTables.d.ts +4 -0
  106. package/lib/plus/pisellReservation/data/bookingToReservationTables.js +16 -9
  107. package/lib/plus/pisellReservation/data/mapReservationToVenueWallCards.d.ts +6 -0
  108. package/lib/plus/pisellReservation/data/mapReservationToVenueWallCards.js +160 -0
  109. package/lib/plus/pisellReservation/data/reservationDataUtils.js +2 -1
  110. package/lib/plus/pisellReservation/floorMap/reservationMock.js +151 -0
  111. package/lib/plus/pisellReservation/floorRoomCard/buildCardBodyViewModel.js +5 -2
  112. package/lib/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.d.ts +18 -0
  113. package/lib/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.js +40 -0
  114. package/lib/plus/pisellReservation/hooks/useReservationScheduleDebounced.d.ts +3 -3
  115. package/lib/plus/pisellReservation/locales/locales-ja.d.ts +5 -0
  116. package/lib/plus/pisellReservation/locales/locales-ja.js +5 -0
  117. package/lib/plus/pisellReservation/locales/locales-pt.d.ts +5 -0
  118. package/lib/plus/pisellReservation/locales/locales-pt.js +5 -0
  119. package/lib/plus/pisellReservation/locales/locales.d.ts +17 -0
  120. package/lib/plus/pisellReservation/locales/locales.js +7 -0
  121. package/lib/plus/pisellReservation/reservationConstants.d.ts +23 -5
  122. package/lib/plus/pisellReservation/reservationConstants.js +12 -0
  123. package/lib/plus/pisellReservation/types.d.ts +4 -0
  124. package/lib/plus/saasAttendance/settings/components/membersField/index.d.ts +1 -0
  125. package/lib/plus/skuOptionsSelection/components/OptionsCard/index.d.ts +1 -0
  126. package/lib/plus/walletPassGallery/components/timelineSection/index.d.ts +1 -0
  127. package/lib/pro/Selector/demo.d.ts +1 -0
  128. package/lib/pro/pisellPhoneKeyboard/index.d.ts +1 -0
  129. package/package.json +4 -4
@@ -1,8 +1,6 @@
1
1
  var _excluded = ["gridDataSourceKey", "dataSources", "scheduleValue", "onScheduleChange", "toolBar", "floorMap", "scheduleStartSlot", "scheduleEndSlot", "onNewReservation", "timeNavigatorProps", "scheduleProps", "fab", "defaultBodyView", "data", "total", "pagination", "onPageChange", "onSearch", "onReset", "searchParams", "loading", "rowKey", "className", "style", "floorPlanId", "floorPlanCanvasWidth", "floorPlanCanvasHeight", "floorPlanCode", "floorPlanName", "floorPlanSort", "floorPlanStatus", "onFloorPlanPersisted", "putFloorPlan", "onFloorMapBookingClick", "bodyViewSwitchable", "lockedBodyView", "bodyViewStorageKey", "floorMapHudTableDrawer"],
2
2
  _excluded2 = ["tabs", "topRight", "bottomLeft"];
3
3
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
6
4
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
7
5
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
6
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -10,6 +8,8 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
10
8
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
11
9
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
12
10
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
11
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
12
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
13
13
  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; }
14
14
  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; }
15
15
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -33,7 +33,7 @@ import { message } from 'antd';
33
33
  import { LocalizationProvider } from '@pisell/date-picker';
34
34
  import { AdapterDayjs } from '@pisell/date-picker/es/AdapterDayjs';
35
35
  import { locales } from '@pisell/utils';
36
- import { PisellModal, PisellRecordBoard, Icon } from '@pisell/materials';
36
+ import { PisellModal, PisellRecordBoard, Icon, DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY } from '@pisell/materials';
37
37
  import useEngineContext, { usePisellOS } from "../../hooks/useEngineContext";
38
38
  import { ReservationBookingDetailModal } from "./components/bookingDetailModal/ReservationBookingDetailModal";
39
39
  import { PISELL_RESERVATION_FLOOR_PLAN_CODE, RESERVATION_DEFAULT_FLOOR_PLAN_ID } from "./floorMap/floorPlanApi";
@@ -51,6 +51,7 @@ import { computeReservationDensityBuckets, fitTimelineHighlightsToSlotCount, res
51
51
  import { filterBookingsByResourceIds } from "./data/bookingToReservationTables";
52
52
  import { applyHudDrawerLocalListQuery, cloneHudDrawerSearchParams, mergeHudDrawerSearchParams, stripHudDrawerBookingDateQuickFilter } from "./data/hudDrawerLocalListQuery";
53
53
  import { buildReservationMergedTableRows } from "./data/reservationTablesMerge";
54
+ import { formResourceListToReservationTableRows } from "./data/formResourceToReservationTables";
54
55
  import { extractResourceRecordIds } from "./data/bookingToReservationTables";
55
56
  import { buildCalendarResourcesFromMergedTables, findMergedTableRowForBookingRaw, mapFloorDayBookingsToCalendarItems, orderedCanvasResourceRecordIdStrings } from "./data/calendarAdapter";
56
57
  import { mergeGridBookingSearchParams, mergeSearchParamsBookingWindow, mergeSearchParamsBookingRange, readBodyViewFromStorageKey, shouldUseBuiltinReservationList } from "./data/reservationDataUtils";
@@ -59,7 +60,9 @@ import { RecordBoardBodyViewCapture, ReservationDefaultScheduleStart, Reservatio
59
60
  import { useReservationFloorPlan } from "./floorMap/useReservationFloorPlan";
60
61
  import { useReservationFloorMapMerged } from "./floorMap/useReservationFloorMapMerged";
61
62
  import { ReservationCalendarDayBookingRoomCard } from "./components/ReservationCalendarDayBookingRoomCard";
62
- import { GRID_DS_KEY, PISELL_RESERVATION_HUD_DRAWER_COLUMN_STORAGE_KEY, PISELL_RESERVATION_HUD_LOCAL_PAGE_SIZE, I18N_CALENDAR_WRITE_NOT_AVAILABLE, I18N_HUD_TABLE_DRAWER_TITLE, I18N_NEW_MODAL_PLACEHOLDER, I18N_NEW_MODAL_TITLE, PISELL_RESERVATION_PAGE_LOCALES } from "./reservationConstants";
63
+ import { GRID_DS_KEY, PISELL_RESERVATION_HUD_DRAWER_COLUMN_STORAGE_KEY, PISELL_RESERVATION_HUD_LOCAL_PAGE_SIZE, I18N_CALENDAR_WRITE_NOT_AVAILABLE, I18N_HUD_TABLE_DRAWER_TITLE, I18N_NEW_MODAL_PLACEHOLDER, I18N_NEW_MODAL_TITLE, PISELL_RESERVATION_PAGE_LOCALES, PISELL_RESERVATION_RESOURCE_WALL_FILTER_STORAGE_PREFIX, I18N_RESOURCE_WALL_RESOURCES, RESERVATION_RESOURCE_WALL_MAX_RESOURCE_SELECTION } from "./reservationConstants";
64
+ import { mapReservationRowsToVenueWallCards } from "./data/mapReservationToVenueWallCards";
65
+ import { ReservationResourceWallResourceSelect } from "./components/ReservationResourceWallResourceSelect";
63
66
  import { timelineRangeFromOperatingDayBoundary } from "./data/reservationOperatingDayRange";
64
67
  import { useReservationScheduleDebounced } from "./hooks/useReservationScheduleDebounced";
65
68
  import { useReservationSalesHostData } from "./hooks/useReservationSalesHostData";
@@ -225,6 +228,14 @@ export var PisellReservationCore = function PisellReservationCore(props) {
225
228
  */
226
229
  subscribeRealtimePush: true
227
230
  });
231
+
232
+ /** 与 RecordBoard 当前子视图同步,用于资源墙下按所选资源切换 floorDayBooking 的 form_record_ids */
233
+ var _useState11 = useState(function () {
234
+ return readBodyViewFromStorageKey(bodyViewStorageKey);
235
+ }),
236
+ _useState12 = _slicedToArray(_useState11, 2),
237
+ shellBodyView = _useState12[0],
238
+ setShellBodyView = _useState12[1];
228
239
  var _useReservationFloorP = useReservationFloorPlan({
229
240
  resolvedFloorPlanId: resolvedFloorPlanId,
230
241
  effectiveFloorPlanCode: effectiveFloorPlanCode,
@@ -256,13 +267,54 @@ export var PisellReservationCore = function PisellReservationCore(props) {
256
267
  return sceneElementsToBoundFormRecordIds(floorConfigForBindings.sceneElements, gridDataSourceKey);
257
268
  }, [floorConfigForBindings.sceneElements, gridDataSourceKey]);
258
269
 
259
- /** 平面图合并 / 折线 / 密度:仅画布已绑定桌的 form_record_ids;表格仍用 gridBookingData */
270
+ /** 资源墙筛选里选中的资源 id(与 grid searchParams.filter 同源) */
271
+ var resourceWallFilterIdsForFloorBooking = useMemo(function () {
272
+ if (!isInternalListData) return [];
273
+ var sp = gridBookingData.searchParams;
274
+ var fv = sp === null || sp === void 0 ? void 0 : sp.filter;
275
+ if (!fv || _typeof(fv) !== 'object' || fv === null) return [];
276
+ var vals = fv.values;
277
+ if (!vals || _typeof(vals) !== 'object') return [];
278
+ var raw = vals[DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY];
279
+ if (!Array.isArray(raw)) return [];
280
+ return raw.map(String).filter(Boolean);
281
+ }, [isInternalListData, gridBookingData.searchParams]);
282
+
283
+ /** 平面图:画布绑定 id;资源墙:所选资源 id(与画布一致走同一套 booking 推送 + mutate) */
260
284
  var floorBookingResourceReady = isInternalListData && !resourceBoardData.loading;
261
285
  var floorBookingExtraParams = useMemo(function () {
286
+ var normalizeIds = function normalizeIds(ids) {
287
+ var out = [];
288
+ var _iterator = _createForOfIteratorHelper(ids),
289
+ _step;
290
+ try {
291
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
292
+ var id = _step.value;
293
+ var t = String(id).trim();
294
+ if (!t) continue;
295
+ var n = Number(t);
296
+ if (Number.isFinite(n) && n > 0 && /^\d+$/.test(t)) {
297
+ out.push(Math.trunc(n));
298
+ } else {
299
+ out.push(t);
300
+ }
301
+ }
302
+ } catch (err) {
303
+ _iterator.e(err);
304
+ } finally {
305
+ _iterator.f();
306
+ }
307
+ return out;
308
+ };
309
+ if (shellBodyView === 'resourceWall' && resourceWallFilterIdsForFloorBooking.length > 0) {
310
+ return {
311
+ form_record_ids: normalizeIds(resourceWallFilterIdsForFloorBooking)
312
+ };
313
+ }
262
314
  return {
263
315
  form_record_ids: floorBoundFormRecordIds
264
316
  };
265
- }, [floorBoundFormRecordIds]);
317
+ }, [shellBodyView, resourceWallFilterIdsForFloorBooking, floorBoundFormRecordIds]);
266
318
  var floorDayBookingData = usePisellReservationBookingData(floorBookingResourceReady, {
267
319
  listPageSize: 999,
268
320
  extraRequestParams: floorBookingExtraParams
@@ -336,6 +388,29 @@ export var PisellReservationCore = function PisellReservationCore(props) {
336
388
  salesResourceBookings = _useReservationSalesH.salesResourceBookings,
337
389
  salesTimelineHighlights = _useReservationSalesH.salesTimelineHighlights;
338
390
 
391
+ /** 调试:宿主 `sales.getResourceBookingList` 规范化后的列表(可能为 null) */
392
+ useEffect(function () {
393
+ if (!isInternalListData) return;
394
+ var raw = salesResourceBookings;
395
+ if (raw == null) {
396
+ // eslint-disable-next-line no-console -- 调试 salesResourceBookings
397
+ console.log('[PisellReservation] salesResourceBookings', null);
398
+ return;
399
+ }
400
+ if (!Array.isArray(raw)) {
401
+ // eslint-disable-next-line no-console -- 调试 salesResourceBookings
402
+ console.log('[PisellReservation] salesResourceBookings (non-array)', raw);
403
+ return;
404
+ }
405
+ var head = raw.slice(0, 3);
406
+ // eslint-disable-next-line no-console -- 调试 salesResourceBookings
407
+ console.log('[PisellReservation] salesResourceBookings', {
408
+ length: raw.length,
409
+ head: head,
410
+ full: raw
411
+ });
412
+ }, [isInternalListData, salesResourceBookings]);
413
+
339
414
  /** 合并资源行 + 当日预约列表(接口已按画布 form_record_ids + 营业日窗约束,不按顶栏 at 游标筛) */
340
415
  var tables = useMemo(function () {
341
416
  return buildReservationMergedTableRows({
@@ -350,6 +425,43 @@ export var PisellReservationCore = function PisellReservationCore(props) {
350
425
  });
351
426
  }, [dataSourcesProp, gridDataSourceKey, isInternalListData, resourceBoardData.data, floorDayBookingData.data, salesResourceBookings, dataProp]);
352
427
 
428
+ /**
429
+ * 资源墙「选资源」下拉:**全量资源**(内置列表 = GET form/resource/page),
430
+ * 与日历列「画布顺序 resource ids」解耦;非内置时回退为合并 `tables` 全行。
431
+ */
432
+ var resourceWallFilterSelectOptions = useMemo(function () {
433
+ if (isInternalListData && Array.isArray(resourceBoardData.data) && resourceBoardData.data.length > 0) {
434
+ return formResourceListToReservationTableRows(resourceBoardData.data).map(function (r) {
435
+ return {
436
+ label: r.code || r.main_field || String(r.id),
437
+ value: String(r.id)
438
+ };
439
+ });
440
+ }
441
+ var seen = new Set();
442
+ var out = [];
443
+ var _iterator2 = _createForOfIteratorHelper(tables),
444
+ _step2;
445
+ try {
446
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
447
+ var row = _step2.value;
448
+ var id = String(row.id);
449
+ if (!id || id === 'undefined' || id === 'null') continue;
450
+ if (seen.has(id)) continue;
451
+ seen.add(id);
452
+ out.push({
453
+ label: row.code || row.main_field || id,
454
+ value: id
455
+ });
456
+ }
457
+ } catch (err) {
458
+ _iterator2.e(err);
459
+ } finally {
460
+ _iterator2.f();
461
+ }
462
+ return out;
463
+ }, [isInternalListData, resourceBoardData.data, tables]);
464
+
353
465
  /**
354
466
  * 日历列顺序:优先 sceneElements 绑定 id;若无(漏写 dataSourceKey、与 tables key 不一致等),
355
467
  * 回退到合并 tables 行 id,再回退到 floorDayBooking 中出现的 relation_id,避免画布有预约但日历全空。
@@ -366,29 +478,29 @@ export var PisellReservationCore = function PisellReservationCore(props) {
366
478
  var fromBookings = new Set();
367
479
  var list = floorDayBookingData.data;
368
480
  if (Array.isArray(list)) {
369
- var _iterator = _createForOfIteratorHelper(list),
370
- _step;
481
+ var _iterator3 = _createForOfIteratorHelper(list),
482
+ _step3;
371
483
  try {
372
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
373
- var raw = _step.value;
484
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
485
+ var raw = _step3.value;
374
486
  if (!raw || _typeof(raw) !== 'object') continue;
375
- var _iterator2 = _createForOfIteratorHelper(extractResourceRecordIds(raw)),
376
- _step2;
487
+ var _iterator4 = _createForOfIteratorHelper(extractResourceRecordIds(raw)),
488
+ _step4;
377
489
  try {
378
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
379
- var id = _step2.value;
490
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
491
+ var id = _step4.value;
380
492
  if (id) fromBookings.add(id);
381
493
  }
382
494
  } catch (err) {
383
- _iterator2.e(err);
495
+ _iterator4.e(err);
384
496
  } finally {
385
- _iterator2.f();
497
+ _iterator4.f();
386
498
  }
387
499
  }
388
500
  } catch (err) {
389
- _iterator.e(err);
501
+ _iterator3.e(err);
390
502
  } finally {
391
- _iterator.f();
503
+ _iterator3.f();
392
504
  }
393
505
  }
394
506
  return _toConsumableArray(fromBookings);
@@ -409,6 +521,100 @@ export var PisellReservationCore = function PisellReservationCore(props) {
409
521
  });
410
522
  }, [floorDayBookingData.data, calendarCanvasIdSet]);
411
523
 
524
+ /** 调试:当前为日历视图时,打印传入 RecordBoard 日历槽位的 resources / bookings 等 */
525
+ useEffect(function () {
526
+ if (shellBodyView !== 'calendar') return;
527
+ var summarizeBooking = function summarizeBooking(b) {
528
+ return {
529
+ id: b.id,
530
+ courtId: b.courtId,
531
+ date: b.date,
532
+ startHour: b.startHour,
533
+ endHour: b.endHour,
534
+ name: b.name,
535
+ kind: b.kind
536
+ };
537
+ };
538
+ var summarizeResource = function summarizeResource(r) {
539
+ return {
540
+ id: r.id,
541
+ name: r.name,
542
+ groupType: r.groupType
543
+ };
544
+ };
545
+ // eslint-disable-next-line no-console -- 调试日历视图数据
546
+ console.log('[PisellReservation] calendar 展示数据', {
547
+ shellBodyView: shellBodyView,
548
+ calendarGranularity: calendarGranularity,
549
+ anchorDate: schedule.date.toISOString(),
550
+ scheduleAt: dayjs(schedule.at).isValid() ? dayjs(schedule.at).toISOString() : String(schedule.at),
551
+ timelineRange: effectiveTimelineRange,
552
+ floorDayBookingLoading: floorDayBookingData.loading,
553
+ floorDayBookingCount: Array.isArray(floorDayBookingData.data) ? floorDayBookingData.data.length : 0,
554
+ calendarOrderedResourceIds: calendarOrderedResourceIds,
555
+ resourcesCount: calendarResources.length,
556
+ resourcesPreview: calendarResources.slice(0, 12).map(summarizeResource),
557
+ bookingsCount: calendarBookings.length,
558
+ bookingsPreview: calendarBookings.slice(0, 12).map(summarizeBooking),
559
+ resourcesFull: calendarResources,
560
+ bookingsFull: calendarBookings
561
+ });
562
+ }, [shellBodyView, calendarGranularity, schedule.date, schedule.at, effectiveTimelineRange, floorDayBookingData.loading, floorDayBookingData.data, calendarOrderedResourceIds, calendarResources, calendarBookings]);
563
+ var venueWallCards = useMemo(function () {
564
+ return mapReservationRowsToVenueWallCards(tables);
565
+ }, [tables]);
566
+
567
+ /** 调试:当前为资源墙视图时,打印与 PisellRecordBoardResourceWallView 一致的展示数据(含可见卡片交集) */
568
+ useEffect(function () {
569
+ if (shellBodyView !== 'resourceWall') return;
570
+ var filterKey = DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY;
571
+ var sp = searchParams;
572
+ var fv = sp === null || sp === void 0 ? void 0 : sp.filter;
573
+ var vals = fv && _typeof(fv) === 'object' && fv !== null && _typeof(fv.values) === 'object' && fv.values !== null ? fv.values : {};
574
+ var selectedRaw = vals[filterKey];
575
+ var selectedIds = Array.isArray(selectedRaw) ? selectedRaw.map(function (x) {
576
+ return String(x);
577
+ }) : null;
578
+ var allCards = venueWallCards;
579
+ var visibleCards = selectedIds == null || selectedIds.length === 0 ? allCards : function () {
580
+ var set = new Set(selectedIds);
581
+ return allCards.filter(function (c) {
582
+ return set.has(String(c.resourceId));
583
+ });
584
+ }();
585
+ var summarize = function summarize(c) {
586
+ var _c$nextList;
587
+ return {
588
+ resourceId: c.resourceId,
589
+ resource: c.resource,
590
+ area: c.area,
591
+ status: c.status,
592
+ currentTime: c.currentTime,
593
+ currentBooking: c.currentBooking,
594
+ startsInMin: c.startsInMin,
595
+ lateMin: c.lateMin,
596
+ remainingMin: c.remainingMin,
597
+ nextListHead: (_c$nextList = c.nextList) === null || _c$nextList === void 0 ? void 0 : _c$nextList.slice(0, 2)
598
+ };
599
+ };
600
+ // eslint-disable-next-line no-console -- 调试资源墙展示数据
601
+ console.log('[PisellReservation] resourceWall 展示数据', {
602
+ shellBodyView: shellBodyView,
603
+ filterFieldKey: filterKey,
604
+ searchParamsFilterValues: vals,
605
+ selectedIds: selectedIds,
606
+ floorDayBookingLoading: floorDayBookingData.loading,
607
+ floorBookingExtraParams: floorBookingExtraParams,
608
+ cardsCount: allCards.length,
609
+ visibleCount: visibleCards.length,
610
+ cardsPreview: allCards.slice(0, 8).map(summarize),
611
+ visiblePreview: visibleCards.slice(0, 8).map(summarize),
612
+ cardsFull: allCards,
613
+ visibleFull: visibleCards
614
+ });
615
+ }, [shellBodyView, venueWallCards, floorDayBookingData.loading, searchParams, floorBookingExtraParams]);
616
+ var resourceWallFilterStorageKey = "".concat(PISELL_RESERVATION_RESOURCE_WALL_FILTER_STORAGE_PREFIX, ":").concat(bodyViewStorageKey !== null && bodyViewStorageKey !== void 0 ? bodyViewStorageKey : 'default');
617
+
412
618
  /** 顶栏日程防抖落定后的时间键,避免 dayjs 引用抖动 */
413
619
  var debouncedScheduleKey = useMemo(function () {
414
620
  return "".concat(dayjs(debouncedSchedule.date).startOf('day').valueOf(), "_").concat(dayjs(debouncedSchedule.at).valueOf());
@@ -437,26 +643,27 @@ export var PisellReservationCore = function PisellReservationCore(props) {
437
643
  // --- RecordBoard 视图:grid / floorMap;新建预约路由 ---
438
644
 
439
645
  var bodyViewRef = useRef(readBodyViewFromStorageKey(bodyViewStorageKey));
646
+ var resourceWallFilterHydratedRef = useRef(false);
440
647
  var floorMapLayoutRef = useRef(null);
441
- var _useState11 = useState(true),
442
- _useState12 = _slicedToArray(_useState11, 2),
443
- followWallClock = _useState12[0],
444
- setFollowWallClock = _useState12[1];
445
- /** 日历视图与顶栏日程条、右侧 Segmented 共用的日/周/月粒度 */
446
- var _useState13 = useState('week'),
648
+ var _useState13 = useState(true),
447
649
  _useState14 = _slicedToArray(_useState13, 2),
448
- calendarGranularity = _useState14[0],
449
- setCalendarGranularity = _useState14[1];
650
+ followWallClock = _useState14[0],
651
+ setFollowWallClock = _useState14[1];
652
+ /** 日历视图与顶栏日程条、右侧 Segmented 共用的日/周/月粒度 */
653
+ var _useState15 = useState('week'),
654
+ _useState16 = _slicedToArray(_useState15, 2),
655
+ calendarGranularity = _useState16[0],
656
+ setCalendarGranularity = _useState16[1];
450
657
  /** 日历 key 首载缓存:同一 key 二次进入不再展示 loading(后台静默刷新) */
451
658
  var calendarLoadedKeySetRef = useRef(new Set());
452
659
  /** 当前一次 floorDay 请求所对应的日历 key */
453
660
  var calendarInflightKeyRef = useRef(null);
454
661
  /** 追踪 loading 边沿,识别请求开始/结束 */
455
662
  var prevFloorDayLoadingRef = useRef(false);
456
- var _useState15 = useState(false),
457
- _useState16 = _slicedToArray(_useState15, 2),
458
- isNewReservationModalOpen = _useState16[0],
459
- setIsNewReservationModalOpen = _useState16[1];
663
+ var _useState17 = useState(false),
664
+ _useState18 = _slicedToArray(_useState17, 2),
665
+ isNewReservationModalOpen = _useState18[0],
666
+ setIsNewReservationModalOpen = _useState18[1];
460
667
  var newReservationRoutes = useNewReservationRoutesFromEngine(router);
461
668
  var searchParamsRefControlled = useRef(searchParamsProp);
462
669
  useEffect(function () {
@@ -491,7 +698,7 @@ export var PisellReservationCore = function PisellReservationCore(props) {
491
698
  }
492
699
  prevCommittedDateRef.current = d;
493
700
  }
494
- if ((bodyViewRef.current === 'floorMap' || bodyViewRef.current === 'calendar') && !isInternalListData) {
701
+ if ((bodyViewRef.current === 'floorMap' || bodyViewRef.current === 'calendar' || bodyViewRef.current === 'resourceWall') && !isInternalListData) {
495
702
  var _onSearchRef$current, _searchParamsRefContr;
496
703
  (_onSearchRef$current = onSearchRef.current) === null || _onSearchRef$current === void 0 || _onSearchRef$current.call(onSearchRef, _objectSpread(_objectSpread({}, (_searchParamsRefContr = searchParamsRefControlled.current) !== null && _searchParamsRefContr !== void 0 ? _searchParamsRefContr : {}), {}, {
497
704
  reservationDate: debouncedSchedule.date.toISOString(),
@@ -661,10 +868,10 @@ export var PisellReservationCore = function PisellReservationCore(props) {
661
868
  });
662
869
  }, [floorMapHudTableDrawer]);
663
870
  var isFloorModeControlled = (floorMapProp === null || floorMapProp === void 0 ? void 0 : floorMapProp.mode) !== undefined;
664
- var _useState17 = useState(false),
665
- _useState18 = _slicedToArray(_useState17, 2),
666
- mapEditInternal = _useState18[0],
667
- setMapEditInternal = _useState18[1];
871
+ var _useState19 = useState(false),
872
+ _useState20 = _slicedToArray(_useState19, 2),
873
+ mapEditInternal = _useState20[0],
874
+ setMapEditInternal = _useState20[1];
668
875
  var effectiveMapMode = (_floorMapProp$mode = floorMapProp === null || floorMapProp === void 0 ? void 0 : floorMapProp.mode) !== null && _floorMapProp$mode !== void 0 ? _floorMapProp$mode : mapEditInternal ? 'edit' : 'read';
669
876
  var _useFloorMapBookingIn = useFloorMapBookingInteraction({
670
877
  engineCtx: engineCtx,
@@ -748,6 +955,65 @@ export var PisellReservationCore = function PisellReservationCore(props) {
748
955
  var onSearch = isInternalListData ? onGridBookingSearch : onSearchProp;
749
956
  var onReset = isInternalListData ? gridBookingData.onReset : onResetProp;
750
957
 
958
+ /** 大屏资源多选:首次写入默认全选 / localStorage 恢复,并持久化变更(不上传独立接口) */
959
+ useEffect(function () {
960
+ if (!isInternalListData) return;
961
+ if (resourceWallFilterHydratedRef.current) return;
962
+ if (calendarOrderedResourceIds.length === 0) return;
963
+ var fv = searchParams === null || searchParams === void 0 ? void 0 : searchParams.filter;
964
+ var values = fv && _typeof(fv) === 'object' && fv !== null && _typeof(fv.values) === 'object' && fv.values !== null ? fv.values : {};
965
+ var maxRw = RESERVATION_RESOURCE_WALL_MAX_RESOURCE_SELECTION;
966
+ var existing = values.resource_wall_resource_ids;
967
+ if (Array.isArray(existing) && existing.length > 0) {
968
+ if (existing.length > maxRw && onSearch) {
969
+ onSearch(_objectSpread(_objectSpread({}, searchParams), {}, {
970
+ filter: _objectSpread(_objectSpread({}, _typeof(searchParams.filter) === 'object' && searchParams.filter !== null ? searchParams.filter : {}), {}, {
971
+ values: _objectSpread(_objectSpread({}, _typeof(values) === 'object' ? values : {}), {}, {
972
+ resource_wall_resource_ids: existing.slice(0, maxRw).map(String)
973
+ })
974
+ })
975
+ }));
976
+ }
977
+ resourceWallFilterHydratedRef.current = true;
978
+ return;
979
+ }
980
+ var stored;
981
+ try {
982
+ var raw = localStorage.getItem(resourceWallFilterStorageKey);
983
+ if (raw) stored = JSON.parse(raw);
984
+ } catch (_unused2) {
985
+ /* ignore */
986
+ }
987
+ var all = calendarOrderedResourceIds;
988
+ var storedIds = Array.isArray(stored) && stored.length > 0 ? stored : [];
989
+ var picked = storedIds.length > 0 ? all.filter(function (id) {
990
+ return storedIds.includes(id);
991
+ }).slice(0, maxRw) : all.slice(0, maxRw);
992
+ var finalList = picked.length > 0 ? picked : all.slice(0, maxRw);
993
+ resourceWallFilterHydratedRef.current = true;
994
+ if (!onSearch) return;
995
+ onSearch(_objectSpread(_objectSpread({}, searchParams), {}, {
996
+ filter: _objectSpread(_objectSpread({}, _typeof(searchParams.filter) === 'object' && searchParams.filter !== null ? searchParams.filter : {}), {}, {
997
+ values: _objectSpread(_objectSpread({}, _typeof(values) === 'object' ? values : {}), {}, {
998
+ resource_wall_resource_ids: finalList
999
+ })
1000
+ })
1001
+ }));
1002
+ }, [isInternalListData, calendarOrderedResourceIds, resourceWallFilterStorageKey, onSearch, searchParams]);
1003
+ useEffect(function () {
1004
+ var fv = searchParams === null || searchParams === void 0 ? void 0 : searchParams.filter;
1005
+ if (!fv || _typeof(fv) !== 'object' || fv === null || _typeof(fv.values) !== 'object' || fv.values === null) {
1006
+ return;
1007
+ }
1008
+ var rid = fv.values.resource_wall_resource_ids;
1009
+ if (!Array.isArray(rid)) return;
1010
+ try {
1011
+ localStorage.setItem(resourceWallFilterStorageKey, JSON.stringify(rid.map(String)));
1012
+ } catch (_unused3) {
1013
+ /* ignore */
1014
+ }
1015
+ }, [searchParams === null || searchParams === void 0 ? void 0 : searchParams.filter, resourceWallFilterStorageKey]);
1016
+
751
1017
  // --- 新建预约:引擎路由多选弹窗;单路由则直接 push ---
752
1018
 
753
1019
  var handleRouteJump = useMemoizedFn(function (routePath) {
@@ -836,6 +1102,25 @@ export var PisellReservationCore = function PisellReservationCore(props) {
836
1102
  return _ref3.apply(this, arguments);
837
1103
  };
838
1104
  }(), [isInternalListData, floorDayBookingData.data, data, salesTimelineHighlights, effectiveTimelineRange.start, effectiveTimelineRange.end]);
1105
+
1106
+ /** 大屏:仅一项资源多选快筛(options 为全量资源,非画布子集) */
1107
+ var reservationResourceWallQuickFilter = useMemo(function () {
1108
+ return {
1109
+ filterList: [{
1110
+ type: 'custom',
1111
+ key: 'resource_wall_resource_ids',
1112
+ name: 'resource_wall_resource_ids',
1113
+ label: locales.getText(I18N_RESOURCE_WALL_RESOURCES),
1114
+ props: {
1115
+ options: resourceWallFilterSelectOptions
1116
+ },
1117
+ other: {
1118
+ component: ReservationResourceWallResourceSelect
1119
+ }
1120
+ }],
1121
+ hideFilterNamesOnFloorMap: []
1122
+ };
1123
+ }, [resourceWallFilterSelectOptions]);
839
1124
  var toolBarMerged = useMemo(function () {
840
1125
  var _ref4 = toolBarProp !== null && toolBarProp !== void 0 ? toolBarProp : {},
841
1126
  extraTabs = _ref4.tabs,
@@ -843,6 +1128,7 @@ export var PisellReservationCore = function PisellReservationCore(props) {
843
1128
  bottomLeftProp = _ref4.bottomLeft,
844
1129
  restToolbar = _objectWithoutProperties(_ref4, _excluded2);
845
1130
  return _objectSpread(_objectSpread(_objectSpread({}, bookingToolBar !== null && bookingToolBar !== void 0 ? bookingToolBar : {}), restToolbar), {}, {
1131
+ quickFilter: reservationResourceWallQuickFilter,
846
1132
  tabs: /*#__PURE__*/React.createElement(PisellReservationToolbarTabs, {
847
1133
  extraTabs: extraTabs,
848
1134
  schedule: schedule,
@@ -868,7 +1154,7 @@ export var PisellReservationCore = function PisellReservationCore(props) {
868
1154
  }),
869
1155
  bottomLeft: bottomLeftProp !== null && bottomLeftProp !== void 0 ? bottomLeftProp : null
870
1156
  });
871
- }, [bookingToolBar, toolBarProp, schedule, handleScheduleChange, scheduleStartSlotProp, effectiveScheduleEndSlot, followWallClock, timeNavigatorPropsProp, mergedTimeNavigatorProps, schedulePropsProp, loadReservationDensity, calendarGranularity]);
1157
+ }, [bookingToolBar, toolBarProp, schedule, handleScheduleChange, scheduleStartSlotProp, effectiveScheduleEndSlot, followWallClock, timeNavigatorPropsProp, mergedTimeNavigatorProps, schedulePropsProp, loadReservationDensity, calendarGranularity, reservationResourceWallQuickFilter]);
872
1158
 
873
1159
  // --- 渲染:RecordBoard + 新建弹窗 + 平面图预约详情 + FAB ---
874
1160
 
@@ -966,6 +1252,36 @@ export var PisellReservationCore = function PisellReservationCore(props) {
966
1252
  }));
967
1253
  }, [tables]);
968
1254
 
1255
+ /** 日视图「屏蔽」弹窗保存 → `POST /shop/schedule/blocked-time` */
1256
+ var handleBlockedTimeSave = useCallback( /*#__PURE__*/function () {
1257
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(payload) {
1258
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
1259
+ while (1) switch (_context3.prev = _context3.next) {
1260
+ case 0:
1261
+ _context3.prev = 0;
1262
+ _context3.next = 3;
1263
+ return request.getRequest().post('/shop/schedule/blocked-time', payload);
1264
+ case 3:
1265
+ message.success('保存成功');
1266
+ _context3.next = 6;
1267
+ return floorDayBookingData.refreshAsync();
1268
+ case 6:
1269
+ return _context3.abrupt("return", true);
1270
+ case 9:
1271
+ _context3.prev = 9;
1272
+ _context3.t0 = _context3["catch"](0);
1273
+ return _context3.abrupt("return", false);
1274
+ case 12:
1275
+ case "end":
1276
+ return _context3.stop();
1277
+ }
1278
+ }, _callee3, null, [[0, 9]]);
1279
+ }));
1280
+ return function (_x2) {
1281
+ return _ref5.apply(this, arguments);
1282
+ };
1283
+ }(), [floorDayBookingData]);
1284
+
969
1285
  /**
970
1286
  * 日历加载 key:
971
1287
  * - 同一天 + 同粒度 + 同时间锚点二次进入,不重复展示 loading;
@@ -1003,7 +1319,8 @@ export var PisellReservationCore = function PisellReservationCore(props) {
1003
1319
  persistGuard: reservationCalendarPersist,
1004
1320
  resources: calendarResources,
1005
1321
  bookings: calendarBookings,
1006
- loading: calendarLoading,
1322
+ /** 不套全屏 Spin:数据刷新时仍展示上一帧内容,避免切日历闪 loading */
1323
+ loading: false,
1007
1324
  onViewportChange: handleCalendarViewportChange,
1008
1325
  onBookingClick: handleCalendarBookingClick,
1009
1326
  timelineRange: effectiveTimelineRange,
@@ -1012,9 +1329,18 @@ export var PisellReservationCore = function PisellReservationCore(props) {
1012
1329
  anchorDate: schedule.date.toDate(),
1013
1330
  onAnchorDateChange: handleCalendarAnchorChange,
1014
1331
  slotStepMinutes: 30,
1015
- renderBooking: renderReservationCalendarBooking
1332
+ renderBooking: renderReservationCalendarBooking,
1333
+ onBlockedTimeSave: handleBlockedTimeSave,
1334
+ blockedTimeSalesChannels: ['online_store']
1335
+ };
1336
+ }, [reservationCalendarPersist, calendarResources, calendarBookings, handleCalendarViewportChange, handleCalendarBookingClick, calendarGranularity, schedule.date, handleCalendarAnchorChange, effectiveTimelineRange, renderReservationCalendarBooking, handleBlockedTimeSave]);
1337
+ var reservationResourceWallSlotProps = useMemo(function () {
1338
+ return {
1339
+ cards: venueWallCards,
1340
+ loading: floorDayBookingData.loading,
1341
+ filterFieldKey: DEFAULT_RESOURCE_WALL_FILTER_FIELD_KEY
1016
1342
  };
1017
- }, [reservationCalendarPersist, calendarResources, calendarBookings, calendarLoading, handleCalendarViewportChange, handleCalendarBookingClick, calendarGranularity, schedule.date, handleCalendarAnchorChange, effectiveTimelineRange, renderReservationCalendarBooking]);
1343
+ }, [venueWallCards, floorDayBookingData.loading]);
1018
1344
  return /*#__PURE__*/React.createElement(LocalizationProvider, {
1019
1345
  dateAdapter: AdapterDayjs,
1020
1346
  adapterLocale: muiDatePickerAdapterLocale
@@ -1039,18 +1365,20 @@ export var PisellReservationCore = function PisellReservationCore(props) {
1039
1365
  batchActionBar: bookingChildProps.batchActionBar,
1040
1366
  floorMap: floorMapMerged,
1041
1367
  calendar: reservationCalendarSlotProps,
1368
+ resourceWall: reservationResourceWallSlotProps,
1042
1369
  defaultBodyView: "floorMap",
1043
1370
  bodyViewStorageKey: bodyViewStorageKey,
1044
1371
  bodyViewSwitchable: bodyViewSwitchable,
1045
1372
  lockedBodyView: lockedBodyView,
1046
1373
  floorMapLayoutRef: floorMapLayoutRef
1047
1374
  }), /*#__PURE__*/React.createElement(PisellRecordBoard.ShellFrame, null, /*#__PURE__*/React.createElement(RecordBoardBodyViewCapture, {
1048
- bodyViewRef: bodyViewRef
1375
+ bodyViewRef: bodyViewRef,
1376
+ onBodyViewChange: setShellBodyView
1049
1377
  }), /*#__PURE__*/React.createElement(ScheduleSyncOnFloorEnter, {
1050
1378
  schedule: schedule,
1051
1379
  isInternalListData: isInternalListData,
1052
1380
  patchSearchParams: floorDayBookingData.patchSearchParams
1053
- }), /*#__PURE__*/React.createElement(PisellRecordBoard.GridLayout, null), /*#__PURE__*/React.createElement(PisellRecordBoard.FloorMap, null), /*#__PURE__*/React.createElement(PisellRecordBoard.Calendar, null))), /*#__PURE__*/React.createElement(PisellModal, {
1381
+ }), /*#__PURE__*/React.createElement(PisellRecordBoard.GridLayout, null), /*#__PURE__*/React.createElement(PisellRecordBoard.FloorMap, null), /*#__PURE__*/React.createElement(PisellRecordBoard.Calendar, null), /*#__PURE__*/React.createElement(PisellRecordBoard.ResourceWall, null))), /*#__PURE__*/React.createElement(PisellModal, {
1054
1382
  platform: "pc",
1055
1383
  open: isNewReservationModalOpen,
1056
1384
  title: locales.getText(I18N_NEW_MODAL_TITLE),
@@ -1,17 +1,18 @@
1
1
  /**
2
2
  * 预约页拆出的轻量子组件(无业务数据请求):
3
- * - `RecordBoardBodyViewCapture`:把当前 grid/floorMap 同步到父组件 ref,供 debounce effect 读 bodyView;
3
+ * - `RecordBoardBodyViewCapture`:同步 bodyView ref,并可通知宿主;
4
4
  * - `ScheduleSyncOnFloorEnter`:从表格回到平面图/日历、或从日历回到平面图时,用当前营业日 patch 列表时间窗口;
5
- * - `PisellReservationToolbarTabs`:平面图下的日程带 + 表格/平面图 Segmented
5
+ * - `PisellReservationToolbarTabs`:平面图/日历为日程带 + Segmented;表格 / 资源墙不展示日程带,仅 extraTabs
6
6
  * - `ReservationGridTopRight` / `PisellReservationScheduleEndActions` / `ReservationFloorMapCanvasTabsTrailing`:工具栏与画布尾区。
7
7
  */
8
8
  import React from 'react';
9
- import type { Dayjs } from 'dayjs';
9
+ import { type Dayjs } from 'dayjs';
10
10
  import type { PisellFloorMapLayoutRef, RecordBoardBodyView, ReservationScheduleBandValue } from '@pisell/materials';
11
11
  import type { PisellReservationProps } from '../types';
12
- /** 无 UI:仅将 RecordBoard Context 中的 `bodyView` 写入 ref */
12
+ /** 无 UI:将 RecordBoard Context 中的 `bodyView` 写入 ref,并可选通知宿主(如预约页按视图切换 booking 的 form_record_ids) */
13
13
  export declare function RecordBoardBodyViewCapture(props: {
14
14
  bodyViewRef: React.MutableRefObject<RecordBoardBodyView>;
15
+ onBodyViewChange?: (v: RecordBoardBodyView) => void;
15
16
  }): null;
16
17
  /** 从表格切回平面图/日历,或从日历回到平面图时,用当前日程收敛 `booking_time` 查询窗(与视口逻辑一致) */
17
18
  export declare function ScheduleSyncOnFloorEnter(props: {
@@ -38,8 +39,8 @@ export declare type PisellReservationToolbarTabsProps = {
38
39
  calendarGranularity?: 'day' | 'week' | 'month';
39
40
  };
40
41
  /**
41
- * 顶栏 tabs:平面图下为日程带 + 时间轴 + 标题旁切换;表格下不展示 ScheduleBand,
42
- * 切换器由 RecordBoard 工具栏顶行(Find 左侧)承担,与历史行为一致。
42
+ * 顶栏 tabs:**仅平面图、日历**下为日程带 + 时间轴 + 标题旁切换;表格 / 资源墙不展示 ScheduleBand,
43
+ * 切换器由 RecordBoard 工具栏顶行承担(表格态在 Find 左侧;资源墙无 Find 时在顶行左侧),与历史行为一致。
43
44
  */
44
45
  export declare function PisellReservationToolbarTabs(props: PisellReservationToolbarTabsProps): JSX.Element | null;
45
46
  /** 表格视图时展示工具栏右上角透传;平面图时收起(编辑入口在画布 Tab 行右侧) */