@univerjs/docs-drawing 1.0.0-alpha.6 → 1.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/facade.js +10 -1
- package/lib/cjs/index.js +98 -44
- package/lib/es/facade.js +10 -1
- package/lib/es/index.js +101 -47
- package/lib/facade.js +10 -1
- package/lib/index.js +101 -47
- package/lib/types/commands/commands/update-doc-drawing-wrapping-style.command.d.ts +32 -0
- package/lib/types/facade/f-document-image.d.ts +6 -0
- package/lib/types/facade/f-document.d.ts +13 -1
- package/lib/types/facade/f-enum.d.ts +4 -0
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +6 -6
package/lib/cjs/facade.js
CHANGED
|
@@ -258,6 +258,11 @@ var FDocumentImage = class {
|
|
|
258
258
|
}
|
|
259
259
|
/**
|
|
260
260
|
* Sets the image wrapping style.
|
|
261
|
+
*
|
|
262
|
+
* Use `INLINE` to place the image in the text flow, `WRAP_SQUARE` to flow text beside it, or
|
|
263
|
+
* `WRAP_TOP_AND_BOTTOM` to keep text above and below it. `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` do not reserve space
|
|
264
|
+
* in the text layout and can overlap text.
|
|
265
|
+
*
|
|
261
266
|
* When switching from inline to a floating style in a UI environment, the current visual position is preserved.
|
|
262
267
|
* @param {TextWrappingStyle} wrappingStyle The wrapping style to apply.
|
|
263
268
|
* @returns {boolean} `true` when the update command succeeds; otherwise, `false`.
|
|
@@ -267,6 +272,7 @@ var FDocumentImage = class {
|
|
|
267
272
|
* const image = fDocument.getImages()[0];
|
|
268
273
|
*
|
|
269
274
|
* if (image) {
|
|
275
|
+
* // Float the image beside body text without covering it.
|
|
270
276
|
* const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
|
|
271
277
|
* console.log(success);
|
|
272
278
|
* }
|
|
@@ -435,7 +441,10 @@ var FDocumentImageMixin = class extends _univerjs_docs_facade.FDocument {
|
|
|
435
441
|
var _options$wrappingStyl, _options$angle, _options$positionH, _options$positionV;
|
|
436
442
|
const unitId = this.getId();
|
|
437
443
|
const imageId = (0, _univerjs_core.generateRandomId)(6);
|
|
438
|
-
const size =
|
|
444
|
+
const size = options.width != null && options.height != null ? {
|
|
445
|
+
width: options.width,
|
|
446
|
+
height: options.height
|
|
447
|
+
} : resolveImageSize(await this._getIntrinsicSize(options.source, options.imageSourceType), options);
|
|
439
448
|
const defaultTransform = (0, _univerjs_docs.buildDocTransform)(size.width, size.height);
|
|
440
449
|
const wrappingStyle = (_options$wrappingStyl = options.wrappingStyle) !== null && _options$wrappingStyl !== void 0 ? _options$wrappingStyl : _univerjs_docs_drawing.TextWrappingStyle.INLINE;
|
|
441
450
|
const docTransform = {
|
package/lib/cjs/index.js
CHANGED
|
@@ -117,7 +117,7 @@ function resolveDocDrawingInsertTextRange(accessor, unitId, textRange) {
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
//#endregion
|
|
120
|
-
//#region \0@oxc-project+runtime@0.
|
|
120
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
|
|
121
121
|
function _typeof(o) {
|
|
122
122
|
"@babel/helpers - typeof";
|
|
123
123
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -128,7 +128,7 @@ function _typeof(o) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
//#endregion
|
|
131
|
-
//#region \0@oxc-project+runtime@0.
|
|
131
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
|
|
132
132
|
function toPrimitive(t, r) {
|
|
133
133
|
if ("object" != _typeof(t) || !t) return t;
|
|
134
134
|
var e = t[Symbol.toPrimitive];
|
|
@@ -141,14 +141,14 @@ function toPrimitive(t, r) {
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
//#endregion
|
|
144
|
-
//#region \0@oxc-project+runtime@0.
|
|
144
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
|
|
145
145
|
function toPropertyKey(t) {
|
|
146
146
|
var i = toPrimitive(t, "string");
|
|
147
147
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
//#endregion
|
|
151
|
-
//#region \0@oxc-project+runtime@0.
|
|
151
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
|
|
152
152
|
function _defineProperty(e, r, t) {
|
|
153
153
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
154
154
|
value: t,
|
|
@@ -320,13 +320,47 @@ function executeMutations(mutations, commandService) {
|
|
|
320
320
|
return true;
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
-
//#endregion
|
|
324
|
-
//#region src/services/doc-drawing.service.ts
|
|
325
|
-
var DocDrawingService = class extends _univerjs_drawing.UnitDrawingService {};
|
|
326
|
-
const IDocDrawingService = (0, _univerjs_core.createIdentifier)("univer.doc.plugin.doc-drawing.service");
|
|
327
|
-
|
|
328
323
|
//#endregion
|
|
329
324
|
//#region src/commands/commands/set-drawing-arrange.command.ts
|
|
325
|
+
const DRAWINGS_ORDER_KEY = "drawingsOrder";
|
|
326
|
+
/**
|
|
327
|
+
* Calculates the target model order. Adjacent moves treat selected drawings as a group,
|
|
328
|
+
* so selected drawings keep their relative order instead of crossing each other.
|
|
329
|
+
*/
|
|
330
|
+
function getArrangedDrawingOrder(drawingOrder, drawingIds, arrangeType) {
|
|
331
|
+
const selectedDrawingIds = new Set(drawingIds.filter((drawingId) => drawingOrder.includes(drawingId)));
|
|
332
|
+
const arrangedDrawingOrder = [...drawingOrder];
|
|
333
|
+
if (selectedDrawingIds.size === 0) return arrangedDrawingOrder;
|
|
334
|
+
if (arrangeType === _univerjs_core.ArrangeTypeEnum.forward) {
|
|
335
|
+
for (let index = arrangedDrawingOrder.length - 2; index >= 0; index--) if (selectedDrawingIds.has(arrangedDrawingOrder[index]) && !selectedDrawingIds.has(arrangedDrawingOrder[index + 1])) [arrangedDrawingOrder[index], arrangedDrawingOrder[index + 1]] = [arrangedDrawingOrder[index + 1], arrangedDrawingOrder[index]];
|
|
336
|
+
} else if (arrangeType === _univerjs_core.ArrangeTypeEnum.backward) {
|
|
337
|
+
for (let index = 1; index < arrangedDrawingOrder.length; index++) if (selectedDrawingIds.has(arrangedDrawingOrder[index]) && !selectedDrawingIds.has(arrangedDrawingOrder[index - 1])) [arrangedDrawingOrder[index], arrangedDrawingOrder[index - 1]] = [arrangedDrawingOrder[index - 1], arrangedDrawingOrder[index]];
|
|
338
|
+
} else if (arrangeType === _univerjs_core.ArrangeTypeEnum.front || arrangeType === _univerjs_core.ArrangeTypeEnum.back) {
|
|
339
|
+
const selected = arrangedDrawingOrder.filter((drawingId) => selectedDrawingIds.has(drawingId));
|
|
340
|
+
const unselected = arrangedDrawingOrder.filter((drawingId) => !selectedDrawingIds.has(drawingId));
|
|
341
|
+
return arrangeType === _univerjs_core.ArrangeTypeEnum.front ? [...unselected, ...selected] : [...selected, ...unselected];
|
|
342
|
+
}
|
|
343
|
+
return arrangedDrawingOrder;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Converts the target order into granular JSONX move operations. This avoids replacing
|
|
347
|
+
* the entire drawingsOrder array and keeps collaboration conflicts scoped to moved items.
|
|
348
|
+
*/
|
|
349
|
+
function createDrawingOrderActions(drawingOrder, arrangedDrawingOrder) {
|
|
350
|
+
const jsonX = _univerjs_core.JSONX.getInstance();
|
|
351
|
+
const workingDrawingOrder = [...drawingOrder];
|
|
352
|
+
const rawActions = [];
|
|
353
|
+
for (let targetIndex = 0; targetIndex < arrangedDrawingOrder.length; targetIndex++) {
|
|
354
|
+
const drawingId = arrangedDrawingOrder[targetIndex];
|
|
355
|
+
const currentIndex = workingDrawingOrder.indexOf(drawingId);
|
|
356
|
+
if (currentIndex < 0 || currentIndex === targetIndex) continue;
|
|
357
|
+
const action = jsonX.moveOp([DRAWINGS_ORDER_KEY, currentIndex], [DRAWINGS_ORDER_KEY, targetIndex]);
|
|
358
|
+
if (action) rawActions.push(action);
|
|
359
|
+
workingDrawingOrder.splice(currentIndex, 1);
|
|
360
|
+
workingDrawingOrder.splice(targetIndex, 0, drawingId);
|
|
361
|
+
}
|
|
362
|
+
return rawActions.reduce((actions, action) => _univerjs_core.JSONX.compose(actions, action), null);
|
|
363
|
+
}
|
|
330
364
|
/**
|
|
331
365
|
* The command to arrange drawings.
|
|
332
366
|
*/
|
|
@@ -335,39 +369,18 @@ const SetDocDrawingArrangeCommand = {
|
|
|
335
369
|
type: _univerjs_core.CommandType.COMMAND,
|
|
336
370
|
handler: (accessor, params) => {
|
|
337
371
|
const commandService = accessor.get(_univerjs_core.ICommandService);
|
|
338
|
-
const docDrawingService = accessor.get(IDocDrawingService);
|
|
339
372
|
if (params == null) return false;
|
|
340
|
-
const { unitId,
|
|
341
|
-
const
|
|
373
|
+
const { unitId, drawingIds, arrangeType } = params;
|
|
374
|
+
const documentDataModel = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
375
|
+
const drawingOrder = documentDataModel === null || documentDataModel === void 0 ? void 0 : documentDataModel.getDrawingsOrder();
|
|
376
|
+
if (!drawingOrder) return false;
|
|
377
|
+
const actions = createDrawingOrderActions(drawingOrder, getArrangedDrawingOrder(drawingOrder, drawingIds, arrangeType));
|
|
378
|
+
if (_univerjs_core.JSONX.isNoop(actions)) return false;
|
|
379
|
+
const result = commandService.syncExecuteCommand(_univerjs_docs.RichTextEditingMutation.id, {
|
|
342
380
|
unitId,
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
};
|
|
346
|
-
let jsonOp;
|
|
347
|
-
if (arrangeType === _univerjs_core.ArrangeTypeEnum.forward) jsonOp = docDrawingService.getForwardDrawingsOp(drawingOrderMapParam);
|
|
348
|
-
else if (arrangeType === _univerjs_core.ArrangeTypeEnum.backward) jsonOp = docDrawingService.getBackwardDrawingOp(drawingOrderMapParam);
|
|
349
|
-
else if (arrangeType === _univerjs_core.ArrangeTypeEnum.front) jsonOp = docDrawingService.getFrontDrawingsOp(drawingOrderMapParam);
|
|
350
|
-
else if (arrangeType === _univerjs_core.ArrangeTypeEnum.back) jsonOp = docDrawingService.getBackDrawingsOp(drawingOrderMapParam);
|
|
351
|
-
if (jsonOp == null) return false;
|
|
352
|
-
const { redo } = jsonOp;
|
|
353
|
-
if (redo == null) return false;
|
|
354
|
-
const rawActions = [];
|
|
355
|
-
let redoCopy = _univerjs_core.Tools.deepClone(redo);
|
|
356
|
-
redoCopy = redoCopy.slice(3);
|
|
357
|
-
redoCopy.unshift("drawingsOrder");
|
|
358
|
-
rawActions.push(redoCopy);
|
|
359
|
-
const doMutation = {
|
|
360
|
-
id: _univerjs_docs.RichTextEditingMutation.id,
|
|
361
|
-
params: {
|
|
362
|
-
unitId,
|
|
363
|
-
actions: [],
|
|
364
|
-
textRanges: null
|
|
365
|
-
}
|
|
366
|
-
};
|
|
367
|
-
doMutation.params.actions = rawActions.reduce((acc, cur) => {
|
|
368
|
-
return _univerjs_core.JSONX.compose(acc, cur);
|
|
369
|
-
}, null);
|
|
370
|
-
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
381
|
+
actions,
|
|
382
|
+
textRanges: null
|
|
383
|
+
});
|
|
371
384
|
return Boolean(result);
|
|
372
385
|
}
|
|
373
386
|
};
|
|
@@ -412,11 +425,43 @@ const UpdateDrawingDocTransformCommand = {
|
|
|
412
425
|
|
|
413
426
|
//#endregion
|
|
414
427
|
//#region src/commands/commands/update-doc-drawing-wrapping-style.command.ts
|
|
428
|
+
/**
|
|
429
|
+
* Controls how a document drawing participates in text layout.
|
|
430
|
+
*
|
|
431
|
+
* `INLINE`, `WRAP_SQUARE`, and `WRAP_TOP_AND_BOTTOM` participate in text layout and can cause text to reflow.
|
|
432
|
+
* `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles and do not cause text to reflow.
|
|
433
|
+
*/
|
|
415
434
|
let TextWrappingStyle = /* @__PURE__ */ function(TextWrappingStyle) {
|
|
435
|
+
/**
|
|
436
|
+
* Places the drawing in the text flow like a character.
|
|
437
|
+
*
|
|
438
|
+
* The drawing occupies layout space and does not overlap surrounding text. Its position is determined by its
|
|
439
|
+
* document range, so floating position settings have no visible effect.
|
|
440
|
+
*/
|
|
416
441
|
TextWrappingStyle["INLINE"] = "inline";
|
|
442
|
+
/**
|
|
443
|
+
* Floats the drawing behind document text without causing the text to reflow.
|
|
444
|
+
*
|
|
445
|
+
* Use this style for backgrounds or watermarks. Text can overlap the drawing, so ensure that it remains readable.
|
|
446
|
+
*/
|
|
417
447
|
TextWrappingStyle["BEHIND_TEXT"] = "behindText";
|
|
448
|
+
/**
|
|
449
|
+
* Floats the drawing in front of document text without causing the text to reflow.
|
|
450
|
+
*
|
|
451
|
+
* The drawing can cover overlapping text. Use this style only when an overlay is intentional.
|
|
452
|
+
*/
|
|
418
453
|
TextWrappingStyle["IN_FRONT_OF_TEXT"] = "inFrontOfText";
|
|
454
|
+
/**
|
|
455
|
+
* Floats the drawing and wraps text around its rectangular bounds.
|
|
456
|
+
*
|
|
457
|
+
* Use this style for images that should appear beside body text, such as portraits or illustrations.
|
|
458
|
+
*/
|
|
419
459
|
TextWrappingStyle["WRAP_SQUARE"] = "wrapSquare";
|
|
460
|
+
/**
|
|
461
|
+
* Floats the drawing in a horizontal band, with text only above and below it.
|
|
462
|
+
*
|
|
463
|
+
* Use this style for wide figures or standalone illustrations that should not have text beside them.
|
|
464
|
+
*/
|
|
420
465
|
TextWrappingStyle["WRAP_TOP_AND_BOTTOM"] = "wrapTopAndBottom";
|
|
421
466
|
return TextWrappingStyle;
|
|
422
467
|
}({});
|
|
@@ -485,7 +530,12 @@ const UpdateDocDrawingWrappingStyleCommand = {
|
|
|
485
530
|
};
|
|
486
531
|
|
|
487
532
|
//#endregion
|
|
488
|
-
//#region
|
|
533
|
+
//#region src/services/doc-drawing.service.ts
|
|
534
|
+
var DocDrawingService = class extends _univerjs_drawing.UnitDrawingService {};
|
|
535
|
+
const IDocDrawingService = (0, _univerjs_core.createIdentifier)("univer.doc.plugin.doc-drawing.service");
|
|
536
|
+
|
|
537
|
+
//#endregion
|
|
538
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
|
|
489
539
|
function __decorateParam(paramIndex, decorator) {
|
|
490
540
|
return function(target, key) {
|
|
491
541
|
decorator(target, key, paramIndex);
|
|
@@ -493,7 +543,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
493
543
|
}
|
|
494
544
|
|
|
495
545
|
//#endregion
|
|
496
|
-
//#region \0@oxc-project+runtime@0.
|
|
546
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
|
|
497
547
|
function __decorate(decorators, target, key, desc) {
|
|
498
548
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
499
549
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -626,7 +676,7 @@ DocDrawingController = __decorate([
|
|
|
626
676
|
//#endregion
|
|
627
677
|
//#region package.json
|
|
628
678
|
var name = "@univerjs/docs-drawing";
|
|
629
|
-
var version = "1.0.0-alpha.
|
|
679
|
+
var version = "1.0.0-alpha.8";
|
|
630
680
|
|
|
631
681
|
//#endregion
|
|
632
682
|
//#region src/config/config.ts
|
|
@@ -675,7 +725,11 @@ _defineProperty(UniverDocsDrawingPlugin, "pluginName", DOCS_DRAWING_PLUGIN);
|
|
|
675
725
|
_defineProperty(UniverDocsDrawingPlugin, "packageName", name);
|
|
676
726
|
_defineProperty(UniverDocsDrawingPlugin, "version", version);
|
|
677
727
|
_defineProperty(UniverDocsDrawingPlugin, "type", _univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
678
|
-
UniverDocsDrawingPlugin = __decorate([
|
|
728
|
+
UniverDocsDrawingPlugin = __decorate([
|
|
729
|
+
(0, _univerjs_core.DependentOn)(_univerjs_docs.UniverDocsPlugin, _univerjs_drawing.UniverDrawingPlugin),
|
|
730
|
+
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.Injector)),
|
|
731
|
+
__decorateParam(2, _univerjs_core.IConfigService)
|
|
732
|
+
], UniverDocsDrawingPlugin);
|
|
679
733
|
|
|
680
734
|
//#endregion
|
|
681
735
|
exports.DOCS_DRAWING_PLUGIN = DOCS_DRAWING_PLUGIN;
|
package/lib/es/facade.js
CHANGED
|
@@ -257,6 +257,11 @@ var FDocumentImage = class {
|
|
|
257
257
|
}
|
|
258
258
|
/**
|
|
259
259
|
* Sets the image wrapping style.
|
|
260
|
+
*
|
|
261
|
+
* Use `INLINE` to place the image in the text flow, `WRAP_SQUARE` to flow text beside it, or
|
|
262
|
+
* `WRAP_TOP_AND_BOTTOM` to keep text above and below it. `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` do not reserve space
|
|
263
|
+
* in the text layout and can overlap text.
|
|
264
|
+
*
|
|
260
265
|
* When switching from inline to a floating style in a UI environment, the current visual position is preserved.
|
|
261
266
|
* @param {TextWrappingStyle} wrappingStyle The wrapping style to apply.
|
|
262
267
|
* @returns {boolean} `true` when the update command succeeds; otherwise, `false`.
|
|
@@ -266,6 +271,7 @@ var FDocumentImage = class {
|
|
|
266
271
|
* const image = fDocument.getImages()[0];
|
|
267
272
|
*
|
|
268
273
|
* if (image) {
|
|
274
|
+
* // Float the image beside body text without covering it.
|
|
269
275
|
* const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
|
|
270
276
|
* console.log(success);
|
|
271
277
|
* }
|
|
@@ -434,7 +440,10 @@ var FDocumentImageMixin = class extends FDocument {
|
|
|
434
440
|
var _options$wrappingStyl, _options$angle, _options$positionH, _options$positionV;
|
|
435
441
|
const unitId = this.getId();
|
|
436
442
|
const imageId = generateRandomId(6);
|
|
437
|
-
const size =
|
|
443
|
+
const size = options.width != null && options.height != null ? {
|
|
444
|
+
width: options.width,
|
|
445
|
+
height: options.height
|
|
446
|
+
} : resolveImageSize(await this._getIntrinsicSize(options.source, options.imageSourceType), options);
|
|
438
447
|
const defaultTransform = buildDocTransform(size.width, size.height);
|
|
439
448
|
const wrappingStyle = (_options$wrappingStyl = options.wrappingStyle) !== null && _options$wrappingStyl !== void 0 ? _options$wrappingStyl : TextWrappingStyle.INLINE;
|
|
440
449
|
const docTransform = {
|
package/lib/es/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getCustomBlockIdsInSelections, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
|
|
2
|
-
import { DocSelectionManagerService, RichTextEditingMutation, getContentInsertRange, normalizeTextRange } from "@univerjs/docs";
|
|
3
|
-
import { IDrawingManagerService, UnitDrawingService } from "@univerjs/drawing";
|
|
1
|
+
import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, DependentOn, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getCustomBlockIdsInSelections, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
|
|
2
|
+
import { DocSelectionManagerService, RichTextEditingMutation, UniverDocsPlugin, getContentInsertRange, normalizeTextRange } from "@univerjs/docs";
|
|
3
|
+
import { IDrawingManagerService, UnitDrawingService, UniverDrawingPlugin } from "@univerjs/drawing";
|
|
4
4
|
|
|
5
5
|
//#region src/commands/commands/insert-doc-drawing.command.ts
|
|
6
6
|
/**
|
|
@@ -116,7 +116,7 @@ function resolveDocDrawingInsertTextRange(accessor, unitId, textRange) {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
//#endregion
|
|
119
|
-
//#region \0@oxc-project+runtime@0.
|
|
119
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
|
|
120
120
|
function _typeof(o) {
|
|
121
121
|
"@babel/helpers - typeof";
|
|
122
122
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -127,7 +127,7 @@ function _typeof(o) {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
//#endregion
|
|
130
|
-
//#region \0@oxc-project+runtime@0.
|
|
130
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
|
|
131
131
|
function toPrimitive(t, r) {
|
|
132
132
|
if ("object" != _typeof(t) || !t) return t;
|
|
133
133
|
var e = t[Symbol.toPrimitive];
|
|
@@ -140,14 +140,14 @@ function toPrimitive(t, r) {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
//#endregion
|
|
143
|
-
//#region \0@oxc-project+runtime@0.
|
|
143
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
|
|
144
144
|
function toPropertyKey(t) {
|
|
145
145
|
var i = toPrimitive(t, "string");
|
|
146
146
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
//#endregion
|
|
150
|
-
//#region \0@oxc-project+runtime@0.
|
|
150
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
|
|
151
151
|
function _defineProperty(e, r, t) {
|
|
152
152
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
153
153
|
value: t,
|
|
@@ -319,13 +319,47 @@ function executeMutations(mutations, commandService) {
|
|
|
319
319
|
return true;
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
-
//#endregion
|
|
323
|
-
//#region src/services/doc-drawing.service.ts
|
|
324
|
-
var DocDrawingService = class extends UnitDrawingService {};
|
|
325
|
-
const IDocDrawingService = createIdentifier("univer.doc.plugin.doc-drawing.service");
|
|
326
|
-
|
|
327
322
|
//#endregion
|
|
328
323
|
//#region src/commands/commands/set-drawing-arrange.command.ts
|
|
324
|
+
const DRAWINGS_ORDER_KEY = "drawingsOrder";
|
|
325
|
+
/**
|
|
326
|
+
* Calculates the target model order. Adjacent moves treat selected drawings as a group,
|
|
327
|
+
* so selected drawings keep their relative order instead of crossing each other.
|
|
328
|
+
*/
|
|
329
|
+
function getArrangedDrawingOrder(drawingOrder, drawingIds, arrangeType) {
|
|
330
|
+
const selectedDrawingIds = new Set(drawingIds.filter((drawingId) => drawingOrder.includes(drawingId)));
|
|
331
|
+
const arrangedDrawingOrder = [...drawingOrder];
|
|
332
|
+
if (selectedDrawingIds.size === 0) return arrangedDrawingOrder;
|
|
333
|
+
if (arrangeType === ArrangeTypeEnum.forward) {
|
|
334
|
+
for (let index = arrangedDrawingOrder.length - 2; index >= 0; index--) if (selectedDrawingIds.has(arrangedDrawingOrder[index]) && !selectedDrawingIds.has(arrangedDrawingOrder[index + 1])) [arrangedDrawingOrder[index], arrangedDrawingOrder[index + 1]] = [arrangedDrawingOrder[index + 1], arrangedDrawingOrder[index]];
|
|
335
|
+
} else if (arrangeType === ArrangeTypeEnum.backward) {
|
|
336
|
+
for (let index = 1; index < arrangedDrawingOrder.length; index++) if (selectedDrawingIds.has(arrangedDrawingOrder[index]) && !selectedDrawingIds.has(arrangedDrawingOrder[index - 1])) [arrangedDrawingOrder[index], arrangedDrawingOrder[index - 1]] = [arrangedDrawingOrder[index - 1], arrangedDrawingOrder[index]];
|
|
337
|
+
} else if (arrangeType === ArrangeTypeEnum.front || arrangeType === ArrangeTypeEnum.back) {
|
|
338
|
+
const selected = arrangedDrawingOrder.filter((drawingId) => selectedDrawingIds.has(drawingId));
|
|
339
|
+
const unselected = arrangedDrawingOrder.filter((drawingId) => !selectedDrawingIds.has(drawingId));
|
|
340
|
+
return arrangeType === ArrangeTypeEnum.front ? [...unselected, ...selected] : [...selected, ...unselected];
|
|
341
|
+
}
|
|
342
|
+
return arrangedDrawingOrder;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Converts the target order into granular JSONX move operations. This avoids replacing
|
|
346
|
+
* the entire drawingsOrder array and keeps collaboration conflicts scoped to moved items.
|
|
347
|
+
*/
|
|
348
|
+
function createDrawingOrderActions(drawingOrder, arrangedDrawingOrder) {
|
|
349
|
+
const jsonX = JSONX.getInstance();
|
|
350
|
+
const workingDrawingOrder = [...drawingOrder];
|
|
351
|
+
const rawActions = [];
|
|
352
|
+
for (let targetIndex = 0; targetIndex < arrangedDrawingOrder.length; targetIndex++) {
|
|
353
|
+
const drawingId = arrangedDrawingOrder[targetIndex];
|
|
354
|
+
const currentIndex = workingDrawingOrder.indexOf(drawingId);
|
|
355
|
+
if (currentIndex < 0 || currentIndex === targetIndex) continue;
|
|
356
|
+
const action = jsonX.moveOp([DRAWINGS_ORDER_KEY, currentIndex], [DRAWINGS_ORDER_KEY, targetIndex]);
|
|
357
|
+
if (action) rawActions.push(action);
|
|
358
|
+
workingDrawingOrder.splice(currentIndex, 1);
|
|
359
|
+
workingDrawingOrder.splice(targetIndex, 0, drawingId);
|
|
360
|
+
}
|
|
361
|
+
return rawActions.reduce((actions, action) => JSONX.compose(actions, action), null);
|
|
362
|
+
}
|
|
329
363
|
/**
|
|
330
364
|
* The command to arrange drawings.
|
|
331
365
|
*/
|
|
@@ -334,39 +368,18 @@ const SetDocDrawingArrangeCommand = {
|
|
|
334
368
|
type: CommandType.COMMAND,
|
|
335
369
|
handler: (accessor, params) => {
|
|
336
370
|
const commandService = accessor.get(ICommandService);
|
|
337
|
-
const docDrawingService = accessor.get(IDocDrawingService);
|
|
338
371
|
if (params == null) return false;
|
|
339
|
-
const { unitId,
|
|
340
|
-
const
|
|
372
|
+
const { unitId, drawingIds, arrangeType } = params;
|
|
373
|
+
const documentDataModel = accessor.get(IUniverInstanceService).getUnit(unitId, UniverInstanceType.UNIVER_DOC);
|
|
374
|
+
const drawingOrder = documentDataModel === null || documentDataModel === void 0 ? void 0 : documentDataModel.getDrawingsOrder();
|
|
375
|
+
if (!drawingOrder) return false;
|
|
376
|
+
const actions = createDrawingOrderActions(drawingOrder, getArrangedDrawingOrder(drawingOrder, drawingIds, arrangeType));
|
|
377
|
+
if (JSONX.isNoop(actions)) return false;
|
|
378
|
+
const result = commandService.syncExecuteCommand(RichTextEditingMutation.id, {
|
|
341
379
|
unitId,
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
};
|
|
345
|
-
let jsonOp;
|
|
346
|
-
if (arrangeType === ArrangeTypeEnum.forward) jsonOp = docDrawingService.getForwardDrawingsOp(drawingOrderMapParam);
|
|
347
|
-
else if (arrangeType === ArrangeTypeEnum.backward) jsonOp = docDrawingService.getBackwardDrawingOp(drawingOrderMapParam);
|
|
348
|
-
else if (arrangeType === ArrangeTypeEnum.front) jsonOp = docDrawingService.getFrontDrawingsOp(drawingOrderMapParam);
|
|
349
|
-
else if (arrangeType === ArrangeTypeEnum.back) jsonOp = docDrawingService.getBackDrawingsOp(drawingOrderMapParam);
|
|
350
|
-
if (jsonOp == null) return false;
|
|
351
|
-
const { redo } = jsonOp;
|
|
352
|
-
if (redo == null) return false;
|
|
353
|
-
const rawActions = [];
|
|
354
|
-
let redoCopy = Tools.deepClone(redo);
|
|
355
|
-
redoCopy = redoCopy.slice(3);
|
|
356
|
-
redoCopy.unshift("drawingsOrder");
|
|
357
|
-
rawActions.push(redoCopy);
|
|
358
|
-
const doMutation = {
|
|
359
|
-
id: RichTextEditingMutation.id,
|
|
360
|
-
params: {
|
|
361
|
-
unitId,
|
|
362
|
-
actions: [],
|
|
363
|
-
textRanges: null
|
|
364
|
-
}
|
|
365
|
-
};
|
|
366
|
-
doMutation.params.actions = rawActions.reduce((acc, cur) => {
|
|
367
|
-
return JSONX.compose(acc, cur);
|
|
368
|
-
}, null);
|
|
369
|
-
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
380
|
+
actions,
|
|
381
|
+
textRanges: null
|
|
382
|
+
});
|
|
370
383
|
return Boolean(result);
|
|
371
384
|
}
|
|
372
385
|
};
|
|
@@ -411,11 +424,43 @@ const UpdateDrawingDocTransformCommand = {
|
|
|
411
424
|
|
|
412
425
|
//#endregion
|
|
413
426
|
//#region src/commands/commands/update-doc-drawing-wrapping-style.command.ts
|
|
427
|
+
/**
|
|
428
|
+
* Controls how a document drawing participates in text layout.
|
|
429
|
+
*
|
|
430
|
+
* `INLINE`, `WRAP_SQUARE`, and `WRAP_TOP_AND_BOTTOM` participate in text layout and can cause text to reflow.
|
|
431
|
+
* `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles and do not cause text to reflow.
|
|
432
|
+
*/
|
|
414
433
|
let TextWrappingStyle = /* @__PURE__ */ function(TextWrappingStyle) {
|
|
434
|
+
/**
|
|
435
|
+
* Places the drawing in the text flow like a character.
|
|
436
|
+
*
|
|
437
|
+
* The drawing occupies layout space and does not overlap surrounding text. Its position is determined by its
|
|
438
|
+
* document range, so floating position settings have no visible effect.
|
|
439
|
+
*/
|
|
415
440
|
TextWrappingStyle["INLINE"] = "inline";
|
|
441
|
+
/**
|
|
442
|
+
* Floats the drawing behind document text without causing the text to reflow.
|
|
443
|
+
*
|
|
444
|
+
* Use this style for backgrounds or watermarks. Text can overlap the drawing, so ensure that it remains readable.
|
|
445
|
+
*/
|
|
416
446
|
TextWrappingStyle["BEHIND_TEXT"] = "behindText";
|
|
447
|
+
/**
|
|
448
|
+
* Floats the drawing in front of document text without causing the text to reflow.
|
|
449
|
+
*
|
|
450
|
+
* The drawing can cover overlapping text. Use this style only when an overlay is intentional.
|
|
451
|
+
*/
|
|
417
452
|
TextWrappingStyle["IN_FRONT_OF_TEXT"] = "inFrontOfText";
|
|
453
|
+
/**
|
|
454
|
+
* Floats the drawing and wraps text around its rectangular bounds.
|
|
455
|
+
*
|
|
456
|
+
* Use this style for images that should appear beside body text, such as portraits or illustrations.
|
|
457
|
+
*/
|
|
418
458
|
TextWrappingStyle["WRAP_SQUARE"] = "wrapSquare";
|
|
459
|
+
/**
|
|
460
|
+
* Floats the drawing in a horizontal band, with text only above and below it.
|
|
461
|
+
*
|
|
462
|
+
* Use this style for wide figures or standalone illustrations that should not have text beside them.
|
|
463
|
+
*/
|
|
419
464
|
TextWrappingStyle["WRAP_TOP_AND_BOTTOM"] = "wrapTopAndBottom";
|
|
420
465
|
return TextWrappingStyle;
|
|
421
466
|
}({});
|
|
@@ -484,7 +529,12 @@ const UpdateDocDrawingWrappingStyleCommand = {
|
|
|
484
529
|
};
|
|
485
530
|
|
|
486
531
|
//#endregion
|
|
487
|
-
//#region
|
|
532
|
+
//#region src/services/doc-drawing.service.ts
|
|
533
|
+
var DocDrawingService = class extends UnitDrawingService {};
|
|
534
|
+
const IDocDrawingService = createIdentifier("univer.doc.plugin.doc-drawing.service");
|
|
535
|
+
|
|
536
|
+
//#endregion
|
|
537
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
|
|
488
538
|
function __decorateParam(paramIndex, decorator) {
|
|
489
539
|
return function(target, key) {
|
|
490
540
|
decorator(target, key, paramIndex);
|
|
@@ -492,7 +542,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
492
542
|
}
|
|
493
543
|
|
|
494
544
|
//#endregion
|
|
495
|
-
//#region \0@oxc-project+runtime@0.
|
|
545
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
|
|
496
546
|
function __decorate(decorators, target, key, desc) {
|
|
497
547
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
498
548
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -625,7 +675,7 @@ DocDrawingController = __decorate([
|
|
|
625
675
|
//#endregion
|
|
626
676
|
//#region package.json
|
|
627
677
|
var name = "@univerjs/docs-drawing";
|
|
628
|
-
var version = "1.0.0-alpha.
|
|
678
|
+
var version = "1.0.0-alpha.8";
|
|
629
679
|
|
|
630
680
|
//#endregion
|
|
631
681
|
//#region src/config/config.ts
|
|
@@ -674,7 +724,11 @@ _defineProperty(UniverDocsDrawingPlugin, "pluginName", DOCS_DRAWING_PLUGIN);
|
|
|
674
724
|
_defineProperty(UniverDocsDrawingPlugin, "packageName", name);
|
|
675
725
|
_defineProperty(UniverDocsDrawingPlugin, "version", version);
|
|
676
726
|
_defineProperty(UniverDocsDrawingPlugin, "type", UniverInstanceType.UNIVER_DOC);
|
|
677
|
-
UniverDocsDrawingPlugin = __decorate([
|
|
727
|
+
UniverDocsDrawingPlugin = __decorate([
|
|
728
|
+
DependentOn(UniverDocsPlugin, UniverDrawingPlugin),
|
|
729
|
+
__decorateParam(1, Inject(Injector)),
|
|
730
|
+
__decorateParam(2, IConfigService)
|
|
731
|
+
], UniverDocsDrawingPlugin);
|
|
678
732
|
|
|
679
733
|
//#endregion
|
|
680
734
|
export { DOCS_DRAWING_PLUGIN, DocDrawingAdapterService, DocDrawingController, DocDrawingService, IDocDrawingAdapterService, IDocDrawingService, InsertDocDrawingCommand, RemoveDocDrawingCommand, SetDocDrawingArrangeCommand, TextWrappingStyle, UniverDocsDrawingPlugin, UpdateDocDrawingWrappingStyleCommand, UpdateDrawingDocTransformCommand, WRAPPING_STYLE_TO_LAYOUT_TYPE, getDocDrawingRenderOrder };
|
package/lib/facade.js
CHANGED
|
@@ -257,6 +257,11 @@ var FDocumentImage = class {
|
|
|
257
257
|
}
|
|
258
258
|
/**
|
|
259
259
|
* Sets the image wrapping style.
|
|
260
|
+
*
|
|
261
|
+
* Use `INLINE` to place the image in the text flow, `WRAP_SQUARE` to flow text beside it, or
|
|
262
|
+
* `WRAP_TOP_AND_BOTTOM` to keep text above and below it. `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` do not reserve space
|
|
263
|
+
* in the text layout and can overlap text.
|
|
264
|
+
*
|
|
260
265
|
* When switching from inline to a floating style in a UI environment, the current visual position is preserved.
|
|
261
266
|
* @param {TextWrappingStyle} wrappingStyle The wrapping style to apply.
|
|
262
267
|
* @returns {boolean} `true` when the update command succeeds; otherwise, `false`.
|
|
@@ -266,6 +271,7 @@ var FDocumentImage = class {
|
|
|
266
271
|
* const image = fDocument.getImages()[0];
|
|
267
272
|
*
|
|
268
273
|
* if (image) {
|
|
274
|
+
* // Float the image beside body text without covering it.
|
|
269
275
|
* const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
|
|
270
276
|
* console.log(success);
|
|
271
277
|
* }
|
|
@@ -434,7 +440,10 @@ var FDocumentImageMixin = class extends FDocument {
|
|
|
434
440
|
var _options$wrappingStyl, _options$angle, _options$positionH, _options$positionV;
|
|
435
441
|
const unitId = this.getId();
|
|
436
442
|
const imageId = generateRandomId(6);
|
|
437
|
-
const size =
|
|
443
|
+
const size = options.width != null && options.height != null ? {
|
|
444
|
+
width: options.width,
|
|
445
|
+
height: options.height
|
|
446
|
+
} : resolveImageSize(await this._getIntrinsicSize(options.source, options.imageSourceType), options);
|
|
438
447
|
const defaultTransform = buildDocTransform(size.width, size.height);
|
|
439
448
|
const wrappingStyle = (_options$wrappingStyl = options.wrappingStyle) !== null && _options$wrappingStyl !== void 0 ? _options$wrappingStyl : TextWrappingStyle.INLINE;
|
|
440
449
|
const docTransform = {
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getCustomBlockIdsInSelections, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
|
|
2
|
-
import { DocSelectionManagerService, RichTextEditingMutation, getContentInsertRange, normalizeTextRange } from "@univerjs/docs";
|
|
3
|
-
import { IDrawingManagerService, UnitDrawingService } from "@univerjs/drawing";
|
|
1
|
+
import { ArrangeTypeEnum, BooleanNumber, BuildTextUtils, CommandType, DependentOn, Disposable, ICommandService, IConfigService, IResourceManagerService, IUndoRedoService, IUniverInstanceService, Inject, Injector, JSONX, MemoryCursor, Plugin, PositionedObjectLayoutType, TextX, TextXActionType, Tools, UniverInstanceType, createIdentifier, getCustomBlockIdsInSelections, getRichTextEditPath, merge, toDisposable, touchDependencies } from "@univerjs/core";
|
|
2
|
+
import { DocSelectionManagerService, RichTextEditingMutation, UniverDocsPlugin, getContentInsertRange, normalizeTextRange } from "@univerjs/docs";
|
|
3
|
+
import { IDrawingManagerService, UnitDrawingService, UniverDrawingPlugin } from "@univerjs/drawing";
|
|
4
4
|
|
|
5
5
|
//#region src/commands/commands/insert-doc-drawing.command.ts
|
|
6
6
|
/**
|
|
@@ -116,7 +116,7 @@ function resolveDocDrawingInsertTextRange(accessor, unitId, textRange) {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
//#endregion
|
|
119
|
-
//#region \0@oxc-project+runtime@0.
|
|
119
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js
|
|
120
120
|
function _typeof(o) {
|
|
121
121
|
"@babel/helpers - typeof";
|
|
122
122
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -127,7 +127,7 @@ function _typeof(o) {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
//#endregion
|
|
130
|
-
//#region \0@oxc-project+runtime@0.
|
|
130
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js
|
|
131
131
|
function toPrimitive(t, r) {
|
|
132
132
|
if ("object" != _typeof(t) || !t) return t;
|
|
133
133
|
var e = t[Symbol.toPrimitive];
|
|
@@ -140,14 +140,14 @@ function toPrimitive(t, r) {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
//#endregion
|
|
143
|
-
//#region \0@oxc-project+runtime@0.
|
|
143
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js
|
|
144
144
|
function toPropertyKey(t) {
|
|
145
145
|
var i = toPrimitive(t, "string");
|
|
146
146
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
//#endregion
|
|
150
|
-
//#region \0@oxc-project+runtime@0.
|
|
150
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js
|
|
151
151
|
function _defineProperty(e, r, t) {
|
|
152
152
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
153
153
|
value: t,
|
|
@@ -319,13 +319,47 @@ function executeMutations(mutations, commandService) {
|
|
|
319
319
|
return true;
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
-
//#endregion
|
|
323
|
-
//#region src/services/doc-drawing.service.ts
|
|
324
|
-
var DocDrawingService = class extends UnitDrawingService {};
|
|
325
|
-
const IDocDrawingService = createIdentifier("univer.doc.plugin.doc-drawing.service");
|
|
326
|
-
|
|
327
322
|
//#endregion
|
|
328
323
|
//#region src/commands/commands/set-drawing-arrange.command.ts
|
|
324
|
+
const DRAWINGS_ORDER_KEY = "drawingsOrder";
|
|
325
|
+
/**
|
|
326
|
+
* Calculates the target model order. Adjacent moves treat selected drawings as a group,
|
|
327
|
+
* so selected drawings keep their relative order instead of crossing each other.
|
|
328
|
+
*/
|
|
329
|
+
function getArrangedDrawingOrder(drawingOrder, drawingIds, arrangeType) {
|
|
330
|
+
const selectedDrawingIds = new Set(drawingIds.filter((drawingId) => drawingOrder.includes(drawingId)));
|
|
331
|
+
const arrangedDrawingOrder = [...drawingOrder];
|
|
332
|
+
if (selectedDrawingIds.size === 0) return arrangedDrawingOrder;
|
|
333
|
+
if (arrangeType === ArrangeTypeEnum.forward) {
|
|
334
|
+
for (let index = arrangedDrawingOrder.length - 2; index >= 0; index--) if (selectedDrawingIds.has(arrangedDrawingOrder[index]) && !selectedDrawingIds.has(arrangedDrawingOrder[index + 1])) [arrangedDrawingOrder[index], arrangedDrawingOrder[index + 1]] = [arrangedDrawingOrder[index + 1], arrangedDrawingOrder[index]];
|
|
335
|
+
} else if (arrangeType === ArrangeTypeEnum.backward) {
|
|
336
|
+
for (let index = 1; index < arrangedDrawingOrder.length; index++) if (selectedDrawingIds.has(arrangedDrawingOrder[index]) && !selectedDrawingIds.has(arrangedDrawingOrder[index - 1])) [arrangedDrawingOrder[index], arrangedDrawingOrder[index - 1]] = [arrangedDrawingOrder[index - 1], arrangedDrawingOrder[index]];
|
|
337
|
+
} else if (arrangeType === ArrangeTypeEnum.front || arrangeType === ArrangeTypeEnum.back) {
|
|
338
|
+
const selected = arrangedDrawingOrder.filter((drawingId) => selectedDrawingIds.has(drawingId));
|
|
339
|
+
const unselected = arrangedDrawingOrder.filter((drawingId) => !selectedDrawingIds.has(drawingId));
|
|
340
|
+
return arrangeType === ArrangeTypeEnum.front ? [...unselected, ...selected] : [...selected, ...unselected];
|
|
341
|
+
}
|
|
342
|
+
return arrangedDrawingOrder;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Converts the target order into granular JSONX move operations. This avoids replacing
|
|
346
|
+
* the entire drawingsOrder array and keeps collaboration conflicts scoped to moved items.
|
|
347
|
+
*/
|
|
348
|
+
function createDrawingOrderActions(drawingOrder, arrangedDrawingOrder) {
|
|
349
|
+
const jsonX = JSONX.getInstance();
|
|
350
|
+
const workingDrawingOrder = [...drawingOrder];
|
|
351
|
+
const rawActions = [];
|
|
352
|
+
for (let targetIndex = 0; targetIndex < arrangedDrawingOrder.length; targetIndex++) {
|
|
353
|
+
const drawingId = arrangedDrawingOrder[targetIndex];
|
|
354
|
+
const currentIndex = workingDrawingOrder.indexOf(drawingId);
|
|
355
|
+
if (currentIndex < 0 || currentIndex === targetIndex) continue;
|
|
356
|
+
const action = jsonX.moveOp([DRAWINGS_ORDER_KEY, currentIndex], [DRAWINGS_ORDER_KEY, targetIndex]);
|
|
357
|
+
if (action) rawActions.push(action);
|
|
358
|
+
workingDrawingOrder.splice(currentIndex, 1);
|
|
359
|
+
workingDrawingOrder.splice(targetIndex, 0, drawingId);
|
|
360
|
+
}
|
|
361
|
+
return rawActions.reduce((actions, action) => JSONX.compose(actions, action), null);
|
|
362
|
+
}
|
|
329
363
|
/**
|
|
330
364
|
* The command to arrange drawings.
|
|
331
365
|
*/
|
|
@@ -334,39 +368,18 @@ const SetDocDrawingArrangeCommand = {
|
|
|
334
368
|
type: CommandType.COMMAND,
|
|
335
369
|
handler: (accessor, params) => {
|
|
336
370
|
const commandService = accessor.get(ICommandService);
|
|
337
|
-
const docDrawingService = accessor.get(IDocDrawingService);
|
|
338
371
|
if (params == null) return false;
|
|
339
|
-
const { unitId,
|
|
340
|
-
const
|
|
372
|
+
const { unitId, drawingIds, arrangeType } = params;
|
|
373
|
+
const documentDataModel = accessor.get(IUniverInstanceService).getUnit(unitId, UniverInstanceType.UNIVER_DOC);
|
|
374
|
+
const drawingOrder = documentDataModel === null || documentDataModel === void 0 ? void 0 : documentDataModel.getDrawingsOrder();
|
|
375
|
+
if (!drawingOrder) return false;
|
|
376
|
+
const actions = createDrawingOrderActions(drawingOrder, getArrangedDrawingOrder(drawingOrder, drawingIds, arrangeType));
|
|
377
|
+
if (JSONX.isNoop(actions)) return false;
|
|
378
|
+
const result = commandService.syncExecuteCommand(RichTextEditingMutation.id, {
|
|
341
379
|
unitId,
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
};
|
|
345
|
-
let jsonOp;
|
|
346
|
-
if (arrangeType === ArrangeTypeEnum.forward) jsonOp = docDrawingService.getForwardDrawingsOp(drawingOrderMapParam);
|
|
347
|
-
else if (arrangeType === ArrangeTypeEnum.backward) jsonOp = docDrawingService.getBackwardDrawingOp(drawingOrderMapParam);
|
|
348
|
-
else if (arrangeType === ArrangeTypeEnum.front) jsonOp = docDrawingService.getFrontDrawingsOp(drawingOrderMapParam);
|
|
349
|
-
else if (arrangeType === ArrangeTypeEnum.back) jsonOp = docDrawingService.getBackDrawingsOp(drawingOrderMapParam);
|
|
350
|
-
if (jsonOp == null) return false;
|
|
351
|
-
const { redo } = jsonOp;
|
|
352
|
-
if (redo == null) return false;
|
|
353
|
-
const rawActions = [];
|
|
354
|
-
let redoCopy = Tools.deepClone(redo);
|
|
355
|
-
redoCopy = redoCopy.slice(3);
|
|
356
|
-
redoCopy.unshift("drawingsOrder");
|
|
357
|
-
rawActions.push(redoCopy);
|
|
358
|
-
const doMutation = {
|
|
359
|
-
id: RichTextEditingMutation.id,
|
|
360
|
-
params: {
|
|
361
|
-
unitId,
|
|
362
|
-
actions: [],
|
|
363
|
-
textRanges: null
|
|
364
|
-
}
|
|
365
|
-
};
|
|
366
|
-
doMutation.params.actions = rawActions.reduce((acc, cur) => {
|
|
367
|
-
return JSONX.compose(acc, cur);
|
|
368
|
-
}, null);
|
|
369
|
-
const result = commandService.syncExecuteCommand(doMutation.id, doMutation.params);
|
|
380
|
+
actions,
|
|
381
|
+
textRanges: null
|
|
382
|
+
});
|
|
370
383
|
return Boolean(result);
|
|
371
384
|
}
|
|
372
385
|
};
|
|
@@ -411,11 +424,43 @@ const UpdateDrawingDocTransformCommand = {
|
|
|
411
424
|
|
|
412
425
|
//#endregion
|
|
413
426
|
//#region src/commands/commands/update-doc-drawing-wrapping-style.command.ts
|
|
427
|
+
/**
|
|
428
|
+
* Controls how a document drawing participates in text layout.
|
|
429
|
+
*
|
|
430
|
+
* `INLINE`, `WRAP_SQUARE`, and `WRAP_TOP_AND_BOTTOM` participate in text layout and can cause text to reflow.
|
|
431
|
+
* `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles and do not cause text to reflow.
|
|
432
|
+
*/
|
|
414
433
|
let TextWrappingStyle = /* @__PURE__ */ function(TextWrappingStyle) {
|
|
434
|
+
/**
|
|
435
|
+
* Places the drawing in the text flow like a character.
|
|
436
|
+
*
|
|
437
|
+
* The drawing occupies layout space and does not overlap surrounding text. Its position is determined by its
|
|
438
|
+
* document range, so floating position settings have no visible effect.
|
|
439
|
+
*/
|
|
415
440
|
TextWrappingStyle["INLINE"] = "inline";
|
|
441
|
+
/**
|
|
442
|
+
* Floats the drawing behind document text without causing the text to reflow.
|
|
443
|
+
*
|
|
444
|
+
* Use this style for backgrounds or watermarks. Text can overlap the drawing, so ensure that it remains readable.
|
|
445
|
+
*/
|
|
416
446
|
TextWrappingStyle["BEHIND_TEXT"] = "behindText";
|
|
447
|
+
/**
|
|
448
|
+
* Floats the drawing in front of document text without causing the text to reflow.
|
|
449
|
+
*
|
|
450
|
+
* The drawing can cover overlapping text. Use this style only when an overlay is intentional.
|
|
451
|
+
*/
|
|
417
452
|
TextWrappingStyle["IN_FRONT_OF_TEXT"] = "inFrontOfText";
|
|
453
|
+
/**
|
|
454
|
+
* Floats the drawing and wraps text around its rectangular bounds.
|
|
455
|
+
*
|
|
456
|
+
* Use this style for images that should appear beside body text, such as portraits or illustrations.
|
|
457
|
+
*/
|
|
418
458
|
TextWrappingStyle["WRAP_SQUARE"] = "wrapSquare";
|
|
459
|
+
/**
|
|
460
|
+
* Floats the drawing in a horizontal band, with text only above and below it.
|
|
461
|
+
*
|
|
462
|
+
* Use this style for wide figures or standalone illustrations that should not have text beside them.
|
|
463
|
+
*/
|
|
419
464
|
TextWrappingStyle["WRAP_TOP_AND_BOTTOM"] = "wrapTopAndBottom";
|
|
420
465
|
return TextWrappingStyle;
|
|
421
466
|
}({});
|
|
@@ -484,7 +529,12 @@ const UpdateDocDrawingWrappingStyleCommand = {
|
|
|
484
529
|
};
|
|
485
530
|
|
|
486
531
|
//#endregion
|
|
487
|
-
//#region
|
|
532
|
+
//#region src/services/doc-drawing.service.ts
|
|
533
|
+
var DocDrawingService = class extends UnitDrawingService {};
|
|
534
|
+
const IDocDrawingService = createIdentifier("univer.doc.plugin.doc-drawing.service");
|
|
535
|
+
|
|
536
|
+
//#endregion
|
|
537
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorateParam.js
|
|
488
538
|
function __decorateParam(paramIndex, decorator) {
|
|
489
539
|
return function(target, key) {
|
|
490
540
|
decorator(target, key, paramIndex);
|
|
@@ -492,7 +542,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
492
542
|
}
|
|
493
543
|
|
|
494
544
|
//#endregion
|
|
495
|
-
//#region \0@oxc-project+runtime@0.
|
|
545
|
+
//#region \0@oxc-project+runtime@0.140.0/helpers/esm/decorate.js
|
|
496
546
|
function __decorate(decorators, target, key, desc) {
|
|
497
547
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
498
548
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -625,7 +675,7 @@ DocDrawingController = __decorate([
|
|
|
625
675
|
//#endregion
|
|
626
676
|
//#region package.json
|
|
627
677
|
var name = "@univerjs/docs-drawing";
|
|
628
|
-
var version = "1.0.0-alpha.
|
|
678
|
+
var version = "1.0.0-alpha.8";
|
|
629
679
|
|
|
630
680
|
//#endregion
|
|
631
681
|
//#region src/config/config.ts
|
|
@@ -674,7 +724,11 @@ _defineProperty(UniverDocsDrawingPlugin, "pluginName", DOCS_DRAWING_PLUGIN);
|
|
|
674
724
|
_defineProperty(UniverDocsDrawingPlugin, "packageName", name);
|
|
675
725
|
_defineProperty(UniverDocsDrawingPlugin, "version", version);
|
|
676
726
|
_defineProperty(UniverDocsDrawingPlugin, "type", UniverInstanceType.UNIVER_DOC);
|
|
677
|
-
UniverDocsDrawingPlugin = __decorate([
|
|
727
|
+
UniverDocsDrawingPlugin = __decorate([
|
|
728
|
+
DependentOn(UniverDocsPlugin, UniverDrawingPlugin),
|
|
729
|
+
__decorateParam(1, Inject(Injector)),
|
|
730
|
+
__decorateParam(2, IConfigService)
|
|
731
|
+
], UniverDocsDrawingPlugin);
|
|
678
732
|
|
|
679
733
|
//#endregion
|
|
680
734
|
export { DOCS_DRAWING_PLUGIN, DocDrawingAdapterService, DocDrawingController, DocDrawingService, IDocDrawingAdapterService, IDocDrawingService, InsertDocDrawingCommand, RemoveDocDrawingCommand, SetDocDrawingArrangeCommand, TextWrappingStyle, UniverDocsDrawingPlugin, UpdateDocDrawingWrappingStyleCommand, UpdateDrawingDocTransformCommand, WRAPPING_STYLE_TO_LAYOUT_TYPE, getDocDrawingRenderOrder };
|
|
@@ -16,11 +16,43 @@
|
|
|
16
16
|
import type { ICommand } from '@univerjs/core';
|
|
17
17
|
import type { IDocDrawing } from '../../services/doc-drawing.service';
|
|
18
18
|
import { PositionedObjectLayoutType } from '@univerjs/core';
|
|
19
|
+
/**
|
|
20
|
+
* Controls how a document drawing participates in text layout.
|
|
21
|
+
*
|
|
22
|
+
* `INLINE`, `WRAP_SQUARE`, and `WRAP_TOP_AND_BOTTOM` participate in text layout and can cause text to reflow.
|
|
23
|
+
* `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles and do not cause text to reflow.
|
|
24
|
+
*/
|
|
19
25
|
export declare enum TextWrappingStyle {
|
|
26
|
+
/**
|
|
27
|
+
* Places the drawing in the text flow like a character.
|
|
28
|
+
*
|
|
29
|
+
* The drawing occupies layout space and does not overlap surrounding text. Its position is determined by its
|
|
30
|
+
* document range, so floating position settings have no visible effect.
|
|
31
|
+
*/
|
|
20
32
|
INLINE = "inline",
|
|
33
|
+
/**
|
|
34
|
+
* Floats the drawing behind document text without causing the text to reflow.
|
|
35
|
+
*
|
|
36
|
+
* Use this style for backgrounds or watermarks. Text can overlap the drawing, so ensure that it remains readable.
|
|
37
|
+
*/
|
|
21
38
|
BEHIND_TEXT = "behindText",
|
|
39
|
+
/**
|
|
40
|
+
* Floats the drawing in front of document text without causing the text to reflow.
|
|
41
|
+
*
|
|
42
|
+
* The drawing can cover overlapping text. Use this style only when an overlay is intentional.
|
|
43
|
+
*/
|
|
22
44
|
IN_FRONT_OF_TEXT = "inFrontOfText",
|
|
45
|
+
/**
|
|
46
|
+
* Floats the drawing and wraps text around its rectangular bounds.
|
|
47
|
+
*
|
|
48
|
+
* Use this style for images that should appear beside body text, such as portraits or illustrations.
|
|
49
|
+
*/
|
|
23
50
|
WRAP_SQUARE = "wrapSquare",
|
|
51
|
+
/**
|
|
52
|
+
* Floats the drawing in a horizontal band, with text only above and below it.
|
|
53
|
+
*
|
|
54
|
+
* Use this style for wide figures or standalone illustrations that should not have text beside them.
|
|
55
|
+
*/
|
|
24
56
|
WRAP_TOP_AND_BOTTOM = "wrapTopAndBottom"
|
|
25
57
|
}
|
|
26
58
|
export declare const WRAPPING_STYLE_TO_LAYOUT_TYPE: Record<TextWrappingStyle, PositionedObjectLayoutType>;
|
|
@@ -228,6 +228,11 @@ export declare class FDocumentImage {
|
|
|
228
228
|
setPositionV(positionV: IObjectPositionV): boolean;
|
|
229
229
|
/**
|
|
230
230
|
* Sets the image wrapping style.
|
|
231
|
+
*
|
|
232
|
+
* Use `INLINE` to place the image in the text flow, `WRAP_SQUARE` to flow text beside it, or
|
|
233
|
+
* `WRAP_TOP_AND_BOTTOM` to keep text above and below it. `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` do not reserve space
|
|
234
|
+
* in the text layout and can overlap text.
|
|
235
|
+
*
|
|
231
236
|
* When switching from inline to a floating style in a UI environment, the current visual position is preserved.
|
|
232
237
|
* @param {TextWrappingStyle} wrappingStyle The wrapping style to apply.
|
|
233
238
|
* @returns {boolean} `true` when the update command succeeds; otherwise, `false`.
|
|
@@ -237,6 +242,7 @@ export declare class FDocumentImage {
|
|
|
237
242
|
* const image = fDocument.getImages()[0];
|
|
238
243
|
*
|
|
239
244
|
* if (image) {
|
|
245
|
+
* // Float the image beside body text without covering it.
|
|
240
246
|
* const success = image.setWrappingStyle(univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE);
|
|
241
247
|
* console.log(success);
|
|
242
248
|
* }
|
|
@@ -40,7 +40,13 @@ export interface IFDocumentInsertImageOptions {
|
|
|
40
40
|
* It has a visible positioning effect only when `wrappingStyle` is not `INLINE`.
|
|
41
41
|
*/
|
|
42
42
|
positionV?: IObjectPositionV;
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* The image wrapping style. Defaults to `TextWrappingStyle.INLINE`.
|
|
45
|
+
*
|
|
46
|
+
* Use `INLINE` to place the image in the text flow, `WRAP_SQUARE` to flow text beside it, or
|
|
47
|
+
* `WRAP_TOP_AND_BOTTOM` to keep text above and below it. `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles:
|
|
48
|
+
* they do not reserve space in the text layout, so text and the image can overlap.
|
|
49
|
+
*/
|
|
44
50
|
wrappingStyle?: TextWrappingStyle;
|
|
45
51
|
/** The document range at which to insert the image. The current selection is used when omitted. */
|
|
46
52
|
textRange?: ITextRangeParam;
|
|
@@ -51,6 +57,9 @@ export interface IFDocumentImageMixin {
|
|
|
51
57
|
* Inserts an image into the document.
|
|
52
58
|
*
|
|
53
59
|
* When width and height are both omitted, the intrinsic size is proportionally limited to 500 by 500 pixels.
|
|
60
|
+
* For ordinary content, prefer `INLINE`, `WRAP_SQUARE`, or `WRAP_TOP_AND_BOTTOM`. Use `BEHIND_TEXT` for
|
|
61
|
+
* backgrounds or watermarks and `IN_FRONT_OF_TEXT` only for intentional overlays, because these two styles do not
|
|
62
|
+
* cause text to reflow.
|
|
54
63
|
*
|
|
55
64
|
* @param {IFDocumentInsertImageOptions} options The image source, optional transform, and insertion range.
|
|
56
65
|
* @returns {Promise<FDocumentImage | null>} The inserted image facade, or `null` when the insertion command fails.
|
|
@@ -61,6 +70,8 @@ export interface IFDocumentImageMixin {
|
|
|
61
70
|
* source: 'https://avatars.githubusercontent.com/u/61444807?s=48&v=4',
|
|
62
71
|
* imageSourceType: univerAPI.Enum.ImageSourceType.URL,
|
|
63
72
|
* width: 320,
|
|
73
|
+
* // Keep the image in the text flow so it cannot cover surrounding text.
|
|
74
|
+
* wrappingStyle: univerAPI.Enum.DocsImageWrappingStyle.INLINE,
|
|
64
75
|
* textRange: {
|
|
65
76
|
* startOffset: 30,
|
|
66
77
|
* },
|
|
@@ -75,6 +86,7 @@ export interface IFDocumentImageMixin {
|
|
|
75
86
|
* source: 'https://avatars.githubusercontent.com/u/61444807?s=48&v=4',
|
|
76
87
|
* imageSourceType: univerAPI.Enum.ImageSourceType.URL,
|
|
77
88
|
* width: 320,
|
|
89
|
+
* // Float the image and let body text flow beside its rectangular bounds.
|
|
78
90
|
* wrappingStyle: univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE,
|
|
79
91
|
* textRange: {
|
|
80
92
|
* startOffset: 30,
|
|
@@ -22,6 +22,9 @@ import { TextWrappingStyle } from '@univerjs/docs-drawing';
|
|
|
22
22
|
export interface IFDocumentImageEnumMixin {
|
|
23
23
|
/**
|
|
24
24
|
* Represents the wrapping styles used by docs image operations.
|
|
25
|
+
*
|
|
26
|
+
* Prefer `INLINE`, `WRAP_SQUARE`, or `WRAP_TOP_AND_BOTTOM` for ordinary document content.
|
|
27
|
+
* `BEHIND_TEXT` and `IN_FRONT_OF_TEXT` are overlay styles that do not cause text to reflow.
|
|
25
28
|
* @example
|
|
26
29
|
* ```ts
|
|
27
30
|
* const fDocument = univerAPI.getActiveDocument();
|
|
@@ -29,6 +32,7 @@ export interface IFDocumentImageEnumMixin {
|
|
|
29
32
|
* source: 'https://avatars.githubusercontent.com/u/61444807?s=48&v=4',
|
|
30
33
|
* imageSourceType: univerAPI.Enum.ImageSourceType.URL,
|
|
31
34
|
* width: 320,
|
|
35
|
+
* // Float the image and wrap body text around its rectangular bounds.
|
|
32
36
|
* wrappingStyle: univerAPI.Enum.DocsImageWrappingStyle.WRAP_SQUARE,
|
|
33
37
|
* textRange: {
|
|
34
38
|
* startOffset: 30,
|
package/lib/umd/facade.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/docs-drawing"),require("@univerjs/docs/facade"),require("@univerjs/drawing"),require("@univerjs/core/facade")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/docs-drawing`,`@univerjs/docs/facade`,`@univerjs/drawing`,`@univerjs/core/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawingFacade={},e.UniverCore,e.UniverDocs,e.UniverDocsDrawing,e.UniverDocsFacade,e.UniverDrawing,e.UniverCoreFacade))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var s=class{constructor(e,t,n){this._document=e,this._imageId=t,this._injector=n}getUnitId(){return this._document.getId()}getId(){return this._imageId}getSource(){var e;return(e=this.getImageData())==null?void 0:e.source}getSourceType(){var e;return(e=this.getImageData())==null?void 0:e.imageSourceType}getSize(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.size)==null?null:e}getAngle(){var e;return(e=this.getImageData())==null?void 0:e.docTransform.angle}getPositionH(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionH)==null?null:e}getPositionV(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionV)==null?null:e}getImageData(){var e;let n=(e=this._document.getDocumentDataModel().getDrawings())==null?void 0:e[this._imageId];return!n||n.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:n}setSize(e,t){return this._updateTransform(`size`,{width:e,height:t})}setRotate(e){return this._updateTransform(`angle`,e)}setPositionH(e){return this._updateTransform(`positionH`,e)}setPositionV(e){return this._updateTransform(`positionV`,e)}setWrappingStyle(e){let n=this.getImageData();return n?this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDocDrawingWrappingStyleCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[n],wrappingStyle:e}):!1}setForward(){return this._arrange(t.ArrangeTypeEnum.forward)}setBackward(){return this._arrange(t.ArrangeTypeEnum.backward)}setBack(){return this._arrange(t.ArrangeTypeEnum.back)}setFront(){return this._arrange(t.ArrangeTypeEnum.front)}remove(){let e=this.getImageData(),n=this._getTextRange();return!e||!n?!1:this._injector.get(t.ICommandService).syncExecuteCommand(r.RemoveDocDrawingCommand.id,{unitId:this.getUnitId(),drawings:[{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingId:this._imageId,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE}],textRange:n})}_updateTransform(e,n){return this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDrawingDocTransformCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[{drawingId:this._imageId,key:e,value:n}]})}_arrange(e){return this._injector.get(t.ICommandService).syncExecuteCommand(r.SetDocDrawingArrangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingIds:[this._imageId],arrangeType:e})}_getTextRange(){let{body:e,headers:t={},footers:n={}}=this._document.getDocumentDataModel().getSnapshot(),r=[{segmentId:``,body:e},...Object.entries(t).map(([e,t])=>({segmentId:e,body:t.body})),...Object.entries(n).map(([e,t])=>({segmentId:e,body:t.body}))];for(let{segmentId:e,body:t}of r){var i;let n=t==null||(i=t.customBlocks)==null?void 0:i.find(e=>e.blockId===this._imageId);if(n)return{startOffset:n.startIndex,endOffset:n.startIndex,collapsed:!0,segmentId:e}}return null}},c=class extends i.FDocument{async insertImage(e){var i,a,o,c;let u=this.getId(),d=(0,t.generateRandomId)(6),f=l(await this._getIntrinsicSize(e.source,e.imageSourceType),e),p=(0,n.buildDocTransform)(f.width,f.height),m=(i=e.wrappingStyle)==null?r.TextWrappingStyle.INLINE:i,h={...p,angle:(a=e.angle)==null?p.angle:a,positionH:(o=e.positionH)==null?p.positionH:o,positionV:(c=e.positionV)==null?p.positionV:c},g=(0,n.docDrawingPositionToTransform)(h),_={unitId:u,subUnitId:u,drawingId:d,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.imageSourceType,source:e.source,transform:g,docTransform:h,behindDoc:m===r.TextWrappingStyle.BEHIND_TEXT?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE,title:``,description:``,layoutType:r.WRAPPING_STYLE_TO_LAYOUT_TYPE[m],wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0};return this._injector.get(t.ICommandService).syncExecuteCommand(r.InsertDocDrawingCommand.id,{unitId:u,drawings:[_],textRange:e.textRange})?this._injector.createInstance(s,this,d,this._injector):null}getImage(e){var n;let r=(n=this.getDocumentDataModel().getDrawings())==null?void 0:n[e];return!r||r.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:this._injector.createInstance(s,this,e,this._injector)}getImages(){var e,n;let r=this.getDocumentDataModel(),i=(e=r.getDrawings())==null?{}:e;return((n=r.getDrawingsOrder())==null?Object.keys(i):n).filter(e=>{var n;return((n=i[e])==null?void 0:n.drawingType)===t.DrawingTypeEnum.DRAWING_IMAGE}).map(e=>this._injector.createInstance(s,this,e,this._injector))}async _getIntrinsicSize(e,n){let r=this._injector.has(t.IImageIoService)?this._injector.get(t.IImageIoService):null,i=e;if(n===t.ImageSourceType.UUID&&r)i=await r.getImage(e);else if(n===t.ImageSourceType.URL&&this._injector.has(t.IURLImageService))try{i=await this._injector.get(t.IURLImageService).getImage(e)}catch{i=e}let{width:o,height:s,image:c}=await(0,a.getImageSize)(i);return r==null||r.addImageSourceCache(e,n,c),{width:o,height:s}}};function l(e,t){let{width:n,height:r}=e;if(t.width!=null&&t.height!=null)return{width:t.width,height:t.height};if(t.width!=null)return{width:t.width,height:r*t.width/n};if(t.height!=null)return{width:n*t.height/r,height:t.height};let i=Math.min(1,a.DRAWING_IMAGE_WIDTH_LIMIT/n,a.DRAWING_IMAGE_HEIGHT_LIMIT/r);return{width:n*i,height:r*i}}i.FDocument.extend(c);var u=class extends o.FEnum{get DocsImageWrappingStyle(){return r.TextWrappingStyle}get DocsImageRelativeFromH(){return t.ObjectRelativeFromH}get DocsImageRelativeFromV(){return t.ObjectRelativeFromV}};o.FEnum.extend(u),e.FDocumentImage=s});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/docs-drawing"),require("@univerjs/docs/facade"),require("@univerjs/drawing"),require("@univerjs/core/facade")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/docs-drawing`,`@univerjs/docs/facade`,`@univerjs/drawing`,`@univerjs/core/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawingFacade={},e.UniverCore,e.UniverDocs,e.UniverDocsDrawing,e.UniverDocsFacade,e.UniverDrawing,e.UniverCoreFacade))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var s=class{constructor(e,t,n){this._document=e,this._imageId=t,this._injector=n}getUnitId(){return this._document.getId()}getId(){return this._imageId}getSource(){var e;return(e=this.getImageData())==null?void 0:e.source}getSourceType(){var e;return(e=this.getImageData())==null?void 0:e.imageSourceType}getSize(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.size)==null?null:e}getAngle(){var e;return(e=this.getImageData())==null?void 0:e.docTransform.angle}getPositionH(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionH)==null?null:e}getPositionV(){var e,t;return(e=(t=this.getImageData())==null?void 0:t.docTransform.positionV)==null?null:e}getImageData(){var e;let n=(e=this._document.getDocumentDataModel().getDrawings())==null?void 0:e[this._imageId];return!n||n.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:n}setSize(e,t){return this._updateTransform(`size`,{width:e,height:t})}setRotate(e){return this._updateTransform(`angle`,e)}setPositionH(e){return this._updateTransform(`positionH`,e)}setPositionV(e){return this._updateTransform(`positionV`,e)}setWrappingStyle(e){let n=this.getImageData();return n?this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDocDrawingWrappingStyleCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[n],wrappingStyle:e}):!1}setForward(){return this._arrange(t.ArrangeTypeEnum.forward)}setBackward(){return this._arrange(t.ArrangeTypeEnum.backward)}setBack(){return this._arrange(t.ArrangeTypeEnum.back)}setFront(){return this._arrange(t.ArrangeTypeEnum.front)}remove(){let e=this.getImageData(),n=this._getTextRange();return!e||!n?!1:this._injector.get(t.ICommandService).syncExecuteCommand(r.RemoveDocDrawingCommand.id,{unitId:this.getUnitId(),drawings:[{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingId:this._imageId,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE}],textRange:n})}_updateTransform(e,n){return this._injector.get(t.ICommandService).syncExecuteCommand(r.UpdateDrawingDocTransformCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawings:[{drawingId:this._imageId,key:e,value:n}]})}_arrange(e){return this._injector.get(t.ICommandService).syncExecuteCommand(r.SetDocDrawingArrangeCommand.id,{unitId:this.getUnitId(),subUnitId:this.getUnitId(),drawingIds:[this._imageId],arrangeType:e})}_getTextRange(){let{body:e,headers:t={},footers:n={}}=this._document.getDocumentDataModel().getSnapshot(),r=[{segmentId:``,body:e},...Object.entries(t).map(([e,t])=>({segmentId:e,body:t.body})),...Object.entries(n).map(([e,t])=>({segmentId:e,body:t.body}))];for(let{segmentId:e,body:t}of r){var i;let n=t==null||(i=t.customBlocks)==null?void 0:i.find(e=>e.blockId===this._imageId);if(n)return{startOffset:n.startIndex,endOffset:n.startIndex,collapsed:!0,segmentId:e}}return null}},c=class extends i.FDocument{async insertImage(e){var i,a,o,c;let u=this.getId(),d=(0,t.generateRandomId)(6),f=e.width!=null&&e.height!=null?{width:e.width,height:e.height}:l(await this._getIntrinsicSize(e.source,e.imageSourceType),e),p=(0,n.buildDocTransform)(f.width,f.height),m=(i=e.wrappingStyle)==null?r.TextWrappingStyle.INLINE:i,h={...p,angle:(a=e.angle)==null?p.angle:a,positionH:(o=e.positionH)==null?p.positionH:o,positionV:(c=e.positionV)==null?p.positionV:c},g=(0,n.docDrawingPositionToTransform)(h),_={unitId:u,subUnitId:u,drawingId:d,drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:e.imageSourceType,source:e.source,transform:g,docTransform:h,behindDoc:m===r.TextWrappingStyle.BEHIND_TEXT?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE,title:``,description:``,layoutType:r.WRAPPING_STYLE_TO_LAYOUT_TYPE[m],wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0};return this._injector.get(t.ICommandService).syncExecuteCommand(r.InsertDocDrawingCommand.id,{unitId:u,drawings:[_],textRange:e.textRange})?this._injector.createInstance(s,this,d,this._injector):null}getImage(e){var n;let r=(n=this.getDocumentDataModel().getDrawings())==null?void 0:n[e];return!r||r.drawingType!==t.DrawingTypeEnum.DRAWING_IMAGE?null:this._injector.createInstance(s,this,e,this._injector)}getImages(){var e,n;let r=this.getDocumentDataModel(),i=(e=r.getDrawings())==null?{}:e;return((n=r.getDrawingsOrder())==null?Object.keys(i):n).filter(e=>{var n;return((n=i[e])==null?void 0:n.drawingType)===t.DrawingTypeEnum.DRAWING_IMAGE}).map(e=>this._injector.createInstance(s,this,e,this._injector))}async _getIntrinsicSize(e,n){let r=this._injector.has(t.IImageIoService)?this._injector.get(t.IImageIoService):null,i=e;if(n===t.ImageSourceType.UUID&&r)i=await r.getImage(e);else if(n===t.ImageSourceType.URL&&this._injector.has(t.IURLImageService))try{i=await this._injector.get(t.IURLImageService).getImage(e)}catch{i=e}let{width:o,height:s,image:c}=await(0,a.getImageSize)(i);return r==null||r.addImageSourceCache(e,n,c),{width:o,height:s}}};function l(e,t){let{width:n,height:r}=e;if(t.width!=null&&t.height!=null)return{width:t.width,height:t.height};if(t.width!=null)return{width:t.width,height:r*t.width/n};if(t.height!=null)return{width:n*t.height/r,height:t.height};let i=Math.min(1,a.DRAWING_IMAGE_WIDTH_LIMIT/n,a.DRAWING_IMAGE_HEIGHT_LIMIT/r);return{width:n*i,height:r*i}}i.FDocument.extend(c);var u=class extends o.FEnum{get DocsImageWrappingStyle(){return r.TextWrappingStyle}get DocsImageRelativeFromH(){return t.ObjectRelativeFromH}get DocsImageRelativeFromV(){return t.ObjectRelativeFromV}};o.FEnum.extend(u),e.FDocumentImage=s});
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/drawing")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/drawing`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawing={},e.UniverCore,e.UniverDocs,e.UniverDrawing))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.command.insert-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,o,s,c,l;if(!r)return!1;let u=e.get(t.ICommandService),d=e.get(t.IUniverInstanceService),{unitId:f,drawings:p,textRange:m}=r,h=d.getUnit(f,t.UniverInstanceType.UNIVER_DOC);if(!h)return!1;let g=a(e,f,m);if(!g)return!1;let{collapsed:_,startOffset:v,segmentId:y=``}=g,b=(i=h.getSelfOrHeaderFooterModel(y))==null?void 0:i.getBody();if(!b)return!1;let x=new t.TextX,S=t.JSONX.getInstance(),C=[],w=h.getSnapshot(),T=(o=w.headers)!=null&&o[y]||(s=w.footers)!=null&&s[y]?p.map(e=>{var n;return{...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:(n=e.transforms)==null?e.transform?[e.transform]:null:n}}):p,E=(c=(l=w.drawingsOrder)==null?void 0:l.length)==null?0:c,D=0;if(_)v>0&&x.push({t:t.TextXActionType.RETAIN,len:v});else{var O,k;let e=t.BuildTextUtils.selection.delete([g],b,0,null,!1);x.push(...e);let n=(0,t.getCustomBlockIdsInSelections)(b,[g]),r=(O=h.getDrawings())==null?{}:O,i=(k=h.getDrawingsOrder())==null?[]:k,a=n.sort((e,t)=>i.indexOf(e)>i.indexOf(t)?-1:+(i.indexOf(e)<i.indexOf(t)));if(a.length>0)for(let e of a){let t=r[e],n=i.indexOf(e);if(t==null||n<0)continue;let a=S.removeOp([`drawings`,e],t),o=S.removeOp([`drawingsOrder`,n],e);C.push(a),C.push(o),D++}}x.push({t:t.TextXActionType.INSERT,body:{dataStream:`\b`.repeat(T.length),customBlocks:T.map((e,t)=>({startIndex:t,blockId:e.drawingId}))},len:T.length});let A=(0,t.getRichTextEditPath)(h,y),j=S.editOp(x.serialize(),A);C.push(j);for(let e of T){let{drawingId:t}=e,n=S.insertOp([`drawings`,t],e),r=S.insertOp([`drawingsOrder`,E-D],t);C.push(n),C.push(r)}let M={id:n.RichTextEditingMutation.id,params:{unitId:f,actions:[],textRanges:[]}};return M.params.actions=C.reduce((e,n)=>t.JSONX.compose(e,n),null),!!u.syncExecuteCommand(M.id,M.params)}};function a(e,t,r){var i,a;let o=e.get(n.DocSelectionManagerService).getActiveTextRange(),s=r?(0,n.normalizeTextRange)(r):null,c=s==null?(0,n.getContentInsertRange)(e,t):s;return c?{...o,startOffset:c.startOffset,endOffset:c.endOffset,collapsed:c.startOffset===c.endOffset,segmentId:(i=(a=c.segmentId)==null?o==null?void 0:o.segmentId:a)==null?``:i}:o==null?null:o}function o(e){"@babel/helpers - typeof";return o=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let u=(0,t.createIdentifier)(`doc.drawing-adapter.service`);var d=class{constructor(){l(this,`_adapters`,[])}registerAdapter(e){return this._adapters.push(e),(0,t.toDisposable)(()=>{let t=this._adapters.indexOf(e);t>=0&&this._adapters.splice(t,1)})}getRemoveDrawingMutationInfos(e){let t={redoMutations:[],undoMutations:[]};for(let r of this._adapters){var n;let i=(n=r.getRemoveDrawingMutationInfos)==null?void 0:n.call(r,e);i&&(t.redoMutations.push(...i.redoMutations),t.undoMutations.push(...i.undoMutations))}return t}getEditDrawingCommandInfo(e){for(let n of this._adapters){var t;let r=(t=n.getEditDrawingCommandInfo)==null?void 0:t.call(n,e);if(r)return r}return null}};let f={id:`doc.command.remove-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,a,o,s,c;if(!r)return!1;let l=e.get(t.ICommandService),d=e.get(t.IUndoRedoService),f=e.get(u),m=e.get(t.IUniverInstanceService),h=e.get(n.DocSelectionManagerService),{unitId:g,drawings:_,textRange:v}=r,y=m.getUnit(g,t.UniverInstanceType.UNIVER_DOC);if(!y||_.length===0)return!1;let b=h.getActiveTextRange(),x=v?(0,n.normalizeTextRange)(v):null,S=x==null?(0,n.getContentInsertRange)(e,g):x,C=(i=(a=S==null?void 0:S.segmentId)==null?b==null?void 0:b.segmentId:a)==null?``:i,w=new t.TextX,T=t.JSONX.getInstance(),E=(o=(s=y.getSelfOrHeaderFooterModel(C))==null||(s=s.getBody())==null?void 0:s.customBlocks)==null?[]:o,D=_.map(e=>E.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(D.length===0)return!1;let O=(c=y.getDrawings())==null?{}:c,k=new Map(_.map(e=>[e.drawingId,e])),A=D.map(e=>O[e.blockId]).filter(e=>e!=null),j=[],M=[],N=[];for(let e of D){var P;let{blockId:t}=e,n=O[t];if(n==null)continue;let r=k.get(t),i=f.getRemoveDrawingMutationInfos({unitId:g,subUnitId:(P=r==null?void 0:r.subUnitId)==null?g:P,drawing:n,removeDrawings:A});i.redoMutations.length===0&&i.undoMutations.length===0||(j.push(...i.redoMutations),M.push(...i.undoMutations),N.push(i))}if(!p(N,l))return!1;let F=`doc-drawing-remove-resource:${g}:${D.map(e=>e.blockId).join(`,`)}`,I=null;(j.length>0||M.length>0)&&(I=d.__tempBatchingUndoRedo(g),d.pushUndoRedo({unitID:g,redoMutations:j,undoMutations:M,id:F}));let L=new t.MemoryCursor,R=D[0].startIndex,z=[{startOffset:R,endOffset:R}],B={id:n.RichTextEditingMutation.id,params:{unitId:g,actions:[],textRanges:z}},V=[];for(let e of D){let{startIndex:n}=e;n>L.cursor&&w.push({t:t.TextXActionType.RETAIN,len:n-L.cursor}),w.push({t:t.TextXActionType.DELETE,len:1}),L.moveCursorTo(n+1)}V.push(T.editOp(w.serialize(),(0,t.getRichTextEditPath)(y,C)));for(let e of D){let{blockId:t}=e,n=y.getDrawingsOrder().indexOf(t);V.push(T.removeOp([`drawings`,t],O[t])),V.push(T.removeOp([`drawingsOrder`,n],t))}B.params.actions=V.reduce((e,n)=>t.JSONX.compose(e,n),null);let H=l.syncExecuteCommand(B.id,B.params);return!H&&I!=null?(I.dispose(),d.rollback(F,g),!1):(I==null||I.dispose(),!!H)}};function p(e,t){let n=[];for(let r of e){if(!h(r.redoMutations,t))return m([...n].reverse(),t),!1;n.push(r.undoMutations)}return!0}function m(e,t){e.forEach(e=>h(e,t))}function h(e,t){for(let n of e)if(!t.syncExecuteCommand(n.id,n.params))return!1;return!0}var g=class extends r.UnitDrawingService{};let _=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`),v={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService),a=e.get(_);if(r==null)return!1;let{unitId:o,subUnitId:s,drawingIds:c,arrangeType:l}=r,u={unitId:o,subUnitId:s,drawingIds:c},d;if(l===t.ArrangeTypeEnum.forward?d=a.getForwardDrawingsOp(u):l===t.ArrangeTypeEnum.backward?d=a.getBackwardDrawingOp(u):l===t.ArrangeTypeEnum.front?d=a.getFrontDrawingsOp(u):l===t.ArrangeTypeEnum.back&&(d=a.getBackDrawingsOp(u)),d==null)return!1;let{redo:f}=d;if(f==null)return!1;let p=[],m=t.Tools.deepClone(f);m=m.slice(3),m.unshift(`drawingsOrder`),p.push(m);let h={id:n.RichTextEditingMutation.id,params:{unitId:o,actions:[],textRanges:null}};return h.params.actions=p.reduce((e,n)=>t.JSONX.compose(e,n),null),!!i.syncExecuteCommand(h.id,h.params)}},y={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{unitId:s,drawings:c}=r,l=o.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getSnapshot().drawings)==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let{drawingId:e,key:n,value:r}of c){var p;let i=(p=u[e])==null||(p=p.docTransform)==null?void 0:p[n];if(!t.Tools.diffValue(i,r)){let t=[`drawings`,e,`docTransform`,n];f.push(i===void 0?d.insertOp(t,r):d.replaceOp(t,i,r))}}return!!a.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},b=function(e){return e.INLINE=`inline`,e.BEHIND_TEXT=`behindText`,e.IN_FRONT_OF_TEXT=`inFrontOfText`,e.WRAP_SQUARE=`wrapSquare`,e.WRAP_TOP_AND_BOTTOM=`wrapTopAndBottom`,e}({}),x={inline:t.PositionedObjectLayoutType.INLINE,wrapSquare:t.PositionedObjectLayoutType.WRAP_SQUARE,wrapTopAndBottom:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,inFrontOfText:t.PositionedObjectLayoutType.WRAP_NONE,behindText:t.PositionedObjectLayoutType.WRAP_NONE},S={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let{drawings:a,wrappingStyle:o,unitId:s}=r,c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService).getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getDrawings())==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let e of a){let n=u[e.drawingId];if(!n)continue;let r=x[o];if(n.layoutType!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),o===`behindText`||o===`inFrontOfText`){let r=o===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(o!==`inline`)for(let r of[`positionH`,`positionV`]){var p;let i=(p=e.docTransform)==null?void 0:p[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&f.push(d.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let m={id:n.RichTextEditingMutation.id,params:{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!c.syncExecuteCommand(m.id,m.params)}};function C(e,t){return function(n,r){t(n,r,e)}}function w(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let T=`DOC_DRAWING_PLUGIN`;function E(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=D(t[e.drawingId]);return r===D(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function D(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let O=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._docDrawingService=e,this._drawingManagerService=t,this._resourceManagerService=n,this._univerInstanceService=r,this._commandService=i,this._init()}_init(){this._initSnapshot(),this._initCommands()}_initSnapshot(){let e=e=>{let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(n){let e=n.getSnapshot().drawings,t=n.getSnapshot().drawingsOrder;return JSON.stringify({data:e==null?{}:e,order:t==null?[]:t})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:T,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{var n,r;this._setDrawingDataForUnit(e,{data:(n=t.data)==null?{}:n,order:(r=t.order)==null?[]:r})}}))}_setDrawingDataForUnit(e,t){let n=this._univerInstanceService.getUnit(e);n!=null&&(n.resetDrawing(t.data,t.order),this.loadDrawingDataForUnit(e))}loadDrawingDataForUnit(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(!n)return!1;let r=e,i=n.getDrawings(),a=n.getDrawingsOrder();if(!i||!a)return!1;let o={[r]:{unitId:e,subUnitId:r,data:i,order:a}},s={[r]:{...o[r],order:E(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,y,S,v].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};O=w([C(0,_),C(1,r.IDrawingManagerService),C(2,t.IResourceManagerService),C(3,t.IUniverInstanceService),C(4,t.ICommandService)],O);var k=`@univerjs/docs-drawing`,A=`1.0.0-alpha.6`;let j={},M=class extends t.Plugin{constructor(e=j,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},j,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[O],[d],[u,{useClass:d}],[g],[_,{useClass:g}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[O]])}};l(M,`pluginName`,T),l(M,`packageName`,k),l(M,`version`,A),l(M,`type`,t.UniverInstanceType.UNIVER_DOC),M=w([C(1,(0,t.Inject)(t.Injector)),C(2,t.IConfigService)],M),e.DOCS_DRAWING_PLUGIN=T,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return O}}),e.DocDrawingService=g,e.IDocDrawingAdapterService=u,e.IDocDrawingService=_,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=v,e.TextWrappingStyle=b,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return M}}),e.UpdateDocDrawingWrappingStyleCommand=S,e.UpdateDrawingDocTransformCommand=y,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=x,e.getDocDrawingRenderOrder=E});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/drawing")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/drawing`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsDrawing={},e.UniverCore,e.UniverDocs,e.UniverDrawing))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i={id:`doc.command.insert-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,o,s,c,l;if(!r)return!1;let u=e.get(t.ICommandService),d=e.get(t.IUniverInstanceService),{unitId:f,drawings:p,textRange:m}=r,h=d.getUnit(f,t.UniverInstanceType.UNIVER_DOC);if(!h)return!1;let g=a(e,f,m);if(!g)return!1;let{collapsed:_,startOffset:v,segmentId:y=``}=g,b=(i=h.getSelfOrHeaderFooterModel(y))==null?void 0:i.getBody();if(!b)return!1;let x=new t.TextX,S=t.JSONX.getInstance(),C=[],w=h.getSnapshot(),T=(o=w.headers)!=null&&o[y]||(s=w.footers)!=null&&s[y]?p.map(e=>{var n;return{...e,isMultiTransform:t.BooleanNumber.TRUE,transforms:(n=e.transforms)==null?e.transform?[e.transform]:null:n}}):p,E=(c=(l=w.drawingsOrder)==null?void 0:l.length)==null?0:c,D=0;if(_)v>0&&x.push({t:t.TextXActionType.RETAIN,len:v});else{var O,k;let e=t.BuildTextUtils.selection.delete([g],b,0,null,!1);x.push(...e);let n=(0,t.getCustomBlockIdsInSelections)(b,[g]),r=(O=h.getDrawings())==null?{}:O,i=(k=h.getDrawingsOrder())==null?[]:k,a=n.sort((e,t)=>i.indexOf(e)>i.indexOf(t)?-1:+(i.indexOf(e)<i.indexOf(t)));if(a.length>0)for(let e of a){let t=r[e],n=i.indexOf(e);if(t==null||n<0)continue;let a=S.removeOp([`drawings`,e],t),o=S.removeOp([`drawingsOrder`,n],e);C.push(a),C.push(o),D++}}x.push({t:t.TextXActionType.INSERT,body:{dataStream:`\b`.repeat(T.length),customBlocks:T.map((e,t)=>({startIndex:t,blockId:e.drawingId}))},len:T.length});let A=(0,t.getRichTextEditPath)(h,y),j=S.editOp(x.serialize(),A);C.push(j);for(let e of T){let{drawingId:t}=e,n=S.insertOp([`drawings`,t],e),r=S.insertOp([`drawingsOrder`,E-D],t);C.push(n),C.push(r)}let M={id:n.RichTextEditingMutation.id,params:{unitId:f,actions:[],textRanges:[]}};return M.params.actions=C.reduce((e,n)=>t.JSONX.compose(e,n),null),!!u.syncExecuteCommand(M.id,M.params)}};function a(e,t,r){var i,a;let o=e.get(n.DocSelectionManagerService).getActiveTextRange(),s=r?(0,n.normalizeTextRange)(r):null,c=s==null?(0,n.getContentInsertRange)(e,t):s;return c?{...o,startOffset:c.startOffset,endOffset:c.endOffset,collapsed:c.startOffset===c.endOffset,segmentId:(i=(a=c.segmentId)==null?o==null?void 0:o.segmentId:a)==null?``:i}:o==null?null:o}function o(e){"@babel/helpers - typeof";return o=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let u=(0,t.createIdentifier)(`doc.drawing-adapter.service`);var d=class{constructor(){l(this,`_adapters`,[])}registerAdapter(e){return this._adapters.push(e),(0,t.toDisposable)(()=>{let t=this._adapters.indexOf(e);t>=0&&this._adapters.splice(t,1)})}getRemoveDrawingMutationInfos(e){let t={redoMutations:[],undoMutations:[]};for(let r of this._adapters){var n;let i=(n=r.getRemoveDrawingMutationInfos)==null?void 0:n.call(r,e);i&&(t.redoMutations.push(...i.redoMutations),t.undoMutations.push(...i.undoMutations))}return t}getEditDrawingCommandInfo(e){for(let n of this._adapters){var t;let r=(t=n.getEditDrawingCommandInfo)==null?void 0:t.call(n,e);if(r)return r}return null}};let f={id:`doc.command.remove-doc-image`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i,a,o,s,c;if(!r)return!1;let l=e.get(t.ICommandService),d=e.get(t.IUndoRedoService),f=e.get(u),m=e.get(t.IUniverInstanceService),h=e.get(n.DocSelectionManagerService),{unitId:g,drawings:_,textRange:v}=r,y=m.getUnit(g,t.UniverInstanceType.UNIVER_DOC);if(!y||_.length===0)return!1;let b=h.getActiveTextRange(),x=v?(0,n.normalizeTextRange)(v):null,S=x==null?(0,n.getContentInsertRange)(e,g):x,C=(i=(a=S==null?void 0:S.segmentId)==null?b==null?void 0:b.segmentId:a)==null?``:i,w=new t.TextX,T=t.JSONX.getInstance(),E=(o=(s=y.getSelfOrHeaderFooterModel(C))==null||(s=s.getBody())==null?void 0:s.customBlocks)==null?[]:o,D=_.map(e=>E.find(t=>t.blockId===e.drawingId)).filter(e=>!!e).sort((e,t)=>e.startIndex>t.startIndex?1:-1);if(D.length===0)return!1;let O=(c=y.getDrawings())==null?{}:c,k=new Map(_.map(e=>[e.drawingId,e])),A=D.map(e=>O[e.blockId]).filter(e=>e!=null),j=[],M=[],N=[];for(let e of D){var P;let{blockId:t}=e,n=O[t];if(n==null)continue;let r=k.get(t),i=f.getRemoveDrawingMutationInfos({unitId:g,subUnitId:(P=r==null?void 0:r.subUnitId)==null?g:P,drawing:n,removeDrawings:A});(i.redoMutations.length!==0||i.undoMutations.length!==0)&&(j.push(...i.redoMutations),M.push(...i.undoMutations),N.push(i))}if(!p(N,l))return!1;let F=`doc-drawing-remove-resource:${g}:${D.map(e=>e.blockId).join(`,`)}`,I=null;(j.length>0||M.length>0)&&(I=d.__tempBatchingUndoRedo(g),d.pushUndoRedo({unitID:g,redoMutations:j,undoMutations:M,id:F}));let L=new t.MemoryCursor,R=D[0].startIndex,z=[{startOffset:R,endOffset:R}],B={id:n.RichTextEditingMutation.id,params:{unitId:g,actions:[],textRanges:z}},V=[];for(let e of D){let{startIndex:n}=e;n>L.cursor&&w.push({t:t.TextXActionType.RETAIN,len:n-L.cursor}),w.push({t:t.TextXActionType.DELETE,len:1}),L.moveCursorTo(n+1)}V.push(T.editOp(w.serialize(),(0,t.getRichTextEditPath)(y,C)));for(let e of D){let{blockId:t}=e,n=y.getDrawingsOrder().indexOf(t);V.push(T.removeOp([`drawings`,t],O[t])),V.push(T.removeOp([`drawingsOrder`,n],t))}B.params.actions=V.reduce((e,n)=>t.JSONX.compose(e,n),null);let H=l.syncExecuteCommand(B.id,B.params);return!H&&I!=null?(I.dispose(),d.rollback(F,g),!1):(I==null||I.dispose(),!!H)}};function p(e,t){let n=[];for(let r of e){if(!h(r.redoMutations,t))return m([...n].reverse(),t),!1;n.push(r.undoMutations)}return!0}function m(e,t){e.forEach(e=>h(e,t))}function h(e,t){for(let n of e)if(!t.syncExecuteCommand(n.id,n.params))return!1;return!0}let g=`drawingsOrder`;function _(e,n,r){let i=new Set(n.filter(t=>e.includes(t))),a=[...e];if(i.size===0)return a;if(r===t.ArrangeTypeEnum.forward)for(let e=a.length-2;e>=0;e--)i.has(a[e])&&!i.has(a[e+1])&&([a[e],a[e+1]]=[a[e+1],a[e]]);else if(r===t.ArrangeTypeEnum.backward)for(let e=1;e<a.length;e++)i.has(a[e])&&!i.has(a[e-1])&&([a[e],a[e-1]]=[a[e-1],a[e]]);else if(r===t.ArrangeTypeEnum.front||r===t.ArrangeTypeEnum.back){let e=a.filter(e=>i.has(e)),n=a.filter(e=>!i.has(e));return r===t.ArrangeTypeEnum.front?[...n,...e]:[...e,...n]}return a}function v(e,n){let r=t.JSONX.getInstance(),i=[...e],a=[];for(let e=0;e<n.length;e++){let t=n[e],o=i.indexOf(t);if(o<0||o===e)continue;let s=r.moveOp([g,o],[g,e]);s&&a.push(s),i.splice(o,1),i.splice(e,0,t)}return a.reduce((e,n)=>t.JSONX.compose(e,n),null)}let y={id:`doc.command.set-drawing-arrange`,type:t.CommandType.COMMAND,handler:(e,r)=>{let i=e.get(t.ICommandService);if(r==null)return!1;let{unitId:a,drawingIds:o,arrangeType:s}=r,c=e.get(t.IUniverInstanceService).getUnit(a,t.UniverInstanceType.UNIVER_DOC),l=c==null?void 0:c.getDrawingsOrder();if(!l)return!1;let u=v(l,_(l,o,s));return!t.JSONX.isNoop(u)&&!!i.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:a,actions:u,textRanges:null})}},b={id:`doc.command.update-drawing-doc-transform`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUniverInstanceService),{unitId:s,drawings:c}=r,l=o.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getSnapshot().drawings)==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let{drawingId:e,key:n,value:r}of c){var p;let i=(p=u[e])==null||(p=p.docTransform)==null?void 0:p[n];if(!t.Tools.diffValue(i,r)){let t=[`drawings`,e,`docTransform`,n];f.push(i===void 0?d.insertOp(t,r):d.replaceOp(t,i,r))}}return!!a.syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null,debounce:!0})}},x=function(e){return e.INLINE=`inline`,e.BEHIND_TEXT=`behindText`,e.IN_FRONT_OF_TEXT=`inFrontOfText`,e.WRAP_SQUARE=`wrapSquare`,e.WRAP_TOP_AND_BOTTOM=`wrapTopAndBottom`,e}({}),S={inline:t.PositionedObjectLayoutType.INLINE,wrapSquare:t.PositionedObjectLayoutType.WRAP_SQUARE,wrapTopAndBottom:t.PositionedObjectLayoutType.WRAP_TOP_AND_BOTTOM,inFrontOfText:t.PositionedObjectLayoutType.WRAP_NONE,behindText:t.PositionedObjectLayoutType.WRAP_NONE},C={id:`doc.command.update-doc-drawing-wrapping-style`,type:t.CommandType.COMMAND,handler:(e,r)=>{var i;if(!r)return!1;let{drawings:a,wrappingStyle:o,unitId:s}=r,c=e.get(t.ICommandService),l=e.get(t.IUniverInstanceService).getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!l)return!1;let u=(i=l.getDrawings())==null?{}:i,d=t.JSONX.getInstance(),f=[];for(let e of a){let n=u[e.drawingId];if(!n)continue;let r=S[o];if(n.layoutType!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`layoutType`],n.layoutType,r)),o===`behindText`||o===`inFrontOfText`){let r=o===`behindText`?t.BooleanNumber.TRUE:t.BooleanNumber.FALSE;n.behindDoc!==r&&f.push(d.replaceOp([`drawings`,e.drawingId,`behindDoc`],n.behindDoc,r))}if(o!==`inline`)for(let r of[`positionH`,`positionV`]){var p;let i=(p=e.docTransform)==null?void 0:p[r],a=n.docTransform[r];i&&!t.Tools.diffValue(a,i)&&f.push(d.replaceOp([`drawings`,e.drawingId,`docTransform`,r],a,i))}}let m={id:n.RichTextEditingMutation.id,params:{unitId:s,actions:f.reduce((e,n)=>t.JSONX.compose(e,n),null),textRanges:null}};return!!c.syncExecuteCommand(m.id,m.params)}};var w=class extends r.UnitDrawingService{};let T=(0,t.createIdentifier)(`univer.doc.plugin.doc-drawing.service`);function E(e,t){return function(n,r){t(n,r,e)}}function D(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let O=`DOC_DRAWING_PLUGIN`;function k(e,t={}){return e.map((e,t)=>({drawingId:e,index:t})).sort((e,n)=>{let r=A(t[e.drawingId]);return r===A(t[n.drawingId])?e.index-n.index:r?-1:1}).map(({drawingId:e})=>e)}function A(e){return(e==null?void 0:e.layoutType)===t.PositionedObjectLayoutType.WRAP_NONE&&e.behindDoc===t.BooleanNumber.TRUE}let j=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._docDrawingService=e,this._drawingManagerService=t,this._resourceManagerService=n,this._univerInstanceService=r,this._commandService=i,this._init()}_init(){this._initSnapshot(),this._initCommands()}_initSnapshot(){let e=e=>{let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(n){let e=n.getSnapshot().drawings,t=n.getSnapshot().drawingsOrder;return JSON.stringify({data:e==null?{}:e,order:t==null?[]:t})}return``},n=e=>{if(!e)return{data:{},order:[]};try{return JSON.parse(e)}catch{return{data:{},order:[]}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:O,businesses:[t.UniverInstanceType.UNIVER_DOC],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._setDrawingDataForUnit(e,{data:{},order:[]})},onLoad:(e,t)=>{var n,r;this._setDrawingDataForUnit(e,{data:(n=t.data)==null?{}:n,order:(r=t.order)==null?[]:r})}}))}_setDrawingDataForUnit(e,t){let n=this._univerInstanceService.getUnit(e);n!=null&&(n.resetDrawing(t.data,t.order),this.loadDrawingDataForUnit(e))}loadDrawingDataForUnit(e){let n=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_DOC);if(!n)return!1;let r=e,i=n.getDrawings(),a=n.getDrawingsOrder();if(!i||!a)return!1;let o={[r]:{unitId:e,subUnitId:r,data:i,order:a}},s={[r]:{...o[r],order:k(a,i)}};return this._docDrawingService.registerDrawingData(e,o),this._drawingManagerService.registerDrawingData(e,s),!0}_initCommands(){[i,f,b,C,y].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};j=D([E(0,T),E(1,r.IDrawingManagerService),E(2,t.IResourceManagerService),E(3,t.IUniverInstanceService),E(4,t.ICommandService)],j);var M=`@univerjs/docs-drawing`,N=`1.0.0-alpha.8`;let P={},F=class extends t.Plugin{constructor(e=P,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},P,this._config);this._configService.setConfig(`docs-drawing.config`,i)}onStarting(){[[j],[d],[u,{useClass:d}],[w],[T,{useClass:w}]].forEach(e=>this._injector.add(e)),(0,t.touchDependencies)(this._injector,[[j]])}};l(F,`pluginName`,O),l(F,`packageName`,M),l(F,`version`,N),l(F,`type`,t.UniverInstanceType.UNIVER_DOC),F=D([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverDrawingPlugin),E(1,(0,t.Inject)(t.Injector)),E(2,t.IConfigService)],F),e.DOCS_DRAWING_PLUGIN=O,e.DocDrawingAdapterService=d,Object.defineProperty(e,"DocDrawingController",{enumerable:!0,get:function(){return j}}),e.DocDrawingService=w,e.IDocDrawingAdapterService=u,e.IDocDrawingService=T,e.InsertDocDrawingCommand=i,e.RemoveDocDrawingCommand=f,e.SetDocDrawingArrangeCommand=y,e.TextWrappingStyle=x,Object.defineProperty(e,"UniverDocsDrawingPlugin",{enumerable:!0,get:function(){return F}}),e.UpdateDocDrawingWrappingStyleCommand=C,e.UpdateDrawingDocTransformCommand=b,e.WRAPPING_STYLE_TO_LAYOUT_TYPE=S,e.getDocDrawingRenderOrder=k});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/docs-drawing",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.8",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Drawing model integration for Univer Docs.",
|
|
6
6
|
"author": "DreamNum Co., Ltd. <developer@univer.ai>",
|
|
@@ -59,15 +59,15 @@
|
|
|
59
59
|
"lib"
|
|
60
60
|
],
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@univerjs/core": "1.0.0-alpha.
|
|
63
|
-
"@univerjs/drawing": "1.0.0-alpha.
|
|
64
|
-
"@univerjs/docs": "1.0.0-alpha.
|
|
62
|
+
"@univerjs/core": "1.0.0-alpha.8",
|
|
63
|
+
"@univerjs/drawing": "1.0.0-alpha.8",
|
|
64
|
+
"@univerjs/docs": "1.0.0-alpha.8"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"typescript": "^6.0.3",
|
|
68
68
|
"vitest": "^4.1.10",
|
|
69
|
-
"@univerjs-
|
|
70
|
-
"@univerjs/
|
|
69
|
+
"@univerjs/engine-render": "1.0.0-alpha.8",
|
|
70
|
+
"@univerjs-infra/shared": "1.0.0-alpha.8"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"test": "vitest run",
|