@pisell/materials 6.11.18 → 6.11.20

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 (74) 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/index.js +1 -1
  5. package/build/lowcode/meta.js +2 -2
  6. package/build/lowcode/preview.js +7 -7
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +13 -13
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +13 -13
  11. package/es/components/pisellFloorMapLayout/components/FigmaTableCard.js +12 -8
  12. package/es/components/pisellFloorMapLayout/components/FloorMapDataForm.js +4 -2
  13. package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.js +1 -1
  14. package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.less +4 -3
  15. package/es/components/pisellFloorMapLayout/components/FloorMapImageElement.js +4 -2
  16. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.js +16 -13
  17. package/es/components/pisellFloorMapLayout/components/ViewControls.js +8 -6
  18. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +2 -1
  19. package/es/components/pisellFloorMapLayout/locales-ja.d.ts +104 -0
  20. package/es/components/pisellFloorMapLayout/locales-ja.js +103 -0
  21. package/es/components/pisellFloorMapLayout/locales-pt.d.ts +104 -0
  22. package/es/components/pisellFloorMapLayout/locales-pt.js +103 -0
  23. package/es/components/pisellFloorMapLayout/locales.d.ts +314 -0
  24. package/es/components/pisellFloorMapLayout/locales.js +123 -4
  25. package/es/components/pisellFloorMapLayout/utils/floorMapDataRecordLabel.d.ts +2 -3
  26. package/es/components/pisellFloorMapLayout/utils/floorMapDataRecordLabel.js +3 -12
  27. package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +4 -3
  28. package/es/components/pisellRecordBoard/utils/recordBoardColumns.js +3 -2
  29. package/es/components/select-time/index.js +1 -0
  30. package/es/locales/en-US.d.ts +1 -0
  31. package/es/locales/en-US.js +1 -0
  32. package/es/locales/ja.d.ts +8 -0
  33. package/es/locales/ja.js +25 -7
  34. package/es/locales/pt.d.ts +8 -0
  35. package/es/locales/pt.js +21 -3
  36. package/es/locales/zh-CN.d.ts +1 -0
  37. package/es/locales/zh-CN.js +1 -0
  38. package/es/locales/zh-TW.d.ts +1 -0
  39. package/es/locales/zh-TW.js +1 -0
  40. package/lib/components/pisellFloorMapLayout/components/FigmaTableCard.js +13 -9
  41. package/lib/components/pisellFloorMapLayout/components/FloorMapDataForm.js +4 -2
  42. package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.js +5 -1
  43. package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.less +4 -3
  44. package/lib/components/pisellFloorMapLayout/components/FloorMapImageElement.js +4 -2
  45. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.js +24 -13
  46. package/lib/components/pisellFloorMapLayout/components/ViewControls.js +12 -6
  47. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +2 -1
  48. package/lib/components/pisellFloorMapLayout/locales-ja.d.ts +104 -0
  49. package/lib/components/pisellFloorMapLayout/locales-ja.js +124 -0
  50. package/lib/components/pisellFloorMapLayout/locales-pt.d.ts +104 -0
  51. package/lib/components/pisellFloorMapLayout/locales-pt.js +124 -0
  52. package/lib/components/pisellFloorMapLayout/locales.d.ts +314 -0
  53. package/lib/components/pisellFloorMapLayout/locales.js +132 -4
  54. package/lib/components/pisellFloorMapLayout/utils/floorMapDataRecordLabel.d.ts +2 -3
  55. package/lib/components/pisellFloorMapLayout/utils/floorMapDataRecordLabel.js +1 -7
  56. package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +6 -3
  57. package/lib/components/pisellRecordBoard/utils/recordBoardColumns.js +11 -1
  58. package/lib/components/select-time/index.js +1 -0
  59. package/lib/locales/en-US.d.ts +1 -0
  60. package/lib/locales/en-US.js +1 -0
  61. package/lib/locales/ja.d.ts +8 -0
  62. package/lib/locales/ja.js +22 -1
  63. package/lib/locales/pt.d.ts +8 -0
  64. package/lib/locales/pt.js +22 -1
  65. package/lib/locales/zh-CN.d.ts +1 -0
  66. package/lib/locales/zh-CN.js +1 -0
  67. package/lib/locales/zh-TW.d.ts +1 -0
  68. package/lib/locales/zh-TW.js +1 -0
  69. package/lowcode/floor-map-image-element/meta.ts +1 -1
  70. package/lowcode/floor-map-layout-provider/meta.ts +1 -1
  71. package/lowcode/pisell-floor-map-layout/meta.ts +1 -1
  72. package/lowcode/render-figma-style-round-table-card/meta.ts +1 -1
  73. package/lowcode/render-figma-style-table-card/meta.ts +1 -1
  74. package/package.json +3 -3
@@ -5,6 +5,10 @@
5
5
  import React from 'react';
6
6
  import { Avatar } from 'antd';
7
7
  import { UserOutlined, ClockCircleOutlined, TeamOutlined, AuditOutlined, FieldTimeOutlined, EnvironmentOutlined } from '@ant-design/icons';
8
+ import { locales } from '@pisell/utils';
9
+ var I18N_CARD = 'pisell-floor-map-layout.card-placeholder';
10
+ var I18N_FIGMA = 'pisell-floor-map-layout.figma-card';
11
+
8
12
  /** Figma 设计 token(Pisell 2.0 Component Library) */
9
13
  var FIGMA = {
10
14
  white: '#FFFFFF',
@@ -53,7 +57,7 @@ export function getFigmaTableCardFromMerged(item, dataSources) {
53
57
  var el = item._sceneElement;
54
58
  var binding = el === null || el === void 0 ? void 0 : el.dataBinding;
55
59
  var titleFromElement = (el === null || el === void 0 ? void 0 : el.name) != null && String(el.name).trim() ? String(el.name).trim() : '';
56
- var kindLabel = item.elementKind === 'roundTable' ? '圆桌' : '餐桌';
60
+ var kindLabel = locales.getText(item.elementKind === 'roundTable' ? "".concat(I18N_FIGMA, ".kind-round-table") : "".concat(I18N_FIGMA, ".kind-square-table"));
57
61
  var hasDataSource = Boolean((binding === null || binding === void 0 ? void 0 : binding.dataSourceKey) && String(binding.dataSourceKey).trim() !== '');
58
62
  var rid = (binding === null || binding === void 0 ? void 0 : binding.recordId) != null ? String(binding.recordId).trim() : '';
59
63
  var boundToData = Boolean(hasDataSource && rid !== '');
@@ -65,7 +69,7 @@ export function getFigmaTableCardFromMerged(item, dataSources) {
65
69
  if (!hasLiveRow) {
66
70
  /** 记录缺失或与「未选数据源」占位同一视觉(虚线 #bfbfbf),便于识别为待处理态 */
67
71
  var borderColor = '#bfbfbf';
68
- var hint = !hasDataSource || !rid ? hasDataSource ? '已选择数据源,请在侧栏选择数据行' : '未绑定数据行:请在侧栏选择数据源与记录' : rid.startsWith('new_') ? "\u65B0".concat(kindLabel, "\u5360\u4F4D\uFF0C\u53EF\u5728\u4FA7\u680F\u7ED1\u5B9A\u5177\u4F53\u8BB0\u5F55") : '未找到对应记录:请检查绑定或数据列表';
72
+ var hint = !hasDataSource || !rid ? hasDataSource ? locales.getText("".concat(I18N_CARD, ".hint-select-row")) : locales.getText("".concat(I18N_CARD, ".hint-bind-datasource")) : rid.startsWith('new_') ? locales.getText("".concat(I18N_CARD, ".hint-new-slot")).replace(/\{kind\}/g, kindLabel) : locales.getText("".concat(I18N_CARD, ".hint-row-not-found"));
69
73
  return {
70
74
  id: item.id,
71
75
  isNoDataPlaceholder: true,
@@ -165,7 +169,7 @@ function TableCardInfoRows(_ref3) {
165
169
  if (!hasCapacity && !hasArea) return null;
166
170
  return /*#__PURE__*/React.createElement(React.Fragment, null, hasCapacity && /*#__PURE__*/React.createElement(FigmaCardRow, {
167
171
  icon: /*#__PURE__*/React.createElement(TeamOutlined, null)
168
- }, /*#__PURE__*/React.createElement("span", null, "\u53EF\u5750 ", cardItem.capacity, " \u4EBA")), hasArea && /*#__PURE__*/React.createElement(FigmaCardRow, {
172
+ }, /*#__PURE__*/React.createElement("span", null, locales.getText("".concat(I18N_FIGMA, ".capacity-seats")).replace(/\{n\}/g, String(cardItem.capacity)))), hasArea && /*#__PURE__*/React.createElement(FigmaCardRow, {
169
173
  icon: /*#__PURE__*/React.createElement(EnvironmentOutlined, null)
170
174
  }, /*#__PURE__*/React.createElement("span", null, cardItem.area)));
171
175
  }
@@ -234,7 +238,7 @@ function TableCardContent(_ref4) {
234
238
  icon: /*#__PURE__*/React.createElement(ClockCircleOutlined, null)
235
239
  }, /*#__PURE__*/React.createElement("span", null, cardItem.reserveTime))), (status === 'dining' || status === 'waiting' || status === 'billed' || status === 'availableSoon') && cardItem.guests != null && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FigmaCardRow, {
236
240
  icon: /*#__PURE__*/React.createElement(TeamOutlined, null)
237
- }, /*#__PURE__*/React.createElement("span", null, cardItem.guests, " \u4EBA")), cardItem.dishes && /*#__PURE__*/React.createElement(FigmaCardRow, {
241
+ }, /*#__PURE__*/React.createElement("span", null, locales.getText("".concat(I18N_FIGMA, ".guests-count")).replace(/\{n\}/g, String(cardItem.guests)))), cardItem.dishes && /*#__PURE__*/React.createElement(FigmaCardRow, {
238
242
  icon: /*#__PURE__*/React.createElement(AuditOutlined, null)
239
243
  }, /*#__PURE__*/React.createElement("span", null, cardItem.dishes)), cardItem.duration && /*#__PURE__*/React.createElement(FigmaCardRow, {
240
244
  icon: /*#__PURE__*/React.createElement(FieldTimeOutlined, null)
@@ -247,7 +251,7 @@ function TableCardContent(_ref4) {
247
251
  function renderTableKindNoDataPlaceholder(cardItem, shape) {
248
252
  var _cardItem$placeholder, _cardItem$placeholder2, _cardItem$placeholder3;
249
253
  var borderColor = (_cardItem$placeholder = cardItem.placeholderBorderColor) !== null && _cardItem$placeholder !== void 0 ? _cardItem$placeholder : '#bfbfbf';
250
- var title = (_cardItem$placeholder2 = cardItem.placeholderTitle) !== null && _cardItem$placeholder2 !== void 0 ? _cardItem$placeholder2 : '餐桌';
254
+ var title = (_cardItem$placeholder2 = cardItem.placeholderTitle) !== null && _cardItem$placeholder2 !== void 0 ? _cardItem$placeholder2 : locales.getText("".concat(I18N_FIGMA, ".default-table"));
251
255
  var hint = (_cardItem$placeholder3 = cardItem.placeholderHint) !== null && _cardItem$placeholder3 !== void 0 ? _cardItem$placeholder3 : '';
252
256
  return /*#__PURE__*/React.createElement("div", {
253
257
  style: {
@@ -382,7 +386,7 @@ export function renderFigmaStyleRoundTableCard(cardItem) {
382
386
  style: {
383
387
  marginRight: 4
384
388
  }
385
- }), "\u53EF\u5750 ", cardItem.capacity, " \u4EBA"), cardItem.area != null && cardItem.area !== '' && /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(EnvironmentOutlined, {
389
+ }), locales.getText("".concat(I18N_FIGMA, ".capacity-seats")).replace(/\{n\}/g, String(cardItem.capacity))), cardItem.area != null && cardItem.area !== '' && /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(EnvironmentOutlined, {
386
390
  style: {
387
391
  marginRight: 4
388
392
  }
@@ -406,13 +410,13 @@ export function renderFigmaStyleRoundTableCard(cardItem) {
406
410
  color: FIGMA.gray700,
407
411
  marginTop: 2
408
412
  }
409
- }, cardItem.guests, " \u4EBA"), (cardItem.capacity != null || cardItem.area != null && cardItem.area !== '') && /*#__PURE__*/React.createElement("div", {
413
+ }, locales.getText("".concat(I18N_FIGMA, ".guests-count")).replace(/\{n\}/g, String(cardItem.guests))), (cardItem.capacity != null || cardItem.area != null && cardItem.area !== '') && /*#__PURE__*/React.createElement("div", {
410
414
  style: {
411
415
  fontSize: 12,
412
416
  color: FIGMA.gray700,
413
417
  marginTop: 2
414
418
  }
415
- }, cardItem.capacity != null && "\u53EF\u5750 ".concat(cardItem.capacity, " \u4EBA"), cardItem.capacity != null && cardItem.area && ' · ', cardItem.area))));
419
+ }, cardItem.capacity != null && locales.getText("".concat(I18N_FIGMA, ".capacity-seats")).replace(/\{n\}/g, String(cardItem.capacity)), cardItem.capacity != null && cardItem.area && ' · ', cardItem.area))));
416
420
  }
417
421
 
418
422
  /** 返回用于 renderItemByKind.table 的渲染函数(方桌) */
@@ -17,8 +17,10 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
17
  import React, { useState, useCallback, useEffect } from 'react';
18
18
  import classNames from 'classnames';
19
19
  import { Form, Input, InputNumber, Select, Button } from 'antd';
20
+ import { locales } from '@pisell/utils';
20
21
  import "./FloorMapDataForm.less";
21
22
  var PREFIX = 'pisell-floor-map-layout';
23
+ var I18N_DF = 'pisell-floor-map-layout.data-form';
22
24
  function renderFormControl(col, value) {
23
25
  var _col$type, _col$options;
24
26
  var type = (_col$type = col.type) !== null && _col$type !== void 0 ? _col$type : 'string';
@@ -97,7 +99,7 @@ export function FloorMapDataForm(props) {
97
99
  className: classNames("".concat(PREFIX, "-data-form"), className)
98
100
  }, /*#__PURE__*/React.createElement("p", {
99
101
  className: "".concat(PREFIX, "-data-form-empty")
100
- }, "\u65E0\u989D\u5916\u5B57\u6BB5\u53EF\u7F16\u8F91"));
102
+ }, locales.getText("".concat(I18N_DF, ".empty"))));
101
103
  }
102
104
  return /*#__PURE__*/React.createElement("div", {
103
105
  className: classNames("".concat(PREFIX, "-data-form"), className)
@@ -126,6 +128,6 @@ export function FloorMapDataForm(props) {
126
128
  htmlType: "submit",
127
129
  loading: saving,
128
130
  disabled: !changed
129
- }, "\u4FDD\u5B58\u8BB0\u5F55"))));
131
+ }, locales.getText("".concat(I18N_DF, ".save-record"))))));
130
132
  }
131
133
  export default FloorMapDataForm;
@@ -92,7 +92,7 @@ export function FloorMapEditTopBar(props) {
92
92
  }, /*#__PURE__*/React.createElement(FullscreenOutlined, null)) : null) : null);
93
93
  }
94
94
  return /*#__PURE__*/React.createElement("div", {
95
- className: classNames("".concat(PREFIX, "-edit-top-bar"), className),
95
+ className: classNames("".concat(PREFIX, "-edit-top-bar"), "".concat(PREFIX, "-edit-top-bar--full-chrome"), className),
96
96
  role: "toolbar",
97
97
  "aria-label": topBarLabels.aria
98
98
  }, /*#__PURE__*/React.createElement("div", {
@@ -129,12 +129,13 @@
129
129
  }
130
130
 
131
131
  /**
132
- * 只读顶栏(`edit-top-bar` + `read-canvas-tabs-bar` 并列)与编辑态 compact
133
- * 与左侧 Tab 同一浅灰底,去掉右侧白底与竖线分割。
132
+ * 只读顶栏(`edit-top-bar` + `read-canvas-tabs-bar` 并列)、编辑态 compact
133
+ * 以及全屏/locked 时的 full 顶栏:与左侧 Tab 同一浅灰底,去掉右侧大块白底与竖线分割。
134
134
  */
135
135
 
136
136
  &.pisell-floor-map-layout-read-canvas-tabs-bar,
137
- &--compact {
137
+ &--compact,
138
+ &--full-chrome {
138
139
  background: rgba(0, 0, 0, 0.04);
139
140
 
140
141
  .pisell-floor-map-layout-edit-top-bar-actions {
@@ -8,7 +8,9 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
8
  * 平面图「图片图元」内层展示:支持 URL、object-fit 铺满;无地址或加载失败时占位
9
9
  */
10
10
  import React, { useEffect, useState } from 'react';
11
+ import { locales } from '@pisell/utils';
11
12
  var PREFIX = 'pisell-floor-map-layout';
13
+ var I18N_IMG = 'pisell-floor-map-layout.image-element';
12
14
  export function FloorMapImageElement(props) {
13
15
  var imageUrl = props.imageUrl,
14
16
  name = props.name;
@@ -20,7 +22,7 @@ export function FloorMapImageElement(props) {
20
22
  useEffect(function () {
21
23
  setBroken(false);
22
24
  }, [trimmed]);
23
- var label = name != null && String(name).trim() ? String(name).trim() : '图片图元';
25
+ var label = name != null && String(name).trim() ? String(name).trim() : locales.getText("".concat(I18N_IMG, ".default-name"));
24
26
  if (!trimmed || broken) {
25
27
  return /*#__PURE__*/React.createElement("div", {
26
28
  className: "".concat(PREFIX, "-image-element-placeholder"),
@@ -48,7 +50,7 @@ export function FloorMapImageElement(props) {
48
50
  color: '#595959',
49
51
  marginBottom: 4
50
52
  }
51
- }, label), /*#__PURE__*/React.createElement("span", null, !trimmed ? '在侧栏填写图片地址;可调层级置于桌位下方作底图' : '图片加载失败,请检查地址'));
53
+ }, label), /*#__PURE__*/React.createElement("span", null, !trimmed ? locales.getText("".concat(I18N_IMG, ".hint-no-url")) : locales.getText("".concat(I18N_IMG, ".hint-load-fail"))));
52
54
  }
53
55
  return /*#__PURE__*/React.createElement("img", {
54
56
  src: trimmed,
@@ -21,8 +21,11 @@ import { FLOOR_MAP_IMAGE_ELEMENT_KIND, FLOOR_MAP_STAGE_ELEMENT_KIND } from "../t
21
21
  import { resolveDataBindingPolicy } from "../utils/floorMapElementKindUtils";
22
22
  import { FLOOR_MAP_PALETTE_DRAG_MIME } from "../utils/floorMapDropUtils";
23
23
  import { formatDataRecordOptionLabel } from "../utils/floorMapDataRecordLabel";
24
+ import { locales } from '@pisell/utils';
24
25
  import "./FloorMapToolbar.less";
25
26
  var PREFIX = 'pisell-floor-map-layout';
27
+ var I18N_TB = 'pisell-floor-map-layout.toolbar';
28
+ var I18N_EP_DS = 'pisell-floor-map-layout.edit-panel.ph-data-source';
26
29
  var DEFAULT_PLACEMENT_SIZE = {
27
30
  width: 180,
28
31
  height: 120
@@ -115,7 +118,7 @@ export function FloorMapToolbar(props) {
115
118
  });
116
119
  return sorted.length ? sorted : [{
117
120
  id: '_uncat',
118
- label: '图元',
121
+ label: locales.getText("".concat(I18N_TB, ".category-fallback")),
119
122
  order: 0
120
123
  }];
121
124
  }, [config.elementKindCategories]);
@@ -233,7 +236,7 @@ export function FloorMapToolbar(props) {
233
236
  e.dataTransfer.setData(FLOOR_MAP_PALETTE_DRAG_MIME, JSON.stringify(paletteDragPayload));
234
237
  e.dataTransfer.effectAllowed = 'copy';
235
238
  },
236
- title: "\u70B9\u51FB\u540E\u753B\u5E03\u843D\u70B9\uFF0C\u6216\u62D6\u62FD\u5230\u753B\u5E03\u751F\u6210\u300C".concat(k.label, "\u300D")
239
+ title: locales.getText("".concat(I18N_TB, ".palette-card-title")).replace(/\{name\}/g, k.label)
237
240
  }, /*#__PURE__*/React.createElement("div", {
238
241
  className: "".concat(PREFIX, "-toolbar-preview-cell"),
239
242
  style: {
@@ -261,8 +264,8 @@ export function FloorMapToolbar(props) {
261
264
  className: "".concat(PREFIX, "-toolbar-record-pick")
262
265
  }, /*#__PURE__*/React.createElement("div", {
263
266
  className: "".concat(PREFIX, "-toolbar-record-pick-label")
264
- }, "\u6570\u636E\u7ED1\u5B9A\uFF08\u53EF\u9009\uFF09"), /*#__PURE__*/React.createElement(Select, {
265
- placeholder: "\u9009\u62E9\u6570\u636E\u6E90",
267
+ }, locales.getText("".concat(I18N_TB, ".data-binding-optional"))), /*#__PURE__*/React.createElement(Select, {
268
+ placeholder: locales.getText(I18N_EP_DS),
266
269
  allowClear: true,
267
270
  value: placeMode.type === 'scene' ? placeMode.dataSourceKey : undefined,
268
271
  options: allowedKeys.map(function (key) {
@@ -285,18 +288,18 @@ export function FloorMapToolbar(props) {
285
288
  if (!key) {
286
289
  return /*#__PURE__*/React.createElement("div", {
287
290
  className: "".concat(PREFIX, "-toolbar-record-pick-hint")
288
- }, "\u9009\u62E9\u6570\u636E\u6E90\u540E\u53EF\u9009\u7ED1\u5B9A\u6570\u636E\u884C\uFF0C\u6216\u76F4\u63A5\u843D\u70B9\u5360\u4F4D\u3002");
291
+ }, locales.getText("".concat(I18N_TB, ".hint-after-select-ds")));
289
292
  }
290
293
  var unplaced = getUnplacedRecordsForKey(key, dataSources, sceneElements);
291
294
  if (unplaced.length === 0) {
292
295
  return /*#__PURE__*/React.createElement("div", {
293
296
  className: "".concat(PREFIX, "-toolbar-record-pick-hint")
294
- }, "\u5F53\u524D\u6570\u636E\u6E90\u65E0\u672A\u7ED1\u5B9A\u8BB0\u5F55\uFF0C\u6216\u5217\u8868\u4E3A\u7A7A\uFF1B\u53EF\u76F4\u63A5\u5728\u753B\u5E03\u843D\u70B9\u5360\u4F4D\u3002");
297
+ }, locales.getText("".concat(I18N_TB, ".hint-no-unplaced-rows")));
295
298
  }
296
299
  var recordValue = mode !== null && mode !== void 0 && mode.recordIds && mode.recordIds.length > 0 ? mode.recordIds : mode !== null && mode !== void 0 && mode.recordId ? [mode.recordId] : undefined;
297
300
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Select, {
298
301
  mode: "multiple",
299
- placeholder: "\u9009\u62E9\u8981\u5C55\u793A\u7684\u8BB0\u5F55\uFF08\u53EF\u9009\uFF0C\u53EF\u591A\u9009\uFF09",
302
+ placeholder: locales.getText("".concat(I18N_TB, ".ph-select-records")),
300
303
  allowClear: true,
301
304
  maxTagCount: "responsive",
302
305
  value: recordValue,
@@ -316,18 +319,18 @@ export function FloorMapToolbar(props) {
316
319
  }
317
320
  }), /*#__PURE__*/React.createElement("div", {
318
321
  className: "".concat(PREFIX, "-toolbar-record-pick-hint")
319
- }, "\u53EF\u9009\u591A\u6761\uFF0C\u5728\u753B\u5E03\u70B9\u51FB\u4E00\u6B21\u5C06\u6309\u9636\u68AF\u504F\u79FB\u843D\u591A\u6761\uFF1B\u7559\u7A7A\u5219\u5148\u5360\u4F4D\uFF0C\u7A0D\u540E\u5728\u4FA7\u680F\u7ED1\u5B9A\u3002"));
322
+ }, locales.getText("".concat(I18N_TB, ".hint-multi-drop"))));
320
323
  }()), allowedKeys.length === 0 && /*#__PURE__*/React.createElement("div", {
321
324
  className: "".concat(PREFIX, "-toolbar-record-hint")
322
- }, "\u65E0\u53EF\u7528\u6570\u636E\u6E90"), /*#__PURE__*/React.createElement("button", {
325
+ }, locales.getText("".concat(I18N_TB, ".no-data-sources"))), /*#__PURE__*/React.createElement("button", {
323
326
  type: "button",
324
327
  className: "".concat(PREFIX, "-toolbar-btn cancel-inline"),
325
328
  onClick: cancelPlaceMode
326
- }, "\u53D6\u6D88\u65B0\u5EFA")), isActive && policy === 'none' && /*#__PURE__*/React.createElement("button", {
329
+ }, locales.getText("".concat(I18N_TB, ".cancel-place")))), isActive && policy === 'none' && /*#__PURE__*/React.createElement("button", {
327
330
  type: "button",
328
331
  className: "".concat(PREFIX, "-toolbar-btn cancel-inline"),
329
332
  onClick: cancelPlaceMode
330
- }, "\u53D6\u6D88\u65B0\u5EFA"));
333
+ }, locales.getText("".concat(I18N_TB, ".cancel-place"))));
331
334
  };
332
335
  return /*#__PURE__*/React.createElement("div", {
333
336
  className: classNames("".concat(PREFIX, "-toolbar"), "".concat(PREFIX, "-toolbar-sidebar"), className)
@@ -354,13 +357,13 @@ export function FloorMapToolbar(props) {
354
357
  }, layoutDirty ? /*#__PURE__*/React.createElement("span", {
355
358
  className: "".concat(PREFIX, "-toolbar-dirty-hint"),
356
359
  role: "status"
357
- }, "\u5E03\u5C40\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u70B9\u51FB\u300C\u4FDD\u5B58\u300D\u6301\u4E45\u5316\u3002") : null, saveError && /*#__PURE__*/React.createElement("span", {
360
+ }, locales.getText("".concat(I18N_TB, ".layout-dirty-hint"))) : null, saveError && /*#__PURE__*/React.createElement("span", {
358
361
  className: "".concat(PREFIX, "-toolbar-error")
359
362
  }, typeof saveError === 'string' ? saveError : saveError === null || saveError === void 0 ? void 0 : saveError.message), /*#__PURE__*/React.createElement("button", {
360
363
  type: "button",
361
364
  className: classNames("".concat(PREFIX, "-toolbar-btn"), 'primary', _defineProperty({}, "".concat(PREFIX, "-toolbar-save-dirty"), layoutDirty)),
362
365
  disabled: saving,
363
366
  onClick: onSave
364
- }, saving ? '保存中...' : '保存')));
367
+ }, saving ? locales.getText("".concat(I18N_TB, ".saving")) : locales.getText("".concat(I18N_TB, ".save")))));
365
368
  }
366
369
  export default FloorMapToolbar;
@@ -8,8 +8,10 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
8
8
  import React from 'react';
9
9
  import classNames from 'classnames';
10
10
  import { MinusOutlined, PlusOutlined, FullscreenOutlined, FullscreenExitOutlined, BorderInnerOutlined } from '@ant-design/icons';
11
+ import { locales } from '@pisell/utils';
11
12
  import "./ViewControls.less";
12
13
  var PREFIX = 'pisell-floor-map-layout';
14
+ var I18N_VC = 'pisell-floor-map-layout.view-controls';
13
15
 
14
16
  /** 从 react-zoom-pan-pinch 拿到的控制 API(由主组件传入) */
15
17
 
@@ -42,7 +44,7 @@ export function ViewControls(props) {
42
44
  onClick: function onClick() {
43
45
  return api.zoomOut();
44
46
  },
45
- "aria-label": "\u7F29\u5C0F"
47
+ "aria-label": locales.getText("".concat(I18N_VC, ".zoom-out-aria"))
46
48
  }, /*#__PURE__*/React.createElement(MinusOutlined, null)), /*#__PURE__*/React.createElement("span", {
47
49
  className: "".concat(PREFIX, "-view-controls-zoom-stepper-value")
48
50
  }, scalePercent, "%"), /*#__PURE__*/React.createElement("button", {
@@ -51,7 +53,7 @@ export function ViewControls(props) {
51
53
  onClick: function onClick() {
52
54
  return api.zoomIn();
53
55
  },
54
- "aria-label": "\u653E\u5927"
56
+ "aria-label": locales.getText("".concat(I18N_VC, ".zoom-in-aria"))
55
57
  }, /*#__PURE__*/React.createElement(PlusOutlined, null))), showToolsCapsule && /*#__PURE__*/React.createElement("div", {
56
58
  className: "".concat(PREFIX, "-view-controls-tools-capsule")
57
59
  }, showReset && /*#__PURE__*/React.createElement("button", {
@@ -60,14 +62,14 @@ export function ViewControls(props) {
60
62
  onClick: function onClick() {
61
63
  return api.resetTransform();
62
64
  },
63
- "aria-label": "\u590D\u4F4D"
65
+ "aria-label": locales.getText("".concat(I18N_VC, ".reset-aria"))
64
66
  }, "\u27F2"), showFitBounds && api.fitBounds && /*#__PURE__*/React.createElement("button", {
65
67
  type: "button",
66
68
  className: "".concat(PREFIX, "-view-controls-tool-btn"),
67
69
  onClick: function onClick() {
68
70
  return api.fitBounds();
69
71
  },
70
- "aria-label": "\u533A\u57DF\u5B9A\u4F4D"
72
+ "aria-label": locales.getText("".concat(I18N_VC, ".fit-bounds-aria"))
71
73
  }, "\u229E"), showGridToggle && /*#__PURE__*/React.createElement("button", {
72
74
  type: "button",
73
75
  className: classNames("".concat(PREFIX, "-view-controls-tool-btn"), _defineProperty({}, "".concat(PREFIX, "-view-controls-tool-btn--active"), mapGridVisible)),
@@ -75,14 +77,14 @@ export function ViewControls(props) {
75
77
  return onToggleMapGrid();
76
78
  },
77
79
  "aria-pressed": mapGridVisible,
78
- "aria-label": mapGridVisible ? '隐藏网格' : '显示网格'
80
+ "aria-label": locales.getText(mapGridVisible ? "".concat(I18N_VC, ".grid-hide-aria") : "".concat(I18N_VC, ".grid-show-aria"))
79
81
  }, /*#__PURE__*/React.createElement(BorderInnerOutlined, null)), showFullscreen && api.toggleFullscreen && /*#__PURE__*/React.createElement("button", {
80
82
  type: "button",
81
83
  className: "".concat(PREFIX, "-view-controls-tool-btn"),
82
84
  onClick: function onClick() {
83
85
  return api.toggleFullscreen();
84
86
  },
85
- "aria-label": isFullscreen ? '退出全屏' : '全屏'
87
+ "aria-label": locales.getText(isFullscreen ? "".concat(I18N_VC, ".fullscreen-exit-aria") : "".concat(I18N_VC, ".fullscreen-aria"))
86
88
  }, isFullscreen ? /*#__PURE__*/React.createElement(FullscreenExitOutlined, null) : /*#__PURE__*/React.createElement(FullscreenOutlined, null))));
87
89
  }
88
90
  export default ViewControls;
@@ -36,6 +36,7 @@ var IMAGE_PLACE_DEFAULT = {
36
36
  width: 400,
37
37
  height: 240
38
38
  };
39
+ var I18N_PLACEMENT_FALLBACK_IMAGE = 'pisell-floor-map-layout.placement.fallback-image-name';
39
40
  var GRID_VIS_STORAGE_PREFIX = 'pisell-floor-map-layout.grid-visible';
40
41
  function getGridVisStorageKey(canvasId) {
41
42
  return "".concat(GRID_VIS_STORAGE_PREFIX, ":").concat(canvasId);
@@ -411,7 +412,7 @@ export function useFloorMapEditState(params) {
411
412
  }
412
413
  var placementName = function (_kindConfig$defaultPr, _kindConfig$defaultPr2) {
413
414
  if (isStage) return STAGE_DECO_DEFAULT.name;
414
- if (isImage) return '底图';
415
+ if (isImage) return locales.getText(I18N_PLACEMENT_FALLBACK_IMAGE);
415
416
  var db = dataBinding;
416
417
  var rid = recordIdsToPlace[0];
417
418
  if (db && rid) {
@@ -0,0 +1,104 @@
1
+ /**
2
+ * PisellFloorMapLayout — 日本語
3
+ */
4
+ declare const _default: {
5
+ 'pisell-floor-map-layout.loading': string;
6
+ 'pisell-floor-map-layout.read-canvas-tabs.aria': string;
7
+ 'pisell-floor-map-layout.edit-top-bar.aria': string;
8
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-enter-aria': string;
9
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-enter-title': string;
10
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-exit-aria': string;
11
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-exit-title': string;
12
+ 'pisell-floor-map-layout.edit-top-bar.unsaved': string;
13
+ 'pisell-floor-map-layout.edit-top-bar.save': string;
14
+ 'pisell-floor-map-layout.edit-top-bar.saving': string;
15
+ 'pisell-floor-map-layout.canvas-tabs.empty': string;
16
+ 'pisell-floor-map-layout.canvas-tabs.add': string;
17
+ 'pisell-floor-map-layout.canvas-tabs.add-title': string;
18
+ 'pisell-floor-map-layout.canvas-tabs.hint': string;
19
+ 'pisell-floor-map-layout.canvas-tabs.rename-aria': string;
20
+ 'pisell-floor-map-layout.canvas-tabs.remove-aria': string;
21
+ 'pisell-floor-map-layout.canvas-tabs.rename-title': string;
22
+ 'pisell-floor-map-layout.canvas-tabs.rename-button-aria': string;
23
+ 'pisell-floor-map-layout.canvas-tabs.rename-button-title': string;
24
+ 'pisell-floor-map-layout.canvas-tabs.default-new-canvas-name': string;
25
+ 'pisell-floor-map-layout.canvas-tabs.rename-modal-title': string;
26
+ 'pisell-floor-map-layout.canvas-tabs.rename-modal-ok': string;
27
+ 'pisell-floor-map-layout.canvas-tabs.rename-modal-cancel': string;
28
+ 'pisell-floor-map-layout.edit-panel.element-props': string;
29
+ 'pisell-floor-map-layout.edit-panel.close-aria': string;
30
+ 'pisell-floor-map-layout.edit-panel.hint-apply': string;
31
+ 'pisell-floor-map-layout.edit-panel.hint-save': string;
32
+ 'pisell-floor-map-layout.edit-panel.section-layout': string;
33
+ 'pisell-floor-map-layout.edit-panel.lock-on': string;
34
+ 'pisell-floor-map-layout.edit-panel.lock-off': string;
35
+ 'pisell-floor-map-layout.edit-panel.label-x': string;
36
+ 'pisell-floor-map-layout.edit-panel.label-y': string;
37
+ 'pisell-floor-map-layout.edit-panel.label-z': string;
38
+ 'pisell-floor-map-layout.edit-panel.label-width': string;
39
+ 'pisell-floor-map-layout.edit-panel.label-height': string;
40
+ 'pisell-floor-map-layout.edit-panel.label-name': string;
41
+ 'pisell-floor-map-layout.edit-panel.label-name-stage': string;
42
+ 'pisell-floor-map-layout.edit-panel.ph-name-stage': string;
43
+ 'pisell-floor-map-layout.edit-panel.ph-name': string;
44
+ 'pisell-floor-map-layout.edit-panel.label-image-url': string;
45
+ 'pisell-floor-map-layout.edit-panel.extra-image-url': string;
46
+ 'pisell-floor-map-layout.edit-panel.ph-https': string;
47
+ 'pisell-floor-map-layout.edit-panel.label-canvas': string;
48
+ 'pisell-floor-map-layout.edit-panel.label-element-kind': string;
49
+ 'pisell-floor-map-layout.edit-panel.hint-kind-binding-cleared': string;
50
+ 'pisell-floor-map-layout.edit-panel.apply': string;
51
+ 'pisell-floor-map-layout.edit-panel.data-binding': string;
52
+ 'pisell-floor-map-layout.edit-panel.data-binding-note': string;
53
+ 'pisell-floor-map-layout.edit-panel.label-data-source': string;
54
+ 'pisell-floor-map-layout.edit-panel.ph-data-source': string;
55
+ 'pisell-floor-map-layout.edit-panel.label-pick-row': string;
56
+ 'pisell-floor-map-layout.edit-panel.ph-pick-row': string;
57
+ 'pisell-floor-map-layout.edit-panel.ph-no-rows': string;
58
+ 'pisell-floor-map-layout.edit-panel.hint-unbound': string;
59
+ 'pisell-floor-map-layout.edit-panel.record-title': string;
60
+ 'pisell-floor-map-layout.edit-panel.pop-title': string;
61
+ 'pisell-floor-map-layout.edit-panel.pop-desc': string;
62
+ 'pisell-floor-map-layout.edit-panel.btn-delete': string;
63
+ 'pisell-floor-map-layout.edit-panel.btn-cancel': string;
64
+ 'pisell-floor-map-layout.edit-panel.btn-ok-delete': string;
65
+ 'pisell-floor-map-layout.toolbar.category-fallback': string;
66
+ 'pisell-floor-map-layout.toolbar.palette-card-title': string;
67
+ 'pisell-floor-map-layout.toolbar.data-binding-optional': string;
68
+ 'pisell-floor-map-layout.toolbar.hint-after-select-ds': string;
69
+ 'pisell-floor-map-layout.toolbar.hint-no-unplaced-rows': string;
70
+ 'pisell-floor-map-layout.toolbar.ph-select-records': string;
71
+ 'pisell-floor-map-layout.toolbar.hint-multi-drop': string;
72
+ 'pisell-floor-map-layout.toolbar.no-data-sources': string;
73
+ 'pisell-floor-map-layout.toolbar.cancel-place': string;
74
+ 'pisell-floor-map-layout.toolbar.layout-dirty-hint': string;
75
+ 'pisell-floor-map-layout.toolbar.save': string;
76
+ 'pisell-floor-map-layout.toolbar.saving': string;
77
+ 'pisell-floor-map-layout.view-controls.zoom-out-aria': string;
78
+ 'pisell-floor-map-layout.view-controls.zoom-in-aria': string;
79
+ 'pisell-floor-map-layout.view-controls.reset-aria': string;
80
+ 'pisell-floor-map-layout.view-controls.fit-bounds-aria': string;
81
+ 'pisell-floor-map-layout.view-controls.grid-hide-aria': string;
82
+ 'pisell-floor-map-layout.view-controls.grid-show-aria': string;
83
+ 'pisell-floor-map-layout.view-controls.fullscreen-aria': string;
84
+ 'pisell-floor-map-layout.view-controls.fullscreen-exit-aria': string;
85
+ 'pisell-floor-map-layout.image-element.default-name': string;
86
+ 'pisell-floor-map-layout.placement.fallback-image-name': string;
87
+ 'pisell-floor-map-layout.image-element.hint-no-url': string;
88
+ 'pisell-floor-map-layout.image-element.hint-load-fail': string;
89
+ 'pisell-floor-map-layout.data-form.empty': string;
90
+ 'pisell-floor-map-layout.data-form.save-record': string;
91
+ 'pisell-floor-map-layout.binding-error.required-row': string;
92
+ 'pisell-floor-map-layout.binding-error.ds-not-allowed': string;
93
+ 'pisell-floor-map-layout.binding-error.missing-field': string;
94
+ 'pisell-floor-map-layout.card-placeholder.hint-select-row': string;
95
+ 'pisell-floor-map-layout.card-placeholder.hint-bind-datasource': string;
96
+ 'pisell-floor-map-layout.card-placeholder.hint-new-slot': string;
97
+ 'pisell-floor-map-layout.card-placeholder.hint-row-not-found': string;
98
+ 'pisell-floor-map-layout.figma-card.kind-round-table': string;
99
+ 'pisell-floor-map-layout.figma-card.kind-square-table': string;
100
+ 'pisell-floor-map-layout.figma-card.default-table': string;
101
+ 'pisell-floor-map-layout.figma-card.capacity-seats': string;
102
+ 'pisell-floor-map-layout.figma-card.guests-count': string;
103
+ };
104
+ export default _default;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * PisellFloorMapLayout — 日本語
3
+ */
4
+ export default {
5
+ 'pisell-floor-map-layout.loading': '読み込み中…',
6
+ 'pisell-floor-map-layout.read-canvas-tabs.aria': '平面図キャンバスを切り替え',
7
+ 'pisell-floor-map-layout.edit-top-bar.aria': '平面図編集ツールバー',
8
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-enter-aria': '全画面',
9
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-enter-title': '全画面(保存・表示範囲に合わせるなどを含む上部バー)',
10
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-exit-aria': '全画面を終了',
11
+ 'pisell-floor-map-layout.edit-top-bar.fullscreen-exit-title': '全画面を終了',
12
+ 'pisell-floor-map-layout.edit-top-bar.unsaved': '未保存',
13
+ 'pisell-floor-map-layout.edit-top-bar.save': '保存',
14
+ 'pisell-floor-map-layout.edit-top-bar.saving': '保存中…',
15
+ 'pisell-floor-map-layout.canvas-tabs.empty': 'キャンバスがありません',
16
+ 'pisell-floor-map-layout.canvas-tabs.add': '+ フロアを追加',
17
+ 'pisell-floor-map-layout.canvas-tabs.add-title': 'フロアを追加',
18
+ 'pisell-floor-map-layout.canvas-tabs.hint': '右側の「フロアを追加」からキャンバスを作成してください',
19
+ 'pisell-floor-map-layout.canvas-tabs.rename-aria': '名前を変更',
20
+ 'pisell-floor-map-layout.canvas-tabs.remove-aria': '削除',
21
+ 'pisell-floor-map-layout.canvas-tabs.rename-title': 'ダブルクリックで名前変更。タッチ端末はタブ右の鉛筆アイコンから',
22
+ 'pisell-floor-map-layout.canvas-tabs.rename-button-aria': 'キャンバスの名前を変更',
23
+ 'pisell-floor-map-layout.canvas-tabs.rename-button-title': '名前を変更',
24
+ 'pisell-floor-map-layout.canvas-tabs.default-new-canvas-name': '新しいフロア',
25
+ 'pisell-floor-map-layout.canvas-tabs.rename-modal-title': 'キャンバスの名前を変更',
26
+ 'pisell-floor-map-layout.canvas-tabs.rename-modal-ok': 'OK',
27
+ 'pisell-floor-map-layout.canvas-tabs.rename-modal-cancel': 'キャンセル',
28
+ 'pisell-floor-map-layout.edit-panel.element-props': '要素のプロパティ',
29
+ 'pisell-floor-map-layout.edit-panel.close-aria': '閉じる',
30
+ 'pisell-floor-map-layout.edit-panel.hint-apply': '位置・サイズが変更されました。「適用」でキャンバスに反映してください。',
31
+ 'pisell-floor-map-layout.edit-panel.hint-save': '下書きはまだ保存されていません。「編集完了」で保存してください。',
32
+ 'pisell-floor-map-layout.edit-panel.section-layout': '位置 · 重なり順 · サイズ',
33
+ 'pisell-floor-map-layout.edit-panel.lock-on': 'ロック中:キャンバスのドラッグ・リサイズは無効。クリックで解除',
34
+ 'pisell-floor-map-layout.edit-panel.lock-off': 'ロックするとキャンバスのドラッグとサイズ変更ができなくなります',
35
+ 'pisell-floor-map-layout.edit-panel.label-x': 'X',
36
+ 'pisell-floor-map-layout.edit-panel.label-y': 'Y',
37
+ 'pisell-floor-map-layout.edit-panel.label-z': '重なり順',
38
+ 'pisell-floor-map-layout.edit-panel.label-width': '幅',
39
+ 'pisell-floor-map-layout.edit-panel.label-height': '高さ',
40
+ 'pisell-floor-map-layout.edit-panel.label-name': '名前',
41
+ 'pisell-floor-map-layout.edit-panel.label-name-stage': '表示名(キャンバス上)',
42
+ 'pisell-floor-map-layout.edit-panel.ph-name-stage': '例:ステージ、DJ ブース、ダンスフロア',
43
+ 'pisell-floor-map-layout.edit-panel.ph-name': '要素名',
44
+ 'pisell-floor-map-layout.edit-panel.label-image-url': '画像 URL',
45
+ 'pisell-floor-map-layout.edit-panel.extra-image-url': 'ネットワーク上の画像 URL を指定。重なり順を下げるとテーブルの下に配置できます。',
46
+ 'pisell-floor-map-layout.edit-panel.ph-https': 'https://...',
47
+ 'pisell-floor-map-layout.edit-panel.label-canvas': 'キャンバス',
48
+ 'pisell-floor-map-layout.edit-panel.label-element-kind': '要素タイプ',
49
+ 'pisell-floor-map-layout.edit-panel.hint-kind-binding-cleared': '新しいタイプでは以前のデータ連携が使えないため、連携を解除しました。',
50
+ 'pisell-floor-map-layout.edit-panel.apply': '適用',
51
+ 'pisell-floor-map-layout.edit-panel.data-binding': 'データ連携',
52
+ 'pisell-floor-map-layout.edit-panel.data-binding-note': 'データソースまたは行の変更は下書きに即反映されます。確定は上部の「保存」から。',
53
+ 'pisell-floor-map-layout.edit-panel.label-data-source': 'データソース',
54
+ 'pisell-floor-map-layout.edit-panel.ph-data-source': 'データソースを選択',
55
+ 'pisell-floor-map-layout.edit-panel.label-pick-row': '行を選択',
56
+ 'pisell-floor-map-layout.edit-panel.ph-pick-row': 'データ表の 1 行を紐付け',
57
+ 'pisell-floor-map-layout.edit-panel.ph-no-rows': 'このデータソースに利用可能な行がありません',
58
+ 'pisell-floor-map-layout.edit-panel.hint-unbound': '未連携のときは空欄のまま、またはクリア。連携後は「データレコード」の項目を編集できます。',
59
+ 'pisell-floor-map-layout.edit-panel.record-title': 'データレコード',
60
+ 'pisell-floor-map-layout.edit-panel.pop-title': 'この要素を削除しますか?',
61
+ 'pisell-floor-map-layout.edit-panel.pop-desc': '平面図の下書きから削除されます。確定は上部の「保存」から行ってください。',
62
+ 'pisell-floor-map-layout.edit-panel.btn-delete': '削除',
63
+ 'pisell-floor-map-layout.edit-panel.btn-cancel': 'キャンセル',
64
+ 'pisell-floor-map-layout.edit-panel.btn-ok-delete': '削除',
65
+ 'pisell-floor-map-layout.toolbar.category-fallback': '要素',
66
+ 'pisell-floor-map-layout.toolbar.palette-card-title': 'クリックでキャンバスに配置、またはドラッグで「{name}」を追加',
67
+ 'pisell-floor-map-layout.toolbar.data-binding-optional': 'データ連携(任意)',
68
+ 'pisell-floor-map-layout.toolbar.hint-after-select-ds': 'データソースを選んだら、行を紐付けるか、そのままプレースホルダーを置けます。',
69
+ 'pisell-floor-map-layout.toolbar.hint-no-unplaced-rows': '未配置の行がないか、一覧が空です。プレースホルダーのみキャンバスに置けます。',
70
+ 'pisell-floor-map-layout.toolbar.ph-select-records': '表示するレコードを選択(任意・複数可)',
71
+ 'pisell-floor-map-layout.toolbar.hint-multi-drop': '複数選択すると 1 回のクリックでずらして複数配置できます。空欄のままならプレースホルダーにし、後からサイドバーで紐付けできます。',
72
+ 'pisell-floor-map-layout.toolbar.no-data-sources': '利用できるデータソースがありません',
73
+ 'pisell-floor-map-layout.toolbar.cancel-place': 'キャンセル',
74
+ 'pisell-floor-map-layout.toolbar.layout-dirty-hint': 'レイアウトが変更されました。「保存」で確定してください。',
75
+ 'pisell-floor-map-layout.toolbar.save': '保存',
76
+ 'pisell-floor-map-layout.toolbar.saving': '保存中…',
77
+ 'pisell-floor-map-layout.view-controls.zoom-out-aria': '縮小',
78
+ 'pisell-floor-map-layout.view-controls.zoom-in-aria': '拡大',
79
+ 'pisell-floor-map-layout.view-controls.reset-aria': '表示をリセット',
80
+ 'pisell-floor-map-layout.view-controls.fit-bounds-aria': '全体を表示',
81
+ 'pisell-floor-map-layout.view-controls.grid-hide-aria': 'グリッドを非表示',
82
+ 'pisell-floor-map-layout.view-controls.grid-show-aria': 'グリッドを表示',
83
+ 'pisell-floor-map-layout.view-controls.fullscreen-aria': '全画面',
84
+ 'pisell-floor-map-layout.view-controls.fullscreen-exit-aria': '全画面を終了',
85
+ 'pisell-floor-map-layout.image-element.default-name': '画像要素',
86
+ 'pisell-floor-map-layout.placement.fallback-image-name': '背景',
87
+ 'pisell-floor-map-layout.image-element.hint-no-url': 'サイドバーで画像 URL を入力。重なり順を下げるとテーブル下の背景にできます。',
88
+ 'pisell-floor-map-layout.image-element.hint-load-fail': '画像の読み込みに失敗しました。URL を確認してください。',
89
+ 'pisell-floor-map-layout.data-form.empty': '編集できる追加フィールドはありません',
90
+ 'pisell-floor-map-layout.data-form.save-record': 'レコードを保存',
91
+ 'pisell-floor-map-layout.binding-error.required-row': 'この要素にはデータ行の連携が必要です。',
92
+ 'pisell-floor-map-layout.binding-error.ds-not-allowed': 'データソース「{key}」はこの要素タイプでは使用できません。',
93
+ 'pisell-floor-map-layout.binding-error.missing-field': '行に必須フィールドがありません:{field}',
94
+ 'pisell-floor-map-layout.card-placeholder.hint-select-row': 'データソースは選択済みです。サイドバーで行を選択してください。',
95
+ 'pisell-floor-map-layout.card-placeholder.hint-bind-datasource': '行が未連携です。サイドバーでデータソースとレコードを選択してください。',
96
+ 'pisell-floor-map-layout.card-placeholder.hint-new-slot': '新しい{kind}のプレースホルダーです。サイドバーでレコードを紐付けられます。',
97
+ 'pisell-floor-map-layout.card-placeholder.hint-row-not-found': 'レコードが見つかりません。連携とデータ一覧を確認してください。',
98
+ 'pisell-floor-map-layout.figma-card.kind-round-table': '丸テーブル',
99
+ 'pisell-floor-map-layout.figma-card.kind-square-table': 'テーブル',
100
+ 'pisell-floor-map-layout.figma-card.default-table': 'テーブル',
101
+ 'pisell-floor-map-layout.figma-card.capacity-seats': '着席 {n} 名',
102
+ 'pisell-floor-map-layout.figma-card.guests-count': '{n} 名'
103
+ };