@pisell/materials 6.11.35 → 6.11.36

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 (37) 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.css +1 -1
  6. package/build/lowcode/render/default/view.js +5 -5
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +4 -4
  9. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +40 -5
  10. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +21 -0
  11. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +9 -1
  12. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +9 -2
  13. package/es/locales/en-US.d.ts +2 -0
  14. package/es/locales/en-US.js +4 -2
  15. package/es/locales/ja.d.ts +2 -0
  16. package/es/locales/ja.js +5 -3
  17. package/es/locales/pt.d.ts +2 -0
  18. package/es/locales/pt.js +4 -2
  19. package/es/locales/zh-CN.d.ts +2 -0
  20. package/es/locales/zh-CN.js +5 -3
  21. package/es/locales/zh-TW.d.ts +2 -0
  22. package/es/locales/zh-TW.js +5 -3
  23. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +32 -0
  24. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +21 -0
  25. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +6 -1
  26. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +12 -2
  27. package/lib/locales/en-US.d.ts +2 -0
  28. package/lib/locales/en-US.js +4 -2
  29. package/lib/locales/ja.d.ts +2 -0
  30. package/lib/locales/ja.js +5 -3
  31. package/lib/locales/pt.d.ts +2 -0
  32. package/lib/locales/pt.js +4 -2
  33. package/lib/locales/zh-CN.d.ts +2 -0
  34. package/lib/locales/zh-CN.js +5 -3
  35. package/lib/locales/zh-TW.d.ts +2 -0
  36. package/lib/locales/zh-TW.js +5 -3
  37. package/package.json +3 -3
@@ -11,7 +11,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
11
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
12
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
14
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
15
15
  import { Spin } from 'antd';
16
16
  import { getText } from "../../../../locales";
17
17
  import { getCurrentLocale } from "../../../../utils/locale";
@@ -209,13 +209,30 @@ export var PisellRecordBoardResourceWallView = function PisellRecordBoardResourc
209
209
  _useState12 = _slicedToArray(_useState11, 2),
210
210
  currentPage = _useState12[0],
211
211
  setCurrentPage = _useState12[1];
212
+ var _useState13 = useState(false),
213
+ _useState14 = _slicedToArray(_useState13, 2),
214
+ pseudoFullscreen = _useState14[0],
215
+ setPseudoFullscreen = _useState14[1];
216
+ var shellRef = useRef(null);
217
+ useEffect(function () {
218
+ var cls = 'pisell-resource-wall-fixed-viewport';
219
+ if (typeof document === 'undefined') return;
220
+ if (pseudoFullscreen) {
221
+ document.body.classList.add(cls);
222
+ } else {
223
+ document.body.classList.remove(cls);
224
+ }
225
+ return function () {
226
+ document.body.classList.remove(cls);
227
+ };
228
+ }, [pseudoFullscreen]);
212
229
  var layoutPersisted = onResourceWallLayoutChange != null;
213
- var _useState13 = useState(function () {
230
+ var _useState15 = useState(function () {
214
231
  return _objectSpread({}, DEFAULT_RESOURCE_WALL_LAYOUT_PERSIST);
215
232
  }),
216
- _useState14 = _slicedToArray(_useState13, 2),
217
- internalLayout = _useState14[0],
218
- setInternalLayout = _useState14[1];
233
+ _useState16 = _slicedToArray(_useState15, 2),
234
+ internalLayout = _useState16[0],
235
+ setInternalLayout = _useState16[1];
219
236
  var layoutState = layoutPersisted ? _objectSpread(_objectSpread({}, DEFAULT_RESOURCE_WALL_LAYOUT_PERSIST), resourceWallLayoutProp !== null && resourceWallLayoutProp !== void 0 ? resourceWallLayoutProp : {}) : internalLayout;
220
237
  var setLayoutState = useCallback(function (patch) {
221
238
  if (layoutPersisted) {
@@ -348,6 +365,7 @@ export var PisellRecordBoardResourceWallView = function PisellRecordBoardResourc
348
365
  var toolbarBtnBgActive = isDark ? '#475569' : '#f1f5f9';
349
366
  var countdownSec = Math.max(3, pageDurationSec);
350
367
  var shell = /*#__PURE__*/React.createElement("div", {
368
+ ref: shellRef,
351
369
  className: className,
352
370
  style: _objectSpread({
353
371
  flex: 1,
@@ -429,6 +447,23 @@ export var PisellRecordBoardResourceWallView = function PisellRecordBoardResourc
429
447
  color: appearanceMode === 'dark' ? clockColor : mutedText
430
448
  }
431
449
  }, getText('pisell-resource-wall-appearance-dark'))), /*#__PURE__*/React.createElement("button", {
450
+ type: "button",
451
+ onClick: function onClick() {
452
+ return setPseudoFullscreen(function (v) {
453
+ return !v;
454
+ });
455
+ },
456
+ style: {
457
+ borderRadius: 6,
458
+ padding: '6px 14px',
459
+ fontSize: 13,
460
+ fontWeight: 500,
461
+ cursor: 'pointer',
462
+ border: toolbarBtnBorder,
463
+ background: pseudoFullscreen ? toolbarBtnBgActive : toolbarBtnBg,
464
+ color: clockColor
465
+ }
466
+ }, pseudoFullscreen ? getText('pisell-resource-wall-fullscreen-exit') : getText('pisell-resource-wall-fullscreen-enter')), /*#__PURE__*/React.createElement("button", {
432
467
  type: "button",
433
468
  onClick: function onClick() {
434
469
  return setShowControlPanel(true);
@@ -14,3 +14,24 @@
14
14
  animation-timing-function: linear;
15
15
  animation-iteration-count: infinite;
16
16
  }
17
+
18
+ /**
19
+ * 资源墙伪全屏:不调用 Fullscreen API。
20
+ * 通过给 `body` 打标记,选择器固定 `.pisell-shell-frame-body` 铺满视口(width/height 均为 100%)。
21
+ */
22
+ body.pisell-resource-wall-fixed-viewport {
23
+ overflow: hidden !important;
24
+ }
25
+
26
+ body.pisell-resource-wall-fixed-viewport .pisell-shell-frame-body {
27
+ position: fixed;
28
+ inset: 0;
29
+ z-index: 2000;
30
+ padding: 0;
31
+ margin: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ max-width: 100%;
35
+ max-height: 100%;
36
+ overflow: hidden;
37
+ }
@@ -239,6 +239,13 @@ export var VenueWallCard = function VenueWallCard(_ref) {
239
239
  var nextBlockPad = Math.max(unit * 0.16, Math.min(unit * 0.24, 16));
240
240
  var noteSize = clamp(noteHeight * 0.28 * fitScale, 10, 18);
241
241
  var tagFont = Math.max(8, tagSize * 0.68);
242
+
243
+ /**
244
+ * 外层卡片高度会被父级网格 `1fr` 行拉伸;若内层 grid 仍用固定 `px` 行高,
245
+ * 则“卡片容器变高但内容区不跟着长高”,表现为底部空白。
246
+ * 这里用 `minmax(基准px, nfr)` 把增量高度主要分配给 CURRENT / NEXT 两个主模块。
247
+ */
248
+ var gridTemplateRows = "".concat(headerHeight, "px minmax(").concat(Math.max(120, currentHeight), "px, 4fr) minmax(").concat(Math.max(72, nextHeight), "px, 2fr) ").concat(noteHeight, "px");
242
249
  return /*#__PURE__*/React.createElement("div", {
243
250
  ref: cardRef,
244
251
  className: "pisell-resource-wall-card",
@@ -260,9 +267,10 @@ export var VenueWallCard = function VenueWallCard(_ref) {
260
267
  flex: 1,
261
268
  display: 'grid',
262
269
  minHeight: 0,
270
+ height: '100%',
263
271
  padding: shellPad,
264
272
  gap: sectionGap,
265
- gridTemplateRows: "".concat(headerHeight, "px ").concat(currentHeight, "px ").concat(nextHeight, "px ").concat(noteHeight, "px")
273
+ gridTemplateRows: gridTemplateRows
266
274
  }
267
275
  }, /*#__PURE__*/React.createElement("div", {
268
276
  style: {
@@ -93,13 +93,20 @@ export function deriveVenueWallStatus(card) {
93
93
  if (rm != null && rm <= 10) return 'endingSoon';
94
94
  return 'inUse';
95
95
  }
96
+ function formatDurationHM(minAbs) {
97
+ var safe = Number.isFinite(minAbs) ? Math.max(0, Math.floor(minAbs)) : 0;
98
+ if (safe < 60) return "".concat(safe, "m");
99
+ var h = Math.floor(safe / 60);
100
+ var m = safe % 60;
101
+ return "".concat(h, "h").concat(String(m).padStart(2, '0'), "m");
102
+ }
96
103
  export function formatVenueWallCountdown(min) {
97
104
  if (min < 0) {
98
- var n = String(Math.abs(min));
105
+ var n = formatDurationHM(Math.abs(min));
99
106
  return getText('pisell-resource-wall-countdown-overtime').replace('{n}', n);
100
107
  }
101
108
  if (min === 0) return getText('pisell-resource-wall-countdown-ending-now');
102
- return getText('pisell-resource-wall-countdown-left').replace('{n}', String(min));
109
+ return getText('pisell-resource-wall-countdown-left').replace('{n}', formatDurationHM(min));
103
110
  }
104
111
  function cloneTone(t) {
105
112
  return _objectSpread({}, t);
@@ -150,6 +150,8 @@ declare const _default: {
150
150
  'pisell-resource-wall-countdown-ending-now': string;
151
151
  'pisell-resource-wall-countdown-left': string;
152
152
  'pisell-resource-wall-countdown-zero-overtime': string;
153
+ 'pisell-resource-wall-fullscreen-enter': string;
154
+ 'pisell-resource-wall-fullscreen-exit': string;
153
155
  'pisell-resource-wall-card-hero-available': string;
154
156
  'pisell-resource-wall-card-label-current': string;
155
157
  'pisell-resource-wall-card-label-next': string;
@@ -166,10 +166,12 @@ export default {
166
166
  'pisell-resource-wall-available-card-color-label': 'Available tone (light cards)',
167
167
  'pisell-resource-wall-status-col-explain': 'Explanatory copy',
168
168
  'pisell-resource-wall-carousel-countdown-line': 'Page {cur} / {tot} · {sec}s/page',
169
- 'pisell-resource-wall-countdown-overtime': '{n}m overtime',
169
+ 'pisell-resource-wall-countdown-overtime': '{n} overtime',
170
170
  'pisell-resource-wall-countdown-ending-now': 'Ending now',
171
- 'pisell-resource-wall-countdown-left': '{n}m left',
171
+ 'pisell-resource-wall-countdown-left': '{n} left',
172
172
  'pisell-resource-wall-countdown-zero-overtime': '0m overtime',
173
+ 'pisell-resource-wall-fullscreen-enter': 'Full screen',
174
+ 'pisell-resource-wall-fullscreen-exit': 'Exit full screen',
173
175
  'pisell-resource-wall-card-hero-available': 'Available',
174
176
  'pisell-resource-wall-card-label-current': 'Current',
175
177
  'pisell-resource-wall-card-label-next': 'Next',
@@ -410,6 +410,8 @@ declare const _default: {
410
410
  'pisell-resource-wall-countdown-ending-now': string;
411
411
  'pisell-resource-wall-countdown-left': string;
412
412
  'pisell-resource-wall-countdown-zero-overtime': string;
413
+ 'pisell-resource-wall-fullscreen-enter': string;
414
+ 'pisell-resource-wall-fullscreen-exit': string;
413
415
  'pisell-resource-wall-card-hero-available': string;
414
416
  'pisell-resource-wall-card-label-current': string;
415
417
  'pisell-resource-wall-card-label-next': string;
package/es/locales/ja.js CHANGED
@@ -493,10 +493,12 @@ export default (_pisellTabbarExpand = {
493
493
  'pisell-resource-wall-available-card-color-label': '空きの色(ライトカード)',
494
494
  'pisell-resource-wall-status-col-explain': '説明文',
495
495
  'pisell-resource-wall-carousel-countdown-line': '{tot} ページ中 {cur} ページ目 · {sec} 秒/ページ',
496
- 'pisell-resource-wall-countdown-overtime': '超過 {n}',
496
+ 'pisell-resource-wall-countdown-overtime': '超過 {n}',
497
497
  'pisell-resource-wall-countdown-ending-now': 'まもなく終了',
498
- 'pisell-resource-wall-countdown-left': '残り {n}',
499
- 'pisell-resource-wall-countdown-zero-overtime': '超過 0 分',
498
+ 'pisell-resource-wall-countdown-left': '残り {n}',
499
+ 'pisell-resource-wall-countdown-zero-overtime': '超過 0m',
500
+ 'pisell-resource-wall-fullscreen-enter': '全画面',
501
+ 'pisell-resource-wall-fullscreen-exit': '全画面を終了',
500
502
  'pisell-resource-wall-card-hero-available': '空き',
501
503
  'pisell-resource-wall-card-label-current': '現在',
502
504
  'pisell-resource-wall-card-label-next': '次',
@@ -410,6 +410,8 @@ declare const _default: {
410
410
  'pisell-resource-wall-countdown-ending-now': string;
411
411
  'pisell-resource-wall-countdown-left': string;
412
412
  'pisell-resource-wall-countdown-zero-overtime': string;
413
+ 'pisell-resource-wall-fullscreen-enter': string;
414
+ 'pisell-resource-wall-fullscreen-exit': string;
413
415
  'pisell-resource-wall-card-hero-available': string;
414
416
  'pisell-resource-wall-card-label-current': string;
415
417
  'pisell-resource-wall-card-label-next': string;
package/es/locales/pt.js CHANGED
@@ -492,10 +492,12 @@ export default (_pisellTabbarExpand = {
492
492
  'pisell-resource-wall-available-card-color-label': 'Cor livre (cartões claros)',
493
493
  'pisell-resource-wall-status-col-explain': 'Texto explicativo',
494
494
  'pisell-resource-wall-carousel-countdown-line': 'Página {cur} / {tot} · {sec}s/página',
495
- 'pisell-resource-wall-countdown-overtime': '{n}m em prolongamento',
495
+ 'pisell-resource-wall-countdown-overtime': '{n} em prolongamento',
496
496
  'pisell-resource-wall-countdown-ending-now': 'A terminar',
497
- 'pisell-resource-wall-countdown-left': '{n}m restantes',
497
+ 'pisell-resource-wall-countdown-left': '{n} restantes',
498
498
  'pisell-resource-wall-countdown-zero-overtime': '0m em prolongamento',
499
+ 'pisell-resource-wall-fullscreen-enter': 'Ecrã inteiro',
500
+ 'pisell-resource-wall-fullscreen-exit': 'Sair do ecrã inteiro',
499
501
  'pisell-resource-wall-card-hero-available': 'Disponível',
500
502
  'pisell-resource-wall-card-label-current': 'Atual',
501
503
  'pisell-resource-wall-card-label-next': 'Seguinte',
@@ -150,6 +150,8 @@ declare const _default: {
150
150
  'pisell-resource-wall-countdown-ending-now': string;
151
151
  'pisell-resource-wall-countdown-left': string;
152
152
  'pisell-resource-wall-countdown-zero-overtime': string;
153
+ 'pisell-resource-wall-fullscreen-enter': string;
154
+ 'pisell-resource-wall-fullscreen-exit': string;
153
155
  'pisell-resource-wall-card-hero-available': string;
154
156
  'pisell-resource-wall-card-label-current': string;
155
157
  'pisell-resource-wall-card-label-next': string;
@@ -166,10 +166,12 @@ export default {
166
166
  'pisell-resource-wall-available-card-color-label': '非占用色(浅色卡片)',
167
167
  'pisell-resource-wall-status-col-explain': '解释文案',
168
168
  'pisell-resource-wall-carousel-countdown-line': '第 {cur} / {tot} 页 · 每页 {sec} 秒',
169
- 'pisell-resource-wall-countdown-overtime': '超时 {n} 分钟',
169
+ 'pisell-resource-wall-countdown-overtime': '超时 {n}',
170
170
  'pisell-resource-wall-countdown-ending-now': '即将结束',
171
- 'pisell-resource-wall-countdown-left': '剩余 {n} 分钟',
172
- 'pisell-resource-wall-countdown-zero-overtime': '超时 0 分钟',
171
+ 'pisell-resource-wall-countdown-left': '剩余 {n}',
172
+ 'pisell-resource-wall-countdown-zero-overtime': '超时 0m',
173
+ 'pisell-resource-wall-fullscreen-enter': '全屏',
174
+ 'pisell-resource-wall-fullscreen-exit': '退出全屏',
173
175
  'pisell-resource-wall-card-hero-available': '空闲',
174
176
  'pisell-resource-wall-card-label-current': '当前',
175
177
  'pisell-resource-wall-card-label-next': '下一场',
@@ -150,6 +150,8 @@ declare const _default: {
150
150
  'pisell-resource-wall-countdown-ending-now': string;
151
151
  'pisell-resource-wall-countdown-left': string;
152
152
  'pisell-resource-wall-countdown-zero-overtime': string;
153
+ 'pisell-resource-wall-fullscreen-enter': string;
154
+ 'pisell-resource-wall-fullscreen-exit': string;
153
155
  'pisell-resource-wall-card-hero-available': string;
154
156
  'pisell-resource-wall-card-label-current': string;
155
157
  'pisell-resource-wall-card-label-next': string;
@@ -166,10 +166,12 @@ export default {
166
166
  'pisell-resource-wall-available-card-color-label': '非占用色(淺色卡片)',
167
167
  'pisell-resource-wall-status-col-explain': '解釋文案',
168
168
  'pisell-resource-wall-carousel-countdown-line': '第 {cur} / {tot} 頁 · 每頁 {sec} 秒',
169
- 'pisell-resource-wall-countdown-overtime': '逾時 {n} 分鐘',
169
+ 'pisell-resource-wall-countdown-overtime': '逾時 {n}',
170
170
  'pisell-resource-wall-countdown-ending-now': '即將結束',
171
- 'pisell-resource-wall-countdown-left': '剩餘 {n} 分鐘',
172
- 'pisell-resource-wall-countdown-zero-overtime': '逾時 0 分鐘',
171
+ 'pisell-resource-wall-countdown-left': '剩餘 {n}',
172
+ 'pisell-resource-wall-countdown-zero-overtime': '逾時 0m',
173
+ 'pisell-resource-wall-fullscreen-enter': '全屏',
174
+ 'pisell-resource-wall-fullscreen-exit': '退出全屏',
173
175
  'pisell-resource-wall-card-hero-available': '空閒',
174
176
  'pisell-resource-wall-card-label-current': '目前',
175
177
  'pisell-resource-wall-card-label-next': '下一場',
@@ -165,6 +165,20 @@ var PisellRecordBoardResourceWallView = (props) => {
165
165
  setShowControlPanel(false);
166
166
  }, []);
167
167
  const [currentPage, setCurrentPage] = (0, import_react.useState)(0);
168
+ const [pseudoFullscreen, setPseudoFullscreen] = (0, import_react.useState)(false);
169
+ const shellRef = (0, import_react.useRef)(null);
170
+ (0, import_react.useEffect)(() => {
171
+ const cls = "pisell-resource-wall-fixed-viewport";
172
+ if (typeof document === "undefined") return;
173
+ if (pseudoFullscreen) {
174
+ document.body.classList.add(cls);
175
+ } else {
176
+ document.body.classList.remove(cls);
177
+ }
178
+ return () => {
179
+ document.body.classList.remove(cls);
180
+ };
181
+ }, [pseudoFullscreen]);
168
182
  const layoutPersisted = onResourceWallLayoutChange != null;
169
183
  const [internalLayout, setInternalLayout] = (0, import_react.useState)(() => ({
170
184
  ...import_types.DEFAULT_RESOURCE_WALL_LAYOUT_PERSIST
@@ -323,6 +337,7 @@ var PisellRecordBoardResourceWallView = (props) => {
323
337
  const shell = /* @__PURE__ */ import_react.default.createElement(
324
338
  "div",
325
339
  {
340
+ ref: shellRef,
326
341
  className,
327
342
  style: {
328
343
  flex: 1,
@@ -420,6 +435,23 @@ var PisellRecordBoardResourceWallView = (props) => {
420
435
  },
421
436
  (0, import_locales.getText)("pisell-resource-wall-appearance-dark")
422
437
  )
438
+ ), /* @__PURE__ */ import_react.default.createElement(
439
+ "button",
440
+ {
441
+ type: "button",
442
+ onClick: () => setPseudoFullscreen((v) => !v),
443
+ style: {
444
+ borderRadius: 6,
445
+ padding: "6px 14px",
446
+ fontSize: 13,
447
+ fontWeight: 500,
448
+ cursor: "pointer",
449
+ border: toolbarBtnBorder,
450
+ background: pseudoFullscreen ? toolbarBtnBgActive : toolbarBtnBg,
451
+ color: clockColor
452
+ }
453
+ },
454
+ pseudoFullscreen ? (0, import_locales.getText)("pisell-resource-wall-fullscreen-exit") : (0, import_locales.getText)("pisell-resource-wall-fullscreen-enter")
423
455
  ), /* @__PURE__ */ import_react.default.createElement(
424
456
  "button",
425
457
  {
@@ -14,3 +14,24 @@
14
14
  animation-timing-function: linear;
15
15
  animation-iteration-count: infinite;
16
16
  }
17
+
18
+ /**
19
+ * 资源墙伪全屏:不调用 Fullscreen API。
20
+ * 通过给 `body` 打标记,选择器固定 `.pisell-shell-frame-body` 铺满视口(width/height 均为 100%)。
21
+ */
22
+ body.pisell-resource-wall-fixed-viewport {
23
+ overflow: hidden !important;
24
+ }
25
+
26
+ body.pisell-resource-wall-fixed-viewport .pisell-shell-frame-body {
27
+ position: fixed;
28
+ inset: 0;
29
+ z-index: 2000;
30
+ padding: 0;
31
+ margin: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ max-width: 100%;
35
+ max-height: 100%;
36
+ overflow: hidden;
37
+ }
@@ -237,6 +237,10 @@ var VenueWallCard = ({
237
237
  const nextBlockPad = Math.max(unit * 0.16, Math.min(unit * 0.24, 16));
238
238
  const noteSize = (0, import_venueWallUtils.clamp)(noteHeight * 0.28 * fitScale, 10, 18);
239
239
  const tagFont = Math.max(8, tagSize * 0.68);
240
+ const gridTemplateRows = `${headerHeight}px minmax(${Math.max(
241
+ 120,
242
+ currentHeight
243
+ )}px, 4fr) minmax(${Math.max(72, nextHeight)}px, 2fr) ${noteHeight}px`;
240
244
  return /* @__PURE__ */ import_react.default.createElement(
241
245
  "div",
242
246
  {
@@ -263,9 +267,10 @@ var VenueWallCard = ({
263
267
  flex: 1,
264
268
  display: "grid",
265
269
  minHeight: 0,
270
+ height: "100%",
266
271
  padding: shellPad,
267
272
  gap: sectionGap,
268
- gridTemplateRows: `${headerHeight}px ${currentHeight}px ${nextHeight}px ${noteHeight}px`
273
+ gridTemplateRows
269
274
  }
270
275
  },
271
276
  /* @__PURE__ */ import_react.default.createElement(
@@ -107,13 +107,23 @@ function deriveVenueWallStatus(card) {
107
107
  if (rm != null && rm <= 10) return "endingSoon";
108
108
  return "inUse";
109
109
  }
110
+ function formatDurationHM(minAbs) {
111
+ const safe = Number.isFinite(minAbs) ? Math.max(0, Math.floor(minAbs)) : 0;
112
+ if (safe < 60) return `${safe}m`;
113
+ const h = Math.floor(safe / 60);
114
+ const m = safe % 60;
115
+ return `${h}h${String(m).padStart(2, "0")}m`;
116
+ }
110
117
  function formatVenueWallCountdown(min) {
111
118
  if (min < 0) {
112
- const n = String(Math.abs(min));
119
+ const n = formatDurationHM(Math.abs(min));
113
120
  return (0, import_locales.getText)("pisell-resource-wall-countdown-overtime").replace("{n}", n);
114
121
  }
115
122
  if (min === 0) return (0, import_locales.getText)("pisell-resource-wall-countdown-ending-now");
116
- return (0, import_locales.getText)("pisell-resource-wall-countdown-left").replace("{n}", String(min));
123
+ return (0, import_locales.getText)("pisell-resource-wall-countdown-left").replace(
124
+ "{n}",
125
+ formatDurationHM(min)
126
+ );
117
127
  }
118
128
  function cloneTone(t) {
119
129
  return { ...t };
@@ -150,6 +150,8 @@ declare const _default: {
150
150
  'pisell-resource-wall-countdown-ending-now': string;
151
151
  'pisell-resource-wall-countdown-left': string;
152
152
  'pisell-resource-wall-countdown-zero-overtime': string;
153
+ 'pisell-resource-wall-fullscreen-enter': string;
154
+ 'pisell-resource-wall-fullscreen-exit': string;
153
155
  'pisell-resource-wall-card-hero-available': string;
154
156
  'pisell-resource-wall-card-label-current': string;
155
157
  'pisell-resource-wall-card-label-next': string;
@@ -176,10 +176,12 @@ var en_US_default = {
176
176
  "pisell-resource-wall-available-card-color-label": "Available tone (light cards)",
177
177
  "pisell-resource-wall-status-col-explain": "Explanatory copy",
178
178
  "pisell-resource-wall-carousel-countdown-line": "Page {cur} / {tot} · {sec}s/page",
179
- "pisell-resource-wall-countdown-overtime": "{n}m overtime",
179
+ "pisell-resource-wall-countdown-overtime": "{n} overtime",
180
180
  "pisell-resource-wall-countdown-ending-now": "Ending now",
181
- "pisell-resource-wall-countdown-left": "{n}m left",
181
+ "pisell-resource-wall-countdown-left": "{n} left",
182
182
  "pisell-resource-wall-countdown-zero-overtime": "0m overtime",
183
+ "pisell-resource-wall-fullscreen-enter": "Full screen",
184
+ "pisell-resource-wall-fullscreen-exit": "Exit full screen",
183
185
  "pisell-resource-wall-card-hero-available": "Available",
184
186
  "pisell-resource-wall-card-label-current": "Current",
185
187
  "pisell-resource-wall-card-label-next": "Next",
@@ -410,6 +410,8 @@ declare const _default: {
410
410
  'pisell-resource-wall-countdown-ending-now': string;
411
411
  'pisell-resource-wall-countdown-left': string;
412
412
  'pisell-resource-wall-countdown-zero-overtime': string;
413
+ 'pisell-resource-wall-fullscreen-enter': string;
414
+ 'pisell-resource-wall-fullscreen-exit': string;
413
415
  'pisell-resource-wall-card-hero-available': string;
414
416
  'pisell-resource-wall-card-label-current': string;
415
417
  'pisell-resource-wall-card-label-next': string;
package/lib/locales/ja.js CHANGED
@@ -468,10 +468,12 @@ var ja_default = {
468
468
  "pisell-resource-wall-available-card-color-label": "空きの色(ライトカード)",
469
469
  "pisell-resource-wall-status-col-explain": "説明文",
470
470
  "pisell-resource-wall-carousel-countdown-line": "{tot} ページ中 {cur} ページ目 · {sec} 秒/ページ",
471
- "pisell-resource-wall-countdown-overtime": "超過 {n}",
471
+ "pisell-resource-wall-countdown-overtime": "超過 {n}",
472
472
  "pisell-resource-wall-countdown-ending-now": "まもなく終了",
473
- "pisell-resource-wall-countdown-left": "残り {n}",
474
- "pisell-resource-wall-countdown-zero-overtime": "超過 0 分",
473
+ "pisell-resource-wall-countdown-left": "残り {n}",
474
+ "pisell-resource-wall-countdown-zero-overtime": "超過 0m",
475
+ "pisell-resource-wall-fullscreen-enter": "全画面",
476
+ "pisell-resource-wall-fullscreen-exit": "全画面を終了",
475
477
  "pisell-resource-wall-card-hero-available": "空き",
476
478
  "pisell-resource-wall-card-label-current": "現在",
477
479
  "pisell-resource-wall-card-label-next": "次",
@@ -410,6 +410,8 @@ declare const _default: {
410
410
  'pisell-resource-wall-countdown-ending-now': string;
411
411
  'pisell-resource-wall-countdown-left': string;
412
412
  'pisell-resource-wall-countdown-zero-overtime': string;
413
+ 'pisell-resource-wall-fullscreen-enter': string;
414
+ 'pisell-resource-wall-fullscreen-exit': string;
413
415
  'pisell-resource-wall-card-hero-available': string;
414
416
  'pisell-resource-wall-card-label-current': string;
415
417
  'pisell-resource-wall-card-label-next': string;
package/lib/locales/pt.js CHANGED
@@ -467,10 +467,12 @@ var pt_default = {
467
467
  "pisell-resource-wall-available-card-color-label": "Cor livre (cartões claros)",
468
468
  "pisell-resource-wall-status-col-explain": "Texto explicativo",
469
469
  "pisell-resource-wall-carousel-countdown-line": "Página {cur} / {tot} · {sec}s/página",
470
- "pisell-resource-wall-countdown-overtime": "{n}m em prolongamento",
470
+ "pisell-resource-wall-countdown-overtime": "{n} em prolongamento",
471
471
  "pisell-resource-wall-countdown-ending-now": "A terminar",
472
- "pisell-resource-wall-countdown-left": "{n}m restantes",
472
+ "pisell-resource-wall-countdown-left": "{n} restantes",
473
473
  "pisell-resource-wall-countdown-zero-overtime": "0m em prolongamento",
474
+ "pisell-resource-wall-fullscreen-enter": "Ecrã inteiro",
475
+ "pisell-resource-wall-fullscreen-exit": "Sair do ecrã inteiro",
474
476
  "pisell-resource-wall-card-hero-available": "Disponível",
475
477
  "pisell-resource-wall-card-label-current": "Atual",
476
478
  "pisell-resource-wall-card-label-next": "Seguinte",
@@ -150,6 +150,8 @@ declare const _default: {
150
150
  'pisell-resource-wall-countdown-ending-now': string;
151
151
  'pisell-resource-wall-countdown-left': string;
152
152
  'pisell-resource-wall-countdown-zero-overtime': string;
153
+ 'pisell-resource-wall-fullscreen-enter': string;
154
+ 'pisell-resource-wall-fullscreen-exit': string;
153
155
  'pisell-resource-wall-card-hero-available': string;
154
156
  'pisell-resource-wall-card-label-current': string;
155
157
  'pisell-resource-wall-card-label-next': string;
@@ -176,10 +176,12 @@ var zh_CN_default = {
176
176
  "pisell-resource-wall-available-card-color-label": "非占用色(浅色卡片)",
177
177
  "pisell-resource-wall-status-col-explain": "解释文案",
178
178
  "pisell-resource-wall-carousel-countdown-line": "第 {cur} / {tot} 页 · 每页 {sec} 秒",
179
- "pisell-resource-wall-countdown-overtime": "超时 {n} 分钟",
179
+ "pisell-resource-wall-countdown-overtime": "超时 {n}",
180
180
  "pisell-resource-wall-countdown-ending-now": "即将结束",
181
- "pisell-resource-wall-countdown-left": "剩余 {n} 分钟",
182
- "pisell-resource-wall-countdown-zero-overtime": "超时 0 分钟",
181
+ "pisell-resource-wall-countdown-left": "剩余 {n}",
182
+ "pisell-resource-wall-countdown-zero-overtime": "超时 0m",
183
+ "pisell-resource-wall-fullscreen-enter": "全屏",
184
+ "pisell-resource-wall-fullscreen-exit": "退出全屏",
183
185
  "pisell-resource-wall-card-hero-available": "空闲",
184
186
  "pisell-resource-wall-card-label-current": "当前",
185
187
  "pisell-resource-wall-card-label-next": "下一场",
@@ -150,6 +150,8 @@ declare const _default: {
150
150
  'pisell-resource-wall-countdown-ending-now': string;
151
151
  'pisell-resource-wall-countdown-left': string;
152
152
  'pisell-resource-wall-countdown-zero-overtime': string;
153
+ 'pisell-resource-wall-fullscreen-enter': string;
154
+ 'pisell-resource-wall-fullscreen-exit': string;
153
155
  'pisell-resource-wall-card-hero-available': string;
154
156
  'pisell-resource-wall-card-label-current': string;
155
157
  'pisell-resource-wall-card-label-next': string;
@@ -176,10 +176,12 @@ var zh_TW_default = {
176
176
  "pisell-resource-wall-available-card-color-label": "非占用色(淺色卡片)",
177
177
  "pisell-resource-wall-status-col-explain": "解釋文案",
178
178
  "pisell-resource-wall-carousel-countdown-line": "第 {cur} / {tot} 頁 · 每頁 {sec} 秒",
179
- "pisell-resource-wall-countdown-overtime": "逾時 {n} 分鐘",
179
+ "pisell-resource-wall-countdown-overtime": "逾時 {n}",
180
180
  "pisell-resource-wall-countdown-ending-now": "即將結束",
181
- "pisell-resource-wall-countdown-left": "剩餘 {n} 分鐘",
182
- "pisell-resource-wall-countdown-zero-overtime": "逾時 0 分鐘",
181
+ "pisell-resource-wall-countdown-left": "剩餘 {n}",
182
+ "pisell-resource-wall-countdown-zero-overtime": "逾時 0m",
183
+ "pisell-resource-wall-fullscreen-enter": "全屏",
184
+ "pisell-resource-wall-fullscreen-exit": "退出全屏",
183
185
  "pisell-resource-wall-card-hero-available": "空閒",
184
186
  "pisell-resource-wall-card-label-current": "目前",
185
187
  "pisell-resource-wall-card-label-next": "下一場",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/materials",
3
- "version": "6.11.35",
3
+ "version": "6.11.36",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -99,9 +99,9 @@
99
99
  "swiper": "^8.4.7",
100
100
  "antd-mobile": "^5.38.1",
101
101
  "vod-js-sdk-v6": "^1.4.11",
102
+ "@pisell/date-picker": "3.0.8",
102
103
  "@pisell/icon": "0.0.11",
103
- "@pisell/utils": "3.0.2",
104
- "@pisell/date-picker": "3.0.8"
104
+ "@pisell/utils": "3.0.2"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "react": "^18.0.0",