@univerjs/sheets-ui 1.0.0-alpha.0 → 1.0.0-alpha.1

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 (87) hide show
  1. package/lib/cjs/index.js +163 -35
  2. package/lib/cjs/locale/ar-SA.js +9 -2
  3. package/lib/cjs/locale/ca-ES.js +9 -2
  4. package/lib/cjs/locale/de-DE.js +9 -2
  5. package/lib/cjs/locale/en-US.js +9 -2
  6. package/lib/cjs/locale/es-ES.js +9 -2
  7. package/lib/cjs/locale/fa-IR.js +9 -2
  8. package/lib/cjs/locale/fr-FR.js +9 -2
  9. package/lib/cjs/locale/id-ID.js +9 -2
  10. package/lib/cjs/locale/it-IT.js +9 -2
  11. package/lib/cjs/locale/ja-JP.js +9 -2
  12. package/lib/cjs/locale/ko-KR.js +9 -2
  13. package/lib/cjs/locale/pl-PL.js +9 -2
  14. package/lib/cjs/locale/pt-BR.js +9 -2
  15. package/lib/cjs/locale/ru-RU.js +9 -2
  16. package/lib/cjs/locale/sk-SK.js +9 -2
  17. package/lib/cjs/locale/vi-VN.js +9 -2
  18. package/lib/cjs/locale/zh-CN.js +9 -2
  19. package/lib/cjs/locale/zh-HK.js +9 -2
  20. package/lib/cjs/locale/zh-TW.js +9 -2
  21. package/lib/es/index.js +164 -37
  22. package/lib/es/locale/ar-SA.js +9 -2
  23. package/lib/es/locale/ca-ES.js +9 -2
  24. package/lib/es/locale/de-DE.js +9 -2
  25. package/lib/es/locale/en-US.js +9 -2
  26. package/lib/es/locale/es-ES.js +9 -2
  27. package/lib/es/locale/fa-IR.js +9 -2
  28. package/lib/es/locale/fr-FR.js +9 -2
  29. package/lib/es/locale/id-ID.js +9 -2
  30. package/lib/es/locale/it-IT.js +9 -2
  31. package/lib/es/locale/ja-JP.js +9 -2
  32. package/lib/es/locale/ko-KR.js +9 -2
  33. package/lib/es/locale/pl-PL.js +9 -2
  34. package/lib/es/locale/pt-BR.js +9 -2
  35. package/lib/es/locale/ru-RU.js +9 -2
  36. package/lib/es/locale/sk-SK.js +9 -2
  37. package/lib/es/locale/vi-VN.js +9 -2
  38. package/lib/es/locale/zh-CN.js +9 -2
  39. package/lib/es/locale/zh-HK.js +9 -2
  40. package/lib/es/locale/zh-TW.js +9 -2
  41. package/lib/index.js +164 -37
  42. package/lib/locale/ar-SA.js +9 -2
  43. package/lib/locale/ca-ES.js +9 -2
  44. package/lib/locale/de-DE.js +9 -2
  45. package/lib/locale/en-US.js +9 -2
  46. package/lib/locale/es-ES.js +9 -2
  47. package/lib/locale/fa-IR.js +9 -2
  48. package/lib/locale/fr-FR.js +9 -2
  49. package/lib/locale/id-ID.js +9 -2
  50. package/lib/locale/it-IT.js +9 -2
  51. package/lib/locale/ja-JP.js +9 -2
  52. package/lib/locale/ko-KR.js +9 -2
  53. package/lib/locale/pl-PL.js +9 -2
  54. package/lib/locale/pt-BR.js +9 -2
  55. package/lib/locale/ru-RU.js +9 -2
  56. package/lib/locale/sk-SK.js +9 -2
  57. package/lib/locale/vi-VN.js +9 -2
  58. package/lib/locale/zh-CN.js +9 -2
  59. package/lib/locale/zh-HK.js +9 -2
  60. package/lib/locale/zh-TW.js +9 -2
  61. package/lib/types/commands/commands/clipboard.command.d.ts +1 -0
  62. package/lib/types/controllers/clipboard/clipboard.controller.d.ts +4 -2
  63. package/lib/types/controllers/editor/data-sync.controller.d.ts +5 -2
  64. package/lib/types/index.d.ts +1 -1
  65. package/lib/types/locale/en-US.d.ts +10 -1
  66. package/lib/types/services/clipboard/clipboard.service.d.ts +8 -2
  67. package/lib/umd/index.js +8 -8
  68. package/lib/umd/locale/ar-SA.js +1 -1
  69. package/lib/umd/locale/ca-ES.js +1 -1
  70. package/lib/umd/locale/de-DE.js +1 -1
  71. package/lib/umd/locale/en-US.js +1 -1
  72. package/lib/umd/locale/es-ES.js +1 -1
  73. package/lib/umd/locale/fa-IR.js +1 -1
  74. package/lib/umd/locale/fr-FR.js +1 -1
  75. package/lib/umd/locale/id-ID.js +1 -1
  76. package/lib/umd/locale/it-IT.js +1 -1
  77. package/lib/umd/locale/ja-JP.js +1 -1
  78. package/lib/umd/locale/ko-KR.js +1 -1
  79. package/lib/umd/locale/pl-PL.js +1 -1
  80. package/lib/umd/locale/pt-BR.js +1 -1
  81. package/lib/umd/locale/ru-RU.js +1 -1
  82. package/lib/umd/locale/sk-SK.js +1 -1
  83. package/lib/umd/locale/vi-VN.js +1 -1
  84. package/lib/umd/locale/zh-CN.js +1 -1
  85. package/lib/umd/locale/zh-HK.js +1 -1
  86. package/lib/umd/locale/zh-TW.js +1 -1
  87. package/package.json +14 -14
package/lib/cjs/index.js CHANGED
@@ -4064,6 +4064,7 @@ const IMAGE_MIME_TO_EXTENSION = {
4064
4064
  [_univerjs_ui.FILE__WEBP_CLIPBOARD_MIME_TYPE]: "webp",
4065
4065
  [_univerjs_ui.FILE__BMP_CLIPBOARD_MIME_TYPE]: "bmp"
4066
4066
  };
4067
+ const FORMULA_CLIPBOARD_MIME_TYPE = "web application/x-univer-sheets-formula";
4067
4068
  /**
4068
4069
  * This service provide hooks for sheet features to supplement content or modify behavior of clipboard.
4069
4070
  */
@@ -4129,6 +4130,7 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4129
4130
  return (_h$onBeforeCopy = h.onBeforeCopy) === null || _h$onBeforeCopy === void 0 ? void 0 : _h$onBeforeCopy.call(h, workbookId, worksheetId, range, copyType);
4130
4131
  });
4131
4132
  const copyContent = this._generateCopyContent(workbookId, worksheetId, range, hooks, copyHookType);
4133
+ if (copyContent && copyType === "COPY") copyContent.formulaClipboardPayload = this._generateFormulaClipboardPayload(workbookId, worksheetId, range, copyContent, hooks);
4132
4134
  hooks.forEach((h) => {
4133
4135
  var _h$onAfterCopy;
4134
4136
  return (_h$onAfterCopy = h.onAfterCopy) === null || _h$onAfterCopy === void 0 ? void 0 : _h$onAfterCopy.call(h);
@@ -4149,7 +4151,7 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4149
4151
  copyHookType
4150
4152
  });
4151
4153
  if (!copyContent) return false;
4152
- const { html, plain, matrixFragment, copyId, discreteRange } = copyContent;
4154
+ const { html, plain, matrixFragment, copyId, discreteRange, formulaClipboardPayload } = copyContent;
4153
4155
  this._copyContentCache.set(copyId, {
4154
4156
  unitId: workbook.getUnitId(),
4155
4157
  subUnitId: worksheet.getSheetId(),
@@ -4157,7 +4159,7 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4157
4159
  matrix: matrixFragment,
4158
4160
  copyType
4159
4161
  });
4160
- await this._clipboardInterfaceService.write(plain, html);
4162
+ await this._clipboardInterfaceService.write(plain, html, formulaClipboardPayload ? { [FORMULA_CLIPBOARD_MIME_TYPE]: formulaClipboardPayload } : void 0);
4161
4163
  this._markSelectionService.removeAllShapes();
4162
4164
  const style = createCopyPasteSelectionStyle(this._themeService);
4163
4165
  this._copyMarkId = this._markSelectionService.addShape({
@@ -4173,6 +4175,7 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4173
4175
  const types = item.types;
4174
4176
  const text = types.indexOf(_univerjs_ui.PLAIN_TEXT_CLIPBOARD_MIME_TYPE) !== -1 ? await item.getType(_univerjs_ui.PLAIN_TEXT_CLIPBOARD_MIME_TYPE).then((blob) => blob && blob.text()) : "";
4175
4177
  const html = types.indexOf(_univerjs_ui.HTML_CLIPBOARD_MIME_TYPE) !== -1 ? await item.getType(_univerjs_ui.HTML_CLIPBOARD_MIME_TYPE).then((blob) => blob && blob.text()) : "";
4178
+ const formulaClipboardPayload = types.indexOf("web application/x-univer-sheets-formula") !== -1 ? await item.getType(FORMULA_CLIPBOARD_MIME_TYPE).then((blob) => blob && blob.text()).catch(() => "") : "";
4176
4179
  const imageIndex = types.findIndex((type) => _univerjs_ui.imageMimeTypeSet.has(type));
4177
4180
  const shouldUseHTMLPaste = imageIndex === -1 || !htmlContainsImage(html);
4178
4181
  if (html && shouldUseHTMLPaste) {
@@ -4181,7 +4184,7 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4181
4184
  title: this._localeService.t("sheets-ui.clipboard.shortCutNotify.title"),
4182
4185
  content: this._localeService.t("sheets-ui.clipboard.shortCutNotify.useShortCutInstead")
4183
4186
  });
4184
- return this._pasteHTML(html, pasteType);
4187
+ return this._pasteHTML(html, pasteType, formulaClipboardPayload);
4185
4188
  }
4186
4189
  if (imageIndex !== -1) {
4187
4190
  const imageMimeType = types[imageIndex];
@@ -4199,10 +4202,10 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4199
4202
  async pasteByCopyId(copyId, pasteType = PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE) {
4200
4203
  return this._pasteInternal(copyId, pasteType);
4201
4204
  }
4202
- async legacyPaste(html, text, files) {
4205
+ async legacyPaste(html, text, files, formulaClipboardPayload) {
4203
4206
  const isFromExcel = htmlIsFromExcel(html !== null && html !== void 0 ? html : "");
4204
4207
  if (files && !isFromExcel) return this._pasteFiles(files, PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE);
4205
- else if (html) return this._pasteHTML(html, PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE);
4208
+ else if (html) return this._pasteHTML(html, PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE, formulaClipboardPayload);
4206
4209
  else if (text) if (/[\n\t]/.test(text)) return this._pasteHTML(convertTextToTable(text), PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE);
4207
4210
  else return this._pastePlainText(text, PREDEFINED_HOOK_NAME_PASTE.DEFAULT_PASTE);
4208
4211
  else return this._pasteUnrecognized();
@@ -4309,6 +4312,40 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4309
4312
  discreteRange
4310
4313
  };
4311
4314
  }
4315
+ _generateFormulaClipboardPayload(unitId, subUnitId, range, copyContent, hooks) {
4316
+ if (this._hasFilteredRows(unitId, subUnitId, range, hooks)) return;
4317
+ const { startRow, startColumn, endRow, endColumn } = range;
4318
+ const rowCount = endRow - startRow + 1;
4319
+ const columnCount = endColumn - startColumn + 1;
4320
+ const formulaOnlyHook = hooks.find((hook) => hook.id === PREDEFINED_HOOK_NAME_COPY.SPECIAL_COPY_FORMULA_ONLY);
4321
+ const formulas = [];
4322
+ for (let row = 0; row < rowCount; row++) for (let column = 0; column < columnCount; column++) {
4323
+ var _formulaOnlyHook$onCo, _copyContent$matrixFr;
4324
+ const formula = (formulaOnlyHook === null || formulaOnlyHook === void 0 || (_formulaOnlyHook$onCo = formulaOnlyHook.onCopyCellContent) === null || _formulaOnlyHook$onCo === void 0 ? void 0 : _formulaOnlyHook$onCo.call(formulaOnlyHook, startRow + row, startColumn + column)) || ((_copyContent$matrixFr = copyContent.matrixFragment.getValue(row, column)) === null || _copyContent$matrixFr === void 0 ? void 0 : _copyContent$matrixFr.f);
4325
+ if (typeof formula === "string" && (0, _univerjs_core.isFormulaString)(formula)) formulas.push({
4326
+ row,
4327
+ column,
4328
+ f: formula
4329
+ });
4330
+ }
4331
+ if (!formulas.length) return;
4332
+ return JSON.stringify({
4333
+ rowCount,
4334
+ columnCount,
4335
+ origin: {
4336
+ row: startRow,
4337
+ column: startColumn
4338
+ },
4339
+ formulas
4340
+ });
4341
+ }
4342
+ _hasFilteredRows(unitId, subUnitId, range, hooks) {
4343
+ return hooks.some((hook) => {
4344
+ var _hook$getFilteredOutR;
4345
+ const rows = (_hook$getFilteredOutR = hook.getFilteredOutRows) === null || _hook$getFilteredOutR === void 0 ? void 0 : _hook$getFilteredOutR.call(hook, unitId, subUnitId, range);
4346
+ return !!(rows === null || rows === void 0 ? void 0 : rows.length);
4347
+ });
4348
+ }
4312
4349
  _notifyClipboardHook() {
4313
4350
  this._clipboardHooks$.next(this._clipboardHooks);
4314
4351
  }
@@ -4375,15 +4412,49 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4375
4412
  return (_h$onPasteUnrecognize = h.onPasteUnrecognized) === null || _h$onPasteUnrecognize === void 0 ? void 0 : _h$onPasteUnrecognize.call(h, payload);
4376
4413
  });
4377
4414
  }
4378
- async _pasteHTML(html, pasteType) {
4415
+ async _pasteHTML(html, pasteType, formulaClipboardPayload) {
4379
4416
  const copyId = extractId(html);
4380
4417
  if (copyId && this._copyContentCache.get(copyId)) return this._pasteInternal(copyId, pasteType);
4381
- return this._pasteExternal(html, pasteType);
4418
+ return this._pasteExternal(html, pasteType, formulaClipboardPayload);
4382
4419
  }
4383
- async _pasteExternal(html, pasteType) {
4384
- var _this$_univerInstance;
4420
+ async _pasteExternal(html, pasteType, formulaClipboardPayload) {
4385
4421
  const { rowProperties, colProperties, cellMatrix } = this._htmlToUSM.convert(html);
4386
4422
  if (!cellMatrix) return false;
4423
+ const sourceRange = formulaClipboardPayload ? this._applyFormulaClipboardPayload(cellMatrix, formulaClipboardPayload) : void 0;
4424
+ return this._pasteExternalData({
4425
+ rowProperties,
4426
+ colProperties,
4427
+ cellMatrix
4428
+ }, pasteType, sourceRange);
4429
+ }
4430
+ _applyFormulaClipboardPayload(cellMatrix, text) {
4431
+ let payload;
4432
+ try {
4433
+ payload = JSON.parse(text);
4434
+ } catch {
4435
+ return;
4436
+ }
4437
+ if (!payload || !payload.origin || !Array.isArray(payload.formulas) || payload.rowCount <= 0 || payload.columnCount <= 0) return;
4438
+ cellMatrix.setValue(payload.rowCount - 1, payload.columnCount - 1, {
4439
+ ...(0, _univerjs_core.getEmptyCell)(),
4440
+ ...cellMatrix.getValue(payload.rowCount - 1, payload.columnCount - 1)
4441
+ });
4442
+ payload.formulas.forEach((formula) => {
4443
+ if ((0, _univerjs_core.isFormulaString)(formula.f) && formula.row >= 0 && formula.row < payload.rowCount && formula.column >= 0 && formula.column < payload.columnCount) cellMatrix.setValue(formula.row, formula.column, {
4444
+ ...(0, _univerjs_core.getEmptyCell)(),
4445
+ ...cellMatrix.getValue(formula.row, formula.column),
4446
+ f: formula.f
4447
+ });
4448
+ });
4449
+ return {
4450
+ rows: Array.from({ length: payload.rowCount }, (_, index) => payload.origin.row + index),
4451
+ cols: Array.from({ length: payload.columnCount }, (_, index) => payload.origin.column + index)
4452
+ };
4453
+ }
4454
+ _pasteExternalData(data, pasteType, sourceRange) {
4455
+ var _this$_univerInstance;
4456
+ const { rowProperties, colProperties, cellMatrix } = data;
4457
+ if (!cellMatrix) return false;
4387
4458
  const pasteTarget = this._getPastedRange(cellMatrix);
4388
4459
  if (!pasteTarget) return false;
4389
4460
  const worksheet = (_this$_univerInstance = this._univerInstanceService.getUniverSheetInstance(pasteTarget.unitId)) === null || _this$_univerInstance === void 0 ? void 0 : _this$_univerInstance.getSheetBySheetId(pasteTarget.subUnitId);
@@ -4397,11 +4468,18 @@ let SheetClipboardService = class SheetClipboardService extends _univerjs_core.D
4397
4468
  return false;
4398
4469
  }
4399
4470
  }
4471
+ const source = sourceRange ? {
4472
+ range: sourceRange,
4473
+ unitId: pasteTarget.unitId,
4474
+ subUnitId: pasteTarget.subUnitId,
4475
+ copyType: "COPY",
4476
+ copyId: ""
4477
+ } : void 0;
4400
4478
  return this._pasteUSM({
4401
4479
  rowProperties,
4402
4480
  colProperties,
4403
4481
  cellMatrix
4404
- }, pasteTarget, pasteType);
4482
+ }, pasteTarget, pasteType, source);
4405
4483
  }
4406
4484
  async _pasteInternal(copyId, pasteType) {
4407
4485
  var _this$_univerInstance2, _this$_univerInstance3;
@@ -5033,8 +5111,8 @@ const SheetPasteShortKeyCommand = {
5033
5111
  type: _univerjs_core.CommandType.COMMAND,
5034
5112
  handler: async (accessor, params) => {
5035
5113
  const clipboardService = accessor.get(ISheetClipboardService);
5036
- const { htmlContent, textContent, files } = params;
5037
- clipboardService.legacyPaste(htmlContent, textContent, files);
5114
+ const { htmlContent, textContent, files, formulaClipboardPayload } = params;
5115
+ clipboardService.legacyPaste(htmlContent, textContent, files, formulaClipboardPayload);
5038
5116
  return true;
5039
5117
  }
5040
5118
  };
@@ -9390,6 +9468,7 @@ let SheetCellEditorResizeService = class SheetCellEditorResizeService extends _u
9390
9468
  if (documentDataModel == null) return;
9391
9469
  const documentSkeleton = this._getEditorSkeleton();
9392
9470
  if (!documentSkeleton) return;
9471
+ documentSkeleton.resetInitialWidth();
9393
9472
  const info = this._predictingSize(position, canvasOffset, documentSkeleton, documentLayoutObject, scaleX, scaleY);
9394
9473
  if (!info || info.actualWidth <= 0) return;
9395
9474
  let { actualWidth, actualHeight } = info;
@@ -10814,6 +10893,9 @@ let EditingRenderController = class EditingRenderController extends _univerjs_co
10814
10893
  this._contextService.setContextValue(_univerjs_core.FOCUSING_EDITOR_BUT_HIDDEN, false);
10815
10894
  this._contextService.setContextValue(_univerjs_core.FOCUSING_FX_BAR_EDITOR, false);
10816
10895
  this._cellEditorManagerService.setState({ show: param.visible });
10896
+ const formulaBarEditor = this._editorService.getEditor(_univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY);
10897
+ formulaBarEditor === null || formulaBarEditor === void 0 || formulaBarEditor.setSelectionRanges([], false);
10898
+ formulaBarEditor === null || formulaBarEditor === void 0 || formulaBarEditor.blur();
10817
10899
  const editorObject = this._getEditorObject();
10818
10900
  editorObject === null || editorObject === void 0 || (_editorObject$scene$g = editorObject.scene.getViewport(_univerjs_docs_ui.VIEWPORT_KEY.VIEW_MAIN)) === null || _editorObject$scene$g === void 0 || _editorObject$scene$g.scrollToViewportPos({
10819
10901
  viewportScrollX: 0,
@@ -11412,7 +11494,7 @@ const shouldRemoveShapeIds = [
11412
11494
  _univerjs_sheets.MoveColsMutation.id
11413
11495
  ];
11414
11496
  let SheetClipboardController = class SheetClipboardController extends _univerjs_core.RxDisposable {
11415
- constructor(_injector, _instanceService, _renderManagerService, _commandService, _contextService, _configService, _sheetClipboardService, _messageService, _localService, _uiPartsService) {
11497
+ constructor(_injector, _instanceService, _renderManagerService, _commandService, _contextService, _configService, _sheetClipboardService, _clipboardInterfaceService, _messageService, _localService, _uiPartsService) {
11416
11498
  super();
11417
11499
  this._injector = _injector;
11418
11500
  this._instanceService = _instanceService;
@@ -11421,6 +11503,7 @@ let SheetClipboardController = class SheetClipboardController extends _univerjs_
11421
11503
  this._contextService = _contextService;
11422
11504
  this._configService = _configService;
11423
11505
  this._sheetClipboardService = _sheetClipboardService;
11506
+ this._clipboardInterfaceService = _clipboardInterfaceService;
11424
11507
  this._messageService = _messageService;
11425
11508
  this._localService = _localService;
11426
11509
  this._uiPartsService = _uiPartsService;
@@ -11437,7 +11520,7 @@ let SheetClipboardController = class SheetClipboardController extends _univerjs_
11437
11520
  _pasteWithDoc() {
11438
11521
  var _this$_renderManagerS;
11439
11522
  const sheetPasteShortKeyFn = (docSelectionRenderService) => {
11440
- docSelectionRenderService.onPaste$.pipe((0, rxjs.takeUntil)(this.dispose$)).subscribe((config) => {
11523
+ docSelectionRenderService.onPaste$.pipe((0, rxjs.takeUntil)(this.dispose$)).subscribe(async (config) => {
11441
11524
  var _clipboardEvent$clipb, _clipboardEvent$clipb2;
11442
11525
  if (!whenSheetEditorFocused(this._contextService)) return;
11443
11526
  config.event.preventDefault();
@@ -11445,10 +11528,12 @@ let SheetClipboardController = class SheetClipboardController extends _univerjs_
11445
11528
  const htmlContent = (_clipboardEvent$clipb = clipboardEvent.clipboardData) === null || _clipboardEvent$clipb === void 0 ? void 0 : _clipboardEvent$clipb.getData("text/html");
11446
11529
  const textContent = (_clipboardEvent$clipb2 = clipboardEvent.clipboardData) === null || _clipboardEvent$clipb2 === void 0 ? void 0 : _clipboardEvent$clipb2.getData("text/plain");
11447
11530
  const files = this._resolveClipboardFiles(clipboardEvent.clipboardData);
11531
+ const formulaClipboardPayload = await this._readFormulaClipboardPayload();
11448
11532
  this._commandService.executeCommand(SheetPasteShortKeyCommand.id, {
11449
11533
  htmlContent,
11450
11534
  textContent,
11451
- files
11535
+ files,
11536
+ formulaClipboardPayload
11452
11537
  });
11453
11538
  });
11454
11539
  docSelectionRenderService === null || docSelectionRenderService === void 0 || docSelectionRenderService.onKeydown$.subscribe((event) => {
@@ -11470,6 +11555,16 @@ let SheetClipboardController = class SheetClipboardController extends _univerjs_
11470
11555
  const files = Array.from(clipboardData.items).map((item) => item.kind === "file" ? item.getAsFile() : void 0).filter(Boolean);
11471
11556
  return files.length > 0 ? files : void 0;
11472
11557
  }
11558
+ async _readFormulaClipboardPayload() {
11559
+ if (!this._clipboardInterfaceService.supportClipboard) return;
11560
+ try {
11561
+ const item = (await this._clipboardInterfaceService.read()).find((clipboardItem) => clipboardItem.types.includes(FORMULA_CLIPBOARD_MIME_TYPE));
11562
+ if (!item) return;
11563
+ return (await item.getType(FORMULA_CLIPBOARD_MIME_TYPE)).text();
11564
+ } catch {
11565
+ return;
11566
+ }
11567
+ }
11473
11568
  _init() {
11474
11569
  [
11475
11570
  SheetCopyCommand,
@@ -11924,9 +12019,10 @@ SheetClipboardController = __decorate([
11924
12019
  __decorateParam(4, _univerjs_core.IContextService),
11925
12020
  __decorateParam(5, _univerjs_core.IConfigService),
11926
12021
  __decorateParam(6, ISheetClipboardService),
11927
- __decorateParam(7, _univerjs_ui.IMessageService),
11928
- __decorateParam(8, (0, _univerjs_core.Inject)(_univerjs_core.LocaleService)),
11929
- __decorateParam(9, _univerjs_ui.IUIPartsService)
12022
+ __decorateParam(7, _univerjs_ui.IClipboardInterfaceService),
12023
+ __decorateParam(8, _univerjs_ui.IMessageService),
12024
+ __decorateParam(9, (0, _univerjs_core.Inject)(_univerjs_core.LocaleService)),
12025
+ __decorateParam(10, _univerjs_ui.IUIPartsService)
11930
12026
  ], SheetClipboardController);
11931
12027
 
11932
12028
  //#endregion
@@ -15202,7 +15298,7 @@ let SheetRenderController = class SheetRenderController extends _univerjs_core.R
15202
15298
  this._renderFrameTags = {};
15203
15299
  }));
15204
15300
  this.disposeWithMe(engine.endFrame$.subscribe(() => {
15205
- if (this._renderFrameTimeMetric && Object.keys(this._renderFrameTimeMetric).filter((key) => key.startsWith(_univerjs_engine_render.SHEET_EXTENSION_PREFIX)).length > 0) this._afterRenderMetric$.next({
15301
+ if (this._renderFrameTimeMetric && Object.keys(this._renderFrameTimeMetric).some((key) => key.startsWith(_univerjs_engine_render.SHEET_EXTENSION_PREFIX))) this._afterRenderMetric$.next({
15206
15302
  frameTimeMetric: this._renderFrameTimeMetric,
15207
15303
  tags: this._renderFrameTags
15208
15304
  });
@@ -19700,7 +19796,7 @@ function DefinedNameOverlay({ search, isInputEvent }) {
19700
19796
  const unitId = univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_SHEET).getUnitId();
19701
19797
  const getDefinedNameMap = () => {
19702
19798
  const definedNameMap = definedNamesService.getDefinedNameMap(unitId);
19703
- if (definedNameMap) return Array.from(Object.values(definedNameMap));
19799
+ if (definedNameMap) return Object.values(definedNameMap);
19704
19800
  return [];
19705
19801
  };
19706
19802
  const [definedNames, setDefinedNames] = (0, react.useState)(getDefinedNameMap());
@@ -19815,7 +19911,7 @@ function DefinedName({ disable }) {
19815
19911
  const inputRef = (0, react.useRef)(null);
19816
19912
  const getDefinedNameMap = () => {
19817
19913
  const definedNameMap = definedNamesService.getDefinedNameMap(unitId);
19818
- if (definedNameMap) return Array.from(Object.values(definedNameMap));
19914
+ if (definedNameMap) return Object.values(definedNameMap);
19819
19915
  return [];
19820
19916
  };
19821
19917
  const focusDefinedName = async (definedName) => {
@@ -21773,11 +21869,11 @@ const SheetBar = () => {
21773
21869
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SheetBarButton, {
21774
21870
  disabled: leftScrollState,
21775
21871
  onClick: handleScrollLeft,
21776
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_icons.MoreIcon, { className: "univer-rotate-180" })
21872
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_icons.MoreLeftIcon, {})
21777
21873
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SheetBarButton, {
21778
21874
  disabled: rightScrollState,
21779
21875
  onClick: handleScrollRight,
21780
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_icons.MoreIcon, {})
21876
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_icons.MoreRightIcon, {})
21781
21877
  })]
21782
21878
  })
21783
21879
  ]
@@ -22675,7 +22771,7 @@ const useHighlightRange = (ranges = []) => {
22675
22771
  //#endregion
22676
22772
  //#region package.json
22677
22773
  var name = "@univerjs/sheets-ui";
22678
- var version = "1.0.0-alpha.0";
22774
+ var version = "1.0.0-alpha.1";
22679
22775
 
22680
22776
  //#endregion
22681
22777
  //#region src/controllers/cell-alert.controller.ts
@@ -24495,7 +24591,7 @@ const DefinedNameContainer = () => {
24495
24591
  const getDefinedNameMap = () => {
24496
24592
  if (!unitId) return [];
24497
24593
  const definedNameMap = definedNamesService.getDefinedNameMap(unitId);
24498
- if (definedNameMap) return Array.from(Object.values(definedNameMap));
24594
+ if (definedNameMap) return Object.values(definedNameMap);
24499
24595
  return [];
24500
24596
  };
24501
24597
  const [editState, setEditState] = (0, react.useState)(false);
@@ -26151,7 +26247,7 @@ const formulaEditorStyle = {
26151
26247
  }
26152
26248
  };
26153
26249
  let EditorDataSyncController = class EditorDataSyncController extends _univerjs_core.Disposable {
26154
- constructor(_univerInstanceService, _renderManagerService, _editorBridgeService, _commandService, _rangeProtectionRuleModel, _worksheetProtectionRuleModel, _formulaEditorController, _formulaEditorManagerService) {
26250
+ constructor(_univerInstanceService, _renderManagerService, _editorBridgeService, _commandService, _rangeProtectionRuleModel, _worksheetProtectionRuleModel, _formulaEditorController, _formulaEditorManagerService, _contextService) {
26155
26251
  super();
26156
26252
  this._univerInstanceService = _univerInstanceService;
26157
26253
  this._renderManagerService = _renderManagerService;
@@ -26161,11 +26257,13 @@ let EditorDataSyncController = class EditorDataSyncController extends _univerjs_
26161
26257
  this._worksheetProtectionRuleModel = _worksheetProtectionRuleModel;
26162
26258
  this._formulaEditorController = _formulaEditorController;
26163
26259
  this._formulaEditorManagerService = _formulaEditorManagerService;
26260
+ this._contextService = _contextService;
26164
26261
  this._initialize();
26165
26262
  }
26166
26263
  _initialize() {
26167
26264
  this._syncFormulaEditorContent();
26168
26265
  this._commandExecutedListener();
26266
+ this._syncFormulaRefRenderStyleOnFocusChange();
26169
26267
  }
26170
26268
  _getEditorViewModel(unitId) {
26171
26269
  var _this$_renderManagerS;
@@ -26251,6 +26349,7 @@ let EditorDataSyncController = class EditorDataSyncController extends _univerjs_
26251
26349
  unitId,
26252
26350
  syncer: parmas.unitId
26253
26351
  });
26352
+ this._checkAndSetRenderStyleConfig(docDataModel);
26254
26353
  docViewModel.reset(docDataModel);
26255
26354
  skeleton.calculate();
26256
26355
  if (INCLUDE_LIST.includes(unitId)) {
@@ -26282,27 +26381,54 @@ let EditorDataSyncController = class EditorDataSyncController extends _univerjs_
26282
26381
  }
26283
26382
  if (unitId === _univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY) this._formulaEditorController.autoScroll();
26284
26383
  }
26384
+ _syncFormulaRefRenderStyleOnFocusChange() {
26385
+ this.disposeWithMe(this._contextService.subscribeContextValue$(_univerjs_core.FOCUSING_FX_BAR_EDITOR).subscribe(() => {
26386
+ this._refreshRenderStyleConfig(_univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY);
26387
+ this._refreshRenderStyleConfig(_univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY);
26388
+ }));
26389
+ }
26390
+ _refreshRenderStyleConfig(unitId) {
26391
+ var _currentRender$mainCo3;
26392
+ const currentRender = this._renderManagerService.getRenderById(unitId);
26393
+ const skeleton = currentRender === null || currentRender === void 0 ? void 0 : currentRender.with(_univerjs_docs.DocSkeletonManagerService).getSkeleton();
26394
+ const docDataModel = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
26395
+ const docViewModel = this._getEditorViewModel(unitId);
26396
+ if (currentRender == null || skeleton == null || docDataModel == null || docViewModel == null) return;
26397
+ this._checkAndSetRenderStyleConfig(docDataModel);
26398
+ docViewModel.reset(docDataModel);
26399
+ skeleton.calculate();
26400
+ (_currentRender$mainCo3 = currentRender.mainComponent) === null || _currentRender$mainCo3 === void 0 || _currentRender$mainCo3.makeDirty();
26401
+ if (unitId === _univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY) this._formulaEditorController.autoScroll();
26402
+ }
26285
26403
  _checkAndSetRenderStyleConfig(documentDataModel) {
26286
- var _body$dataStream;
26404
+ var _snapshot$body$dataSt, _snapshot$body;
26287
26405
  const snapshot = documentDataModel.getSnapshot();
26288
- const { body } = snapshot;
26289
- if (snapshot.id !== _univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY) return;
26290
- snapshot.documentStyle = formulaEditorStyle;
26406
+ if (snapshot.id !== _univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY && snapshot.id !== _univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY) return;
26407
+ const isFormulaBar = snapshot.id === _univerjs_core.DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY;
26408
+ if (isFormulaBar) snapshot.documentStyle = formulaEditorStyle;
26409
+ else {
26410
+ var _snapshot$documentSty;
26411
+ (_snapshot$documentSty = snapshot.documentStyle) !== null && _snapshot$documentSty !== void 0 || (snapshot.documentStyle = {});
26412
+ }
26291
26413
  let renderConfig = snapshot.documentStyle.renderConfig;
26292
26414
  if (renderConfig == null) {
26293
26415
  renderConfig = {};
26294
26416
  snapshot.documentStyle.renderConfig = renderConfig;
26295
26417
  }
26296
- const position = this._formulaEditorManagerService.getPosition();
26297
- if (position) {
26418
+ const position = isFormulaBar ? this._formulaEditorManagerService.getPosition() : null;
26419
+ if (isFormulaBar && position) {
26298
26420
  const width = position.width;
26299
26421
  snapshot.documentStyle.pageSize = {
26300
26422
  width,
26301
26423
  height: Infinity
26302
26424
  };
26303
26425
  }
26304
- if (((_body$dataStream = body === null || body === void 0 ? void 0 : body.dataStream) !== null && _body$dataStream !== void 0 ? _body$dataStream : "").startsWith("=")) renderConfig.isRenderStyle = _univerjs_core.BooleanNumber.TRUE;
26305
- else renderConfig.isRenderStyle = _univerjs_core.BooleanNumber.FALSE;
26426
+ if (!((_snapshot$body$dataSt = (_snapshot$body = snapshot.body) === null || _snapshot$body === void 0 ? void 0 : _snapshot$body.dataStream) !== null && _snapshot$body$dataSt !== void 0 ? _snapshot$body$dataSt : "").startsWith("=")) {
26427
+ renderConfig.isRenderStyle = isFormulaBar ? _univerjs_core.BooleanNumber.FALSE : _univerjs_core.BooleanNumber.TRUE;
26428
+ return;
26429
+ }
26430
+ const isFocusFxBar = this._contextService.getContextValue(_univerjs_core.FOCUSING_FX_BAR_EDITOR);
26431
+ renderConfig.isRenderStyle = isFormulaBar === isFocusFxBar ? _univerjs_core.BooleanNumber.TRUE : _univerjs_core.BooleanNumber.FALSE;
26306
26432
  }
26307
26433
  _clearParagraph(paragraphs) {
26308
26434
  const newParagraphs = _univerjs_core.Tools.deepClone(paragraphs);
@@ -26318,7 +26444,8 @@ EditorDataSyncController = __decorate([
26318
26444
  __decorateParam(4, (0, _univerjs_core.Inject)(_univerjs_sheets.RangeProtectionRuleModel)),
26319
26445
  __decorateParam(5, (0, _univerjs_core.Inject)(_univerjs_sheets.WorksheetProtectionRuleModel)),
26320
26446
  __decorateParam(6, (0, _univerjs_core.Inject)(FormulaEditorController)),
26321
- __decorateParam(7, IFormulaEditorManagerService)
26447
+ __decorateParam(7, IFormulaEditorManagerService),
26448
+ __decorateParam(8, _univerjs_core.IContextService)
26322
26449
  ], EditorDataSyncController);
26323
26450
 
26324
26451
  //#endregion
@@ -31085,6 +31212,7 @@ Object.defineProperty(exports, 'EditorBridgeService', {
31085
31212
  }
31086
31213
  });
31087
31214
  exports.ExpandSelectionCommand = ExpandSelectionCommand;
31215
+ exports.FORMULA_CLIPBOARD_MIME_TYPE = FORMULA_CLIPBOARD_MIME_TYPE;
31088
31216
  exports.FormatPainterStatus = FormatPainterStatus;
31089
31217
  Object.defineProperty(exports, 'FormulaEditorController', {
31090
31218
  enumerable: true,
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "دمج أفقي",
91
91
  cancel: "إلغاء الدمج",
92
92
  overlappingError: "لا يمكن دمج المناطق المتداخلة",
93
- partiallyError: "لا يمكن إجراء هذه العملية على خلايا مدموجة جزئياً"
93
+ partiallyError: "لا يمكن إجراء هذه العملية على خلايا مدموجة جزئياً",
94
+ confirm: {
95
+ warning: "تحذير",
96
+ dismantleMergeCellWarning: "ستؤدي هذه العملية إلى إلغاء دمج الخلايا المدمجة. هل تريد المتابعة؟"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "لا يمكن تنفيذ هذه العملية",
101
+ notAllowedToInsertRange: "هذه العملية غير مسموح بها لأن النطاق يحتوي على صفوف تمت تصفيتها."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "تجاوز",
98
105
  wrap: "التفاف",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "Combinació horitzontal",
91
91
  cancel: "Descombinar cel·les",
92
92
  overlappingError: "No es poden combinar àrees superposades",
93
- partiallyError: "No es pot realitzar aquesta operació en cel·les parcialment combinades"
93
+ partiallyError: "No es pot realitzar aquesta operació en cel·les parcialment combinades",
94
+ confirm: {
95
+ warning: "Avís",
96
+ dismantleMergeCellWarning: "Aquesta operació descombinarà les cel·les combinades. Voleu continuar?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "No es pot realitzar aquesta operació",
101
+ notAllowedToInsertRange: "Aquesta operació no està permesa perquè l’interval conté files filtrades."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "Desbordament",
98
105
  wrap: "Ajustar",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "Horizontal verbinden",
91
91
  cancel: "Verbindung aufheben",
92
92
  overlappingError: "Überlappende Bereiche können nicht verbunden werden",
93
- partiallyError: "Dieser Vorgang kann nicht für teilweise verbundene Zellen ausgeführt werden"
93
+ partiallyError: "Dieser Vorgang kann nicht für teilweise verbundene Zellen ausgeführt werden",
94
+ confirm: {
95
+ warning: "Warnung",
96
+ dismantleMergeCellWarning: "Dieser Vorgang hebt verbundene Zellen auf. Fortfahren?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "Dieser Vorgang kann nicht ausgeführt werden",
101
+ notAllowedToInsertRange: "Dieser Vorgang ist nicht erlaubt, da der Bereich gefilterte Zeilen enthält."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "Überlauf",
98
105
  wrap: "Umbrechen",
@@ -105,9 +105,16 @@ const locale = { "sheets-ui": {
105
105
  horizontal: "Horizontal merge",
106
106
  cancel: "Cancel merge",
107
107
  overlappingError: "Cannot merge overlapping areas",
108
- partiallyError: "Cannot perform this operation on partially merged cells"
108
+ partiallyError: "Cannot perform this operation on partially merged cells",
109
+ confirm: {
110
+ warning: "Warning",
111
+ dismantleMergeCellWarning: "This operation will unmerge merged cells. Continue?"
112
+ }
109
113
  },
110
- filter: {},
114
+ filter: { confirm: {
115
+ error: "Cannot perform this operation",
116
+ notAllowedToInsertRange: "This operation is not allowed because the range contains filtered rows."
117
+ } },
111
118
  textWrap: {
112
119
  overflow: "Overflow",
113
120
  wrap: "Wrap",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "Combinar horizontalmente",
91
91
  cancel: "Separar celdas",
92
92
  overlappingError: "No se pueden combinar áreas superpuestas",
93
- partiallyError: "No se puede realizar esta operación en celdas parcialmente combinadas"
93
+ partiallyError: "No se puede realizar esta operación en celdas parcialmente combinadas",
94
+ confirm: {
95
+ warning: "Advertencia",
96
+ dismantleMergeCellWarning: "Esta operación separará las celdas combinadas. ¿Desea continuar?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "No se puede realizar esta operación",
101
+ notAllowedToInsertRange: "Esta operación no está permitida porque el rango contiene filas filtradas."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "Desbordamiento",
98
105
  wrap: "Ajustar",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "ادغام افقی",
91
91
  cancel: "لغو ادغام",
92
92
  overlappingError: "نمی‌توان نواحی هم‌پوشان را ادغام کرد",
93
- partiallyError: "نمی‌توان این عملیات را روی سلول‌های ادغام‌شده جزئی انجام داد"
93
+ partiallyError: "نمی‌توان این عملیات را روی سلول‌های ادغام‌شده جزئی انجام داد",
94
+ confirm: {
95
+ warning: "هشدار",
96
+ dismantleMergeCellWarning: "این عملیات سلول‌های ادغام‌شده را از حالت ادغام خارج می‌کند. ادامه می‌دهید؟"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "نمی‌توان این عملیات را انجام داد",
101
+ notAllowedToInsertRange: "این عملیات مجاز نیست زیرا محدوده شامل ردیف‌های فیلترشده است."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "سرریز",
98
105
  wrap: "بپیچ",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "Fusion horizontale",
91
91
  cancel: "Annuler la fusion",
92
92
  overlappingError: "Impossible de fusionner des zones qui se chevauchent",
93
- partiallyError: "Impossible d'effectuer cette opération sur des cellules partiellement fusionnées"
93
+ partiallyError: "Impossible d'effectuer cette opération sur des cellules partiellement fusionnées",
94
+ confirm: {
95
+ warning: "Avertissement",
96
+ dismantleMergeCellWarning: "Cette opération annulera la fusion des cellules fusionnées. Continuer ?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "Impossible d’effectuer cette opération",
101
+ notAllowedToInsertRange: "Cette opération n’est pas autorisée, car la plage contient des lignes filtrées."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "Débordement",
98
105
  wrap: "Renvoi à la ligne",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "Gabungkan horizontal",
91
91
  cancel: "Batalkan penggabungan",
92
92
  overlappingError: "Tidak dapat menggabungkan area yang tumpang tindih",
93
- partiallyError: "Tidak dapat melakukan operasi ini pada sel yang digabungkan sebagian"
93
+ partiallyError: "Tidak dapat melakukan operasi ini pada sel yang digabungkan sebagian",
94
+ confirm: {
95
+ warning: "Peringatan",
96
+ dismantleMergeCellWarning: "Operasi ini akan membatalkan penggabungan sel. Lanjutkan?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "Tidak dapat melakukan operasi ini",
101
+ notAllowedToInsertRange: "Operasi ini tidak diizinkan karena rentang berisi baris yang difilter."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "Meluap",
98
105
  wrap: "Bungkus",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "Unisci orizzontalmente",
91
91
  cancel: "Annulla unione",
92
92
  overlappingError: "Impossibile unire aree sovrapposte",
93
- partiallyError: "Impossibile eseguire questa operazione su celle parzialmente unite"
93
+ partiallyError: "Impossibile eseguire questa operazione su celle parzialmente unite",
94
+ confirm: {
95
+ warning: "Avviso",
96
+ dismantleMergeCellWarning: "Questa operazione annullerà l’unione delle celle unite. Continuare?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "Impossibile eseguire questa operazione",
101
+ notAllowedToInsertRange: "Questa operazione non è consentita perché l’intervallo contiene righe filtrate."
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "Trabocca",
98
105
  wrap: "A capo",
@@ -90,9 +90,16 @@ const locale = { "sheets-ui": {
90
90
  horizontal: "横に結合",
91
91
  cancel: "結合解除",
92
92
  overlappingError: "重なっている範囲は結合できません",
93
- partiallyError: "部分的に結合されたセルには操作できません"
93
+ partiallyError: "部分的に結合されたセルには操作できません",
94
+ confirm: {
95
+ warning: "警告",
96
+ dismantleMergeCellWarning: "この操作により結合セルが解除されます。続行しますか?"
97
+ }
94
98
  },
95
- filter: {},
99
+ filter: { confirm: {
100
+ error: "この操作は実行できません",
101
+ notAllowedToInsertRange: "範囲にフィルターされた行が含まれているため、この操作は許可されていません。"
102
+ } },
96
103
  textWrap: {
97
104
  overflow: "オーバーフロー",
98
105
  wrap: "折り返す",