@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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/render/default/view.js +1 -1
- package/build/lowcode/view.js +1 -1
- package/es/components/appointmentBooking/components/TimeSlicing/components/SelectDateOS.d.ts +0 -1
- package/es/components/booking/hooks/useClearCart.d.ts +0 -1
- package/es/components/booking/info/notes/index.d.ts +0 -1
- package/es/components/ecocup/components/AddCustomerModal/index.d.ts +1 -0
- package/es/components/ecocup/components/CupActionList/index.d.ts +1 -0
- package/es/components/ecocup/components/CupActionModal/index.d.ts +1 -0
- package/es/components/ecocup/components/CupInfoCard/index.d.ts +1 -0
- package/es/components/ecocup/components/CupStatusModal/index.d.ts +1 -0
- package/es/components/ecocup/components/CustomerAndCupModal/index.d.ts +1 -0
- package/es/components/ecocup/components/CustomerCard/index.d.ts +1 -0
- package/es/components/ecocup/components/MoreDropdown/index.d.ts +1 -0
- package/es/components/ecocup/components/SearchBar/index.d.ts +1 -0
- package/es/components/ecocup/components/SettingModal/index.d.ts +1 -0
- package/es/components/ecocup/cupList/hooks/useColumns.d.ts +1 -0
- package/es/components/ecocup/cupList/hooks/useSummary.d.ts +1 -0
- package/es/components/eftpos/hooks.d.ts +1 -0
- package/es/components/eftpos/index.d.ts +1 -0
- package/es/components/eftposPay/component/fail/network.d.ts +0 -1
- package/es/components/eftposPay/component/fail/unknow.d.ts +0 -1
- package/es/components/eftposPay/component/signature/index.d.ts +0 -1
- package/es/components/eftposPay/store/index.d.ts +1 -1
- package/es/components/eftposPay/tip.d.ts +0 -1
- package/es/components/eftposPay/windcave/receiptAction.d.ts +0 -1
- package/es/components/shoppingCart/hooks/useClearCart.d.ts +0 -1
- package/es/plus/clinetSearch/Add/BirthdayField/index.d.ts +1 -0
- package/es/plus/clinetSearch/Add/GenderField/index.d.ts +1 -0
- package/es/plus/clinetSearch/Add/PhoneField/index.d.ts +1 -0
- package/es/plus/orderList/components/HandleActions.d.ts +1 -0
- package/es/plus/orderList/components/QuickFilter.d.ts +1 -0
- package/es/plus/orderList/components/Reset.d.ts +1 -0
- package/es/plus/orderList/components/Toolbar.d.ts +1 -0
- package/es/plus/pisellReservation/PisellReservation.js +369 -41
- package/es/plus/pisellReservation/components/PisellReservationSubcomponents.d.ts +7 -6
- package/es/plus/pisellReservation/components/PisellReservationSubcomponents.js +25 -12
- package/es/plus/pisellReservation/components/ReservationResourceWallResourceSelect.d.ts +14 -0
- package/es/plus/pisellReservation/components/ReservationResourceWallResourceSelect.js +30 -0
- package/es/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +5 -5
- package/es/plus/pisellReservation/data/bookingToReservationTables.d.ts +4 -0
- package/es/plus/pisellReservation/data/bookingToReservationTables.js +12 -4
- package/es/plus/pisellReservation/data/mapReservationToVenueWallCards.d.ts +6 -0
- package/es/plus/pisellReservation/data/mapReservationToVenueWallCards.js +171 -0
- package/es/plus/pisellReservation/data/reservationDataUtils.js +1 -1
- package/es/plus/pisellReservation/floorMap/reservationMock.js +160 -0
- package/es/plus/pisellReservation/floorRoomCard/buildCardBodyViewModel.js +4 -4
- package/es/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.d.ts +18 -0
- package/es/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.js +44 -0
- package/es/plus/pisellReservation/hooks/useReservationScheduleDebounced.d.ts +3 -3
- package/es/plus/pisellReservation/locales/locales-ja.d.ts +5 -0
- package/es/plus/pisellReservation/locales/locales-ja.js +5 -0
- package/es/plus/pisellReservation/locales/locales-pt.d.ts +5 -0
- package/es/plus/pisellReservation/locales/locales-pt.js +5 -0
- package/es/plus/pisellReservation/locales/locales.d.ts +17 -0
- package/es/plus/pisellReservation/locales/locales.js +7 -0
- package/es/plus/pisellReservation/reservationConstants.d.ts +23 -5
- package/es/plus/pisellReservation/reservationConstants.js +7 -0
- package/es/plus/pisellReservation/types.d.ts +4 -0
- package/es/plus/saasAttendance/settings/components/membersField/index.d.ts +1 -0
- package/es/plus/skuOptionsSelection/components/OptionsCard/index.d.ts +1 -0
- package/es/plus/walletPassGallery/components/timelineSection/index.d.ts +1 -0
- package/es/pro/Selector/demo.d.ts +1 -0
- package/es/pro/pisellPhoneKeyboard/index.d.ts +1 -0
- package/lib/components/appointmentBooking/components/TimeSlicing/components/SelectDateOS.d.ts +0 -1
- package/lib/components/booking/hooks/useClearCart.d.ts +0 -1
- package/lib/components/booking/info/notes/index.d.ts +0 -1
- package/lib/components/ecocup/components/AddCustomerModal/index.d.ts +1 -0
- package/lib/components/ecocup/components/CupActionList/index.d.ts +1 -0
- package/lib/components/ecocup/components/CupActionModal/index.d.ts +1 -0
- package/lib/components/ecocup/components/CupInfoCard/index.d.ts +1 -0
- package/lib/components/ecocup/components/CupStatusModal/index.d.ts +1 -0
- package/lib/components/ecocup/components/CustomerAndCupModal/index.d.ts +1 -0
- package/lib/components/ecocup/components/CustomerCard/index.d.ts +1 -0
- package/lib/components/ecocup/components/MoreDropdown/index.d.ts +1 -0
- package/lib/components/ecocup/components/SearchBar/index.d.ts +1 -0
- package/lib/components/ecocup/components/SettingModal/index.d.ts +1 -0
- package/lib/components/ecocup/cupList/hooks/useColumns.d.ts +1 -0
- package/lib/components/ecocup/cupList/hooks/useSummary.d.ts +1 -0
- package/lib/components/eftpos/hooks.d.ts +1 -0
- package/lib/components/eftpos/index.d.ts +1 -0
- package/lib/components/eftposPay/component/fail/network.d.ts +0 -1
- package/lib/components/eftposPay/component/fail/unknow.d.ts +0 -1
- package/lib/components/eftposPay/component/signature/index.d.ts +0 -1
- package/lib/components/eftposPay/store/index.d.ts +1 -1
- package/lib/components/eftposPay/tip.d.ts +0 -1
- package/lib/components/eftposPay/windcave/receiptAction.d.ts +0 -1
- package/lib/components/shoppingCart/hooks/useClearCart.d.ts +0 -1
- package/lib/plus/clinetSearch/Add/BirthdayField/index.d.ts +1 -0
- package/lib/plus/clinetSearch/Add/GenderField/index.d.ts +1 -0
- package/lib/plus/clinetSearch/Add/PhoneField/index.d.ts +1 -0
- package/lib/plus/orderList/components/HandleActions.d.ts +1 -0
- package/lib/plus/orderList/components/QuickFilter.d.ts +1 -0
- package/lib/plus/orderList/components/Reset.d.ts +1 -0
- package/lib/plus/orderList/components/Toolbar.d.ts +1 -0
- package/lib/plus/pisellReservation/PisellReservation.js +312 -12
- package/lib/plus/pisellReservation/components/PisellReservationSubcomponents.d.ts +7 -6
- package/lib/plus/pisellReservation/components/PisellReservationSubcomponents.js +18 -5
- package/lib/plus/pisellReservation/components/ReservationResourceWallResourceSelect.d.ts +14 -0
- package/lib/plus/pisellReservation/components/ReservationResourceWallResourceSelect.js +60 -0
- package/lib/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +1 -1
- package/lib/plus/pisellReservation/data/bookingToReservationTables.d.ts +4 -0
- package/lib/plus/pisellReservation/data/bookingToReservationTables.js +16 -9
- package/lib/plus/pisellReservation/data/mapReservationToVenueWallCards.d.ts +6 -0
- package/lib/plus/pisellReservation/data/mapReservationToVenueWallCards.js +160 -0
- package/lib/plus/pisellReservation/data/reservationDataUtils.js +2 -1
- package/lib/plus/pisellReservation/floorMap/reservationMock.js +151 -0
- package/lib/plus/pisellReservation/floorRoomCard/buildCardBodyViewModel.js +5 -2
- package/lib/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.d.ts +18 -0
- package/lib/plus/pisellReservation/floorRoomCard/floorRoomCardUtils.js +40 -0
- package/lib/plus/pisellReservation/hooks/useReservationScheduleDebounced.d.ts +3 -3
- package/lib/plus/pisellReservation/locales/locales-ja.d.ts +5 -0
- package/lib/plus/pisellReservation/locales/locales-ja.js +5 -0
- package/lib/plus/pisellReservation/locales/locales-pt.d.ts +5 -0
- package/lib/plus/pisellReservation/locales/locales-pt.js +5 -0
- package/lib/plus/pisellReservation/locales/locales.d.ts +17 -0
- package/lib/plus/pisellReservation/locales/locales.js +7 -0
- package/lib/plus/pisellReservation/reservationConstants.d.ts +23 -5
- package/lib/plus/pisellReservation/reservationConstants.js +12 -0
- package/lib/plus/pisellReservation/types.d.ts +4 -0
- package/lib/plus/saasAttendance/settings/components/membersField/index.d.ts +1 -0
- package/lib/plus/skuOptionsSelection/components/OptionsCard/index.d.ts +1 -0
- package/lib/plus/walletPassGallery/components/timelineSection/index.d.ts +1 -0
- package/lib/pro/Selector/demo.d.ts +1 -0
- package/lib/pro/pisellPhoneKeyboard/index.d.ts +1 -0
- 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
|
-
/**
|
|
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
|
|
370
|
-
|
|
481
|
+
var _iterator3 = _createForOfIteratorHelper(list),
|
|
482
|
+
_step3;
|
|
371
483
|
try {
|
|
372
|
-
for (
|
|
373
|
-
var raw =
|
|
484
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
485
|
+
var raw = _step3.value;
|
|
374
486
|
if (!raw || _typeof(raw) !== 'object') continue;
|
|
375
|
-
var
|
|
376
|
-
|
|
487
|
+
var _iterator4 = _createForOfIteratorHelper(extractResourceRecordIds(raw)),
|
|
488
|
+
_step4;
|
|
377
489
|
try {
|
|
378
|
-
for (
|
|
379
|
-
var id =
|
|
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
|
-
|
|
495
|
+
_iterator4.e(err);
|
|
384
496
|
} finally {
|
|
385
|
-
|
|
497
|
+
_iterator4.f();
|
|
386
498
|
}
|
|
387
499
|
}
|
|
388
500
|
} catch (err) {
|
|
389
|
-
|
|
501
|
+
_iterator3.e(err);
|
|
390
502
|
} finally {
|
|
391
|
-
|
|
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
|
|
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
|
-
|
|
449
|
-
|
|
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
|
|
457
|
-
|
|
458
|
-
isNewReservationModalOpen =
|
|
459
|
-
setIsNewReservationModalOpen =
|
|
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
|
|
665
|
-
|
|
666
|
-
mapEditInternal =
|
|
667
|
-
setMapEditInternal =
|
|
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
|
|
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
|
-
}, [
|
|
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
|
|
3
|
+
* - `RecordBoardBodyViewCapture`:同步 bodyView 到 ref,并可通知宿主;
|
|
4
4
|
* - `ScheduleSyncOnFloorEnter`:从表格回到平面图/日历、或从日历回到平面图时,用当前营业日 patch 列表时间窗口;
|
|
5
|
-
* - `PisellReservationToolbarTabs
|
|
5
|
+
* - `PisellReservationToolbarTabs`:平面图/日历为日程带 + Segmented;表格 / 资源墙不展示日程带,仅 extraTabs;
|
|
6
6
|
* - `ReservationGridTopRight` / `PisellReservationScheduleEndActions` / `ReservationFloorMapCanvasTabsTrailing`:工具栏与画布尾区。
|
|
7
7
|
*/
|
|
8
8
|
import React from 'react';
|
|
9
|
-
import type
|
|
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
|
|
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
|
|
42
|
-
* 切换器由 RecordBoard
|
|
42
|
+
* 顶栏 tabs:**仅平面图、日历**下为日程带 + 时间轴 + 标题旁切换;表格 / 资源墙不展示 ScheduleBand,
|
|
43
|
+
* 切换器由 RecordBoard 工具栏顶行承担(表格态在 Find 左侧;资源墙无 Find 时在顶行左侧),与历史行为一致。
|
|
43
44
|
*/
|
|
44
45
|
export declare function PisellReservationToolbarTabs(props: PisellReservationToolbarTabsProps): JSX.Element | null;
|
|
45
46
|
/** 表格视图时展示工具栏右上角透传;平面图时收起(编辑入口在画布 Tab 行右侧) */
|