roosterjs-content-model-plugins 9.6.0 → 9.7.0
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/autoFormat/hyphen/transformHyphen.js +3 -3
- package/lib/autoFormat/hyphen/transformHyphen.js.map +1 -1
- package/lib/autoFormat/link/createLink.js +7 -2
- package/lib/autoFormat/link/createLink.js.map +1 -1
- package/lib/autoFormat/link/createLinkAfterSpace.js +1 -2
- package/lib/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib/autoFormat/numbers/transformFraction.js +2 -2
- package/lib/autoFormat/numbers/transformFraction.js.map +1 -1
- package/lib/autoFormat/numbers/transformOrdinals.js +2 -2
- package/lib/autoFormat/numbers/transformOrdinals.js.map +1 -1
- package/lib/edit/EditPlugin.d.ts +15 -0
- package/lib/edit/EditPlugin.js +14 -2
- package/lib/edit/EditPlugin.js.map +1 -1
- package/lib/imageEdit/ImageEditPlugin.d.ts +11 -5
- package/lib/imageEdit/ImageEditPlugin.js +209 -103
- package/lib/imageEdit/ImageEditPlugin.js.map +1 -1
- package/lib/imageEdit/types/ImageAndParagraph.d.ts +8 -0
- package/lib/imageEdit/types/ImageAndParagraph.js +3 -0
- package/lib/imageEdit/types/ImageAndParagraph.js.map +1 -0
- package/lib/imageEdit/types/ImageEditOptions.d.ts +1 -1
- package/lib/imageEdit/types/ImageEditOptions.js.map +1 -1
- package/lib/imageEdit/utils/applyChange.js +4 -8
- package/lib/imageEdit/utils/applyChange.js.map +1 -1
- package/lib/imageEdit/utils/createImageWrapper.d.ts +1 -1
- package/lib/imageEdit/utils/createImageWrapper.js +10 -6
- package/lib/imageEdit/utils/createImageWrapper.js.map +1 -1
- package/lib/imageEdit/utils/findEditingImage.d.ts +6 -0
- package/lib/imageEdit/utils/findEditingImage.js +43 -0
- package/lib/imageEdit/utils/findEditingImage.js.map +1 -0
- package/lib/imageEdit/utils/getSelectedImage.d.ts +6 -0
- package/lib/imageEdit/utils/getSelectedImage.js +21 -0
- package/lib/imageEdit/utils/getSelectedImage.js.map +1 -0
- package/lib/imageEdit/utils/updateImageEditInfo.d.ts +1 -1
- package/lib/imageEdit/utils/updateImageEditInfo.js +10 -6
- package/lib/imageEdit/utils/updateImageEditInfo.js.map +1 -1
- package/lib/imageEdit/utils/updateWrapper.js +2 -2
- package/lib/imageEdit/utils/updateWrapper.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js.map +1 -1
- package/lib/markdown/utils/setFormat.js +1 -2
- package/lib/markdown/utils/setFormat.js.map +1 -1
- package/lib/picker/getQueryString.js +2 -2
- package/lib/picker/getQueryString.js.map +1 -1
- package/lib/tableEdit/editors/TableEditor.js +4 -2
- package/lib/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib/tableEdit/editors/features/TableMover.d.ts +2 -2
- package/lib/tableEdit/editors/features/TableMover.js +4 -4
- package/lib/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib/watermark/WatermarkPlugin.d.ts +2 -0
- package/lib/watermark/WatermarkPlugin.js +24 -4
- package/lib/watermark/WatermarkPlugin.js.map +1 -1
- package/lib-amd/autoFormat/hyphen/transformHyphen.js +3 -3
- package/lib-amd/autoFormat/hyphen/transformHyphen.js.map +1 -1
- package/lib-amd/autoFormat/link/createLink.js +7 -2
- package/lib-amd/autoFormat/link/createLink.js.map +1 -1
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js +2 -2
- package/lib-amd/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-amd/autoFormat/numbers/transformFraction.js +2 -2
- package/lib-amd/autoFormat/numbers/transformFraction.js.map +1 -1
- package/lib-amd/autoFormat/numbers/transformOrdinals.js +2 -2
- package/lib-amd/autoFormat/numbers/transformOrdinals.js.map +1 -1
- package/lib-amd/edit/EditPlugin.d.ts +15 -0
- package/lib-amd/edit/EditPlugin.js +14 -2
- package/lib-amd/edit/EditPlugin.js.map +1 -1
- package/lib-amd/imageEdit/ImageEditPlugin.d.ts +11 -5
- package/lib-amd/imageEdit/ImageEditPlugin.js +208 -104
- package/lib-amd/imageEdit/ImageEditPlugin.js.map +1 -1
- package/lib-amd/imageEdit/types/ImageAndParagraph.d.ts +8 -0
- package/lib-amd/imageEdit/types/ImageAndParagraph.js +5 -0
- package/lib-amd/imageEdit/types/ImageAndParagraph.js.map +1 -0
- package/lib-amd/imageEdit/types/ImageEditOptions.d.ts +1 -1
- package/lib-amd/imageEdit/types/ImageEditOptions.js.map +1 -1
- package/lib-amd/imageEdit/utils/applyChange.js +4 -8
- package/lib-amd/imageEdit/utils/applyChange.js.map +1 -1
- package/lib-amd/imageEdit/utils/createImageWrapper.d.ts +1 -1
- package/lib-amd/imageEdit/utils/createImageWrapper.js +10 -7
- package/lib-amd/imageEdit/utils/createImageWrapper.js.map +1 -1
- package/lib-amd/imageEdit/utils/findEditingImage.d.ts +6 -0
- package/lib-amd/imageEdit/utils/findEditingImage.js +45 -0
- package/lib-amd/imageEdit/utils/findEditingImage.js.map +1 -0
- package/lib-amd/imageEdit/utils/getSelectedImage.d.ts +6 -0
- package/lib-amd/imageEdit/utils/getSelectedImage.js +22 -0
- package/lib-amd/imageEdit/utils/getSelectedImage.js.map +1 -0
- package/lib-amd/imageEdit/utils/updateImageEditInfo.d.ts +1 -1
- package/lib-amd/imageEdit/utils/updateImageEditInfo.js +10 -6
- package/lib-amd/imageEdit/utils/updateImageEditInfo.js.map +1 -1
- package/lib-amd/imageEdit/utils/updateWrapper.js +2 -2
- package/lib-amd/imageEdit/utils/updateWrapper.js.map +1 -1
- package/lib-amd/index.d.ts +1 -1
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/markdown/utils/setFormat.js +2 -2
- package/lib-amd/markdown/utils/setFormat.js.map +1 -1
- package/lib-amd/picker/getQueryString.js +2 -2
- package/lib-amd/picker/getQueryString.js.map +1 -1
- package/lib-amd/tableEdit/editors/TableEditor.js +4 -2
- package/lib-amd/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableMover.d.ts +2 -2
- package/lib-amd/tableEdit/editors/features/TableMover.js +4 -4
- package/lib-amd/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib-amd/watermark/WatermarkPlugin.d.ts +2 -0
- package/lib-amd/watermark/WatermarkPlugin.js +24 -5
- package/lib-amd/watermark/WatermarkPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/hyphen/transformHyphen.js +1 -1
- package/lib-mjs/autoFormat/hyphen/transformHyphen.js.map +1 -1
- package/lib-mjs/autoFormat/link/createLink.js +7 -2
- package/lib-mjs/autoFormat/link/createLink.js.map +1 -1
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js +1 -2
- package/lib-mjs/autoFormat/link/createLinkAfterSpace.js.map +1 -1
- package/lib-mjs/autoFormat/numbers/transformFraction.js +1 -1
- package/lib-mjs/autoFormat/numbers/transformFraction.js.map +1 -1
- package/lib-mjs/autoFormat/numbers/transformOrdinals.js +1 -1
- package/lib-mjs/autoFormat/numbers/transformOrdinals.js.map +1 -1
- package/lib-mjs/edit/EditPlugin.d.ts +15 -0
- package/lib-mjs/edit/EditPlugin.js +14 -2
- package/lib-mjs/edit/EditPlugin.js.map +1 -1
- package/lib-mjs/imageEdit/ImageEditPlugin.d.ts +11 -5
- package/lib-mjs/imageEdit/ImageEditPlugin.js +211 -105
- package/lib-mjs/imageEdit/ImageEditPlugin.js.map +1 -1
- package/lib-mjs/imageEdit/types/ImageAndParagraph.d.ts +8 -0
- package/lib-mjs/imageEdit/types/ImageAndParagraph.js +2 -0
- package/lib-mjs/imageEdit/types/ImageAndParagraph.js.map +1 -0
- package/lib-mjs/imageEdit/types/ImageEditOptions.d.ts +1 -1
- package/lib-mjs/imageEdit/types/ImageEditOptions.js.map +1 -1
- package/lib-mjs/imageEdit/utils/applyChange.js +5 -9
- package/lib-mjs/imageEdit/utils/applyChange.js.map +1 -1
- package/lib-mjs/imageEdit/utils/createImageWrapper.d.ts +1 -1
- package/lib-mjs/imageEdit/utils/createImageWrapper.js +10 -6
- package/lib-mjs/imageEdit/utils/createImageWrapper.js.map +1 -1
- package/lib-mjs/imageEdit/utils/findEditingImage.d.ts +6 -0
- package/lib-mjs/imageEdit/utils/findEditingImage.js +39 -0
- package/lib-mjs/imageEdit/utils/findEditingImage.js.map +1 -0
- package/lib-mjs/imageEdit/utils/getSelectedImage.d.ts +6 -0
- package/lib-mjs/imageEdit/utils/getSelectedImage.js +17 -0
- package/lib-mjs/imageEdit/utils/getSelectedImage.js.map +1 -0
- package/lib-mjs/imageEdit/utils/updateImageEditInfo.d.ts +1 -1
- package/lib-mjs/imageEdit/utils/updateImageEditInfo.js +11 -7
- package/lib-mjs/imageEdit/utils/updateImageEditInfo.js.map +1 -1
- package/lib-mjs/imageEdit/utils/updateWrapper.js +2 -2
- package/lib-mjs/imageEdit/utils/updateWrapper.js.map +1 -1
- package/lib-mjs/index.d.ts +1 -1
- package/lib-mjs/index.js.map +1 -1
- package/lib-mjs/markdown/utils/setFormat.js +1 -2
- package/lib-mjs/markdown/utils/setFormat.js.map +1 -1
- package/lib-mjs/picker/getQueryString.js +1 -1
- package/lib-mjs/picker/getQueryString.js.map +1 -1
- package/lib-mjs/tableEdit/editors/TableEditor.js +4 -2
- package/lib-mjs/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableMover.d.ts +2 -2
- package/lib-mjs/tableEdit/editors/features/TableMover.js +4 -4
- package/lib-mjs/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib-mjs/watermark/WatermarkPlugin.d.ts +2 -0
- package/lib-mjs/watermark/WatermarkPlugin.js +25 -5
- package/lib-mjs/watermark/WatermarkPlugin.js.map +1 -1
- package/package.json +5 -5
- package/lib/imageEdit/utils/getSelectedContentModelImage.d.ts +0 -5
- package/lib/imageEdit/utils/getSelectedContentModelImage.js +0 -16
- package/lib/imageEdit/utils/getSelectedContentModelImage.js.map +0 -1
- package/lib/pluginUtils/splitTextSegment.d.ts +0 -5
- package/lib/pluginUtils/splitTextSegment.js +0 -26
- package/lib/pluginUtils/splitTextSegment.js.map +0 -1
- package/lib-amd/imageEdit/utils/getSelectedContentModelImage.d.ts +0 -5
- package/lib-amd/imageEdit/utils/getSelectedContentModelImage.js +0 -17
- package/lib-amd/imageEdit/utils/getSelectedContentModelImage.js.map +0 -1
- package/lib-amd/pluginUtils/splitTextSegment.d.ts +0 -5
- package/lib-amd/pluginUtils/splitTextSegment.js +0 -26
- package/lib-amd/pluginUtils/splitTextSegment.js.map +0 -1
- package/lib-mjs/imageEdit/utils/getSelectedContentModelImage.d.ts +0 -5
- package/lib-mjs/imageEdit/utils/getSelectedContentModelImage.js +0 -12
- package/lib-mjs/imageEdit/utils/getSelectedContentModelImage.js.map +0 -1
- package/lib-mjs/pluginUtils/splitTextSegment.d.ts +0 -5
- package/lib-mjs/pluginUtils/splitTextSegment.js +0 -22
- package/lib-mjs/pluginUtils/splitTextSegment.js.map +0 -1
|
@@ -18,7 +18,8 @@ var updateImageEditInfo_1 = require("./updateImageEditInfo");
|
|
|
18
18
|
function applyChange(editor, image, contentModelImage, editInfo, previousSrc, wasResizedOrCropped, editingImage) {
|
|
19
19
|
var _a;
|
|
20
20
|
var newSrc = '';
|
|
21
|
-
var
|
|
21
|
+
var imageEditing = editingImage !== null && editingImage !== void 0 ? editingImage : image;
|
|
22
|
+
var initEditInfo = (_a = (0, updateImageEditInfo_1.updateImageEditInfo)(contentModelImage, imageEditing)) !== null && _a !== void 0 ? _a : undefined;
|
|
22
23
|
var state = (0, checkEditInfoState_1.checkEditInfoState)(editInfo, initEditInfo);
|
|
23
24
|
switch (state) {
|
|
24
25
|
case 'ResizeOnly':
|
|
@@ -50,12 +51,12 @@ function applyChange(editor, image, contentModelImage, editInfo, previousSrc, wa
|
|
|
50
51
|
if (newSrc == editInfo.src) {
|
|
51
52
|
// If newSrc is the same with original one, it means there is only size change, but no rotation, no cropping,
|
|
52
53
|
// so we don't need to keep edit info, we can delete it
|
|
53
|
-
(0, updateImageEditInfo_1.updateImageEditInfo)(contentModelImage, null);
|
|
54
|
+
(0, updateImageEditInfo_1.updateImageEditInfo)(contentModelImage, imageEditing, null);
|
|
54
55
|
}
|
|
55
56
|
else {
|
|
56
57
|
// Otherwise, save the new edit info to the image so that next time when we edit the same image, we know
|
|
57
58
|
// the edit info
|
|
58
|
-
(0, updateImageEditInfo_1.updateImageEditInfo)(contentModelImage, editInfo);
|
|
59
|
+
(0, updateImageEditInfo_1.updateImageEditInfo)(contentModelImage, imageEditing, editInfo);
|
|
59
60
|
}
|
|
60
61
|
// Write back the change to image, and set its new size
|
|
61
62
|
var generatedImageSize = (0, generateImageSize_1.getGeneratedImageSize)(editInfo);
|
|
@@ -66,11 +67,6 @@ function applyChange(editor, image, contentModelImage, editInfo, previousSrc, wa
|
|
|
66
67
|
if (wasResizedOrCropped || state == 'FullyChanged') {
|
|
67
68
|
contentModelImage.format.width = generatedImageSize.targetWidth + 'px';
|
|
68
69
|
contentModelImage.format.height = generatedImageSize.targetHeight + 'px';
|
|
69
|
-
// Remove width/height style so that it won't affect the image size, since style width/height has higher priority
|
|
70
|
-
image.style.removeProperty('width');
|
|
71
|
-
image.style.removeProperty('height');
|
|
72
|
-
image.style.removeProperty('max-width');
|
|
73
|
-
image.style.removeProperty('max-height');
|
|
74
70
|
}
|
|
75
71
|
}
|
|
76
72
|
exports.applyChange = applyChange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyChange.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/applyChange.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAC1D,qDAAoD;AACpD,yDAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"applyChange.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/applyChange.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAC1D,qDAAoD;AACpD,yDAA4D;AAC5D,6DAA4D;AAO5D;;;;;;;;;GASG;AACH,SAAgB,WAAW,CACvB,MAAe,EACf,KAAuB,EACvB,iBAAoC,EACpC,QAA6B,EAC7B,WAAmB,EACnB,mBAA4B,EAC5B,YAA+B;;IAE/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAM,YAAY,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,KAAK,CAAC;IAC3C,IAAM,YAAY,GAAG,MAAA,IAAA,yCAAmB,EAAC,iBAAiB,EAAE,YAAY,CAAC,mCAAI,SAAS,CAAC;IACvF,IAAM,KAAK,GAAG,IAAA,uCAAkB,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEzD,QAAQ,KAAK,EAAE;QACX,KAAK,YAAY;YACb,qFAAqF;YACrF,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;YAC5B,MAAM;QACV,KAAK,cAAc;YACf,+FAA+F;YAC/F,4DAA4D;YAC5D,MAAM,GAAG,WAAW,CAAC;YACrB,MAAM;QACV,KAAK,cAAc;YACf,8FAA8F;YAC9F,MAAM,GAAG,IAAA,iCAAe,EAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1D,MAAM;KACb;IAED,IAAM,UAAU,GAAG,MAAM,IAAI,WAAW,CAAC;IAEzC,IAAI,UAAU,EAAE;QACZ,yGAAyG;QACzG,sFAAsF;QACtF,IAAM,OAAK,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;YAC3C,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;YACtC,WAAW,aAAA;YACX,MAAM,QAAA;SACT,CAAC,CAAC;QACH,MAAM,GAAG,OAAK,CAAC,MAAM,CAAC;KACzB;IAED,IAAI,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE;QACxB,6GAA6G;QAC7G,uDAAuD;QACvD,IAAA,yCAAmB,EAAC,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;KAC9D;SAAM;QACH,wGAAwG;QACxG,gBAAgB;QAChB,IAAA,yCAAmB,EAAC,iBAAiB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;KAClE;IAED,uDAAuD;IACvD,IAAM,kBAAkB,GAAG,IAAA,yCAAqB,EAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,kBAAkB,EAAE;QACrB,OAAO;KACV;IAED,iBAAiB,CAAC,GAAG,GAAG,MAAM,CAAC;IAE/B,IAAI,mBAAmB,IAAI,KAAK,IAAI,cAAc,EAAE;QAChD,iBAAiB,CAAC,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC;QACvE,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5E;AACL,CAAC;AAlED,kCAkEC","sourcesContent":["import { checkEditInfoState } from './checkEditInfoState';\nimport { generateDataURL } from './generateDataURL';\nimport { getGeneratedImageSize } from './generateImageSize';\nimport { updateImageEditInfo } from './updateImageEditInfo';\nimport type {\n ContentModelImage,\n IEditor,\n ImageMetadataFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n * Apply changes from the edit info of an image, write result to the image\n * @param editor The editor object that contains the image\n * @param image The image to apply the change\n * @param editInfo Edit info that contains the changed information of the image\n * @param previousSrc Last src value of the image before the change was made\n * @param wasResizedOrCropped if the image was resized or cropped apply the new image dimensions\n * @param editingImage (optional) Image in editing state\n */\nexport function applyChange(\n editor: IEditor,\n image: HTMLImageElement,\n contentModelImage: ContentModelImage,\n editInfo: ImageMetadataFormat,\n previousSrc: string,\n wasResizedOrCropped: boolean,\n editingImage?: HTMLImageElement\n) {\n let newSrc = '';\n const imageEditing = editingImage ?? image;\n const initEditInfo = updateImageEditInfo(contentModelImage, imageEditing) ?? undefined;\n const state = checkEditInfoState(editInfo, initEditInfo);\n\n switch (state) {\n case 'ResizeOnly':\n // For resize only case, no need to generate a new image, just reuse the original one\n newSrc = editInfo.src || '';\n break;\n case 'SameWithLast':\n // For SameWithLast case, image may be resized but the content is still the same with last one,\n // so no need to create a new image, but just reuse last one\n newSrc = previousSrc;\n break;\n case 'FullyChanged':\n // For other cases (cropped, rotated, ...) we need to create a new image to reflect the change\n newSrc = generateDataURL(editingImage ?? image, editInfo);\n break;\n }\n\n const srcChanged = newSrc != previousSrc;\n\n if (srcChanged) {\n // If the src is changed, fire an EditImage event so that plugins knows that a new image is used, and can\n // replace the new src with some other string and it will be used and set to the image\n const event = editor.triggerEvent('editImage', {\n image: image,\n originalSrc: editInfo.src || image.src,\n previousSrc,\n newSrc,\n });\n newSrc = event.newSrc;\n }\n\n if (newSrc == editInfo.src) {\n // If newSrc is the same with original one, it means there is only size change, but no rotation, no cropping,\n // so we don't need to keep edit info, we can delete it\n updateImageEditInfo(contentModelImage, imageEditing, null);\n } else {\n // Otherwise, save the new edit info to the image so that next time when we edit the same image, we know\n // the edit info\n updateImageEditInfo(contentModelImage, imageEditing, editInfo);\n }\n\n // Write back the change to image, and set its new size\n const generatedImageSize = getGeneratedImageSize(editInfo);\n if (!generatedImageSize) {\n return;\n }\n\n contentModelImage.src = newSrc;\n\n if (wasResizedOrCropped || state == 'FullyChanged') {\n contentModelImage.format.width = generatedImageSize.targetWidth + 'px';\n contentModelImage.format.height = generatedImageSize.targetHeight + 'px';\n }\n}\n"]}
|
|
@@ -15,4 +15,4 @@ export interface WrapperElements {
|
|
|
15
15
|
/**
|
|
16
16
|
* @internal
|
|
17
17
|
*/
|
|
18
|
-
export declare function createImageWrapper(editor: IEditor, image: HTMLImageElement,
|
|
18
|
+
export declare function createImageWrapper(editor: IEditor, image: HTMLImageElement, options: ImageEditOptions, editInfo: ImageMetadataFormat, htmlOptions: ImageHtmlOptions, operation: ImageEditOperation[]): WrapperElements;
|
|
@@ -4,25 +4,27 @@ exports.createImageWrapper = void 0;
|
|
|
4
4
|
var createImageCropper_1 = require("../Cropper/createImageCropper");
|
|
5
5
|
var createImageResizer_1 = require("../Resizer/createImageResizer");
|
|
6
6
|
var createImageRotator_1 = require("../Rotator/createImageRotator");
|
|
7
|
+
var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
|
|
7
8
|
/**
|
|
8
9
|
* @internal
|
|
9
10
|
*/
|
|
10
|
-
function createImageWrapper(editor, image,
|
|
11
|
+
function createImageWrapper(editor, image, options, editInfo, htmlOptions, operation) {
|
|
11
12
|
var imageClone = cloneImage(image, editInfo);
|
|
12
13
|
var doc = editor.getDocument();
|
|
13
14
|
var rotators = [];
|
|
14
|
-
if (!options.disableRotate && operation
|
|
15
|
+
if (!options.disableRotate && operation.indexOf('rotate') > -1) {
|
|
15
16
|
rotators = (0, createImageRotator_1.createImageRotator)(doc, htmlOptions);
|
|
16
17
|
}
|
|
17
18
|
var resizers = [];
|
|
18
|
-
if (operation
|
|
19
|
+
if (operation.indexOf('resize') > -1) {
|
|
19
20
|
resizers = (0, createImageResizer_1.createImageResizer)(doc);
|
|
20
21
|
}
|
|
21
22
|
var croppers = [];
|
|
22
|
-
if (operation
|
|
23
|
+
if (operation.indexOf('crop') > -1) {
|
|
23
24
|
croppers = (0, createImageCropper_1.createImageCropper)(doc);
|
|
24
25
|
}
|
|
25
26
|
var wrapper = createWrapper(editor, imageClone, options, editInfo, resizers, rotators, croppers);
|
|
27
|
+
var imageSpan = (0, roosterjs_content_model_dom_1.wrap)(doc, image, 'span');
|
|
26
28
|
var shadowSpan = createShadowSpan(wrapper, imageSpan);
|
|
27
29
|
return { wrapper: wrapper, shadowSpan: shadowSpan, imageClone: imageClone, resizers: resizers, rotators: rotators, croppers: croppers };
|
|
28
30
|
}
|
|
@@ -42,8 +44,10 @@ var createWrapper = function (editor, image, options, editInfo, resizers, rotato
|
|
|
42
44
|
var imageBox = doc.createElement('div');
|
|
43
45
|
imageBox.setAttribute("style", "position:relative;width:100%;height:100%;overflow:hidden;transform:scale(1);");
|
|
44
46
|
imageBox.appendChild(image);
|
|
45
|
-
wrapper.setAttribute('style', "
|
|
46
|
-
wrapper.style.display = editor.getEnvironment().isSafari
|
|
47
|
+
wrapper.setAttribute('style', "font-size: 24px; margin: 0px; transform: rotate(" + ((_a = editInfo.angleRad) !== null && _a !== void 0 ? _a : 0) + "rad);");
|
|
48
|
+
wrapper.style.display = editor.getEnvironment().isSafari
|
|
49
|
+
? '-webkit-inline-flex'
|
|
50
|
+
: 'inline-flex';
|
|
47
51
|
var border = createBorder(editor, options.borderColor);
|
|
48
52
|
wrapper.appendChild(imageBox);
|
|
49
53
|
wrapper.appendChild(border);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createImageWrapper.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/createImageWrapper.ts"],"names":[],"mappings":";;;AAAA,oEAAmE;AACnE,oEAAmE;AACnE,oEAAmE;
|
|
1
|
+
{"version":3,"file":"createImageWrapper.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/createImageWrapper.ts"],"names":[],"mappings":";;;AAAA,oEAAmE;AACnE,oEAAmE;AACnE,oEAAmE;AACnE,2EAAmD;AAsBnD;;GAEG;AACH,SAAgB,kBAAkB,CAC9B,MAAe,EACf,KAAuB,EACvB,OAAyB,EACzB,QAA6B,EAC7B,WAA6B,EAC7B,SAA+B;IAE/B,IAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEjC,IAAI,QAAQ,GAAqB,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5D,QAAQ,GAAG,IAAA,uCAAkB,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACnD;IACD,IAAI,QAAQ,GAAqB,EAAE,CAAC;IACpC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;QAClC,QAAQ,GAAG,IAAA,uCAAkB,EAAC,GAAG,CAAC,CAAC;KACtC;IAED,IAAI,QAAQ,GAAqB,EAAE,CAAC;IACpC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;QAChC,QAAQ,GAAG,IAAA,uCAAkB,EAAC,GAAG,CAAC,CAAC;KACtC;IAED,IAAM,OAAO,GAAG,aAAa,CACzB,MAAM,EACN,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,CACX,CAAC;IACF,IAAM,SAAS,GAAG,IAAA,kCAAI,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,OAAO,EAAE,OAAO,SAAA,EAAE,UAAU,YAAA,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;AAC7E,CAAC;AArCD,gDAqCC;AAED,IAAM,gBAAgB,GAAG,UAAC,OAAoB,EAAE,SAA0B;IACtE,IAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC;QACtC,IAAI,EAAE,MAAM;KACf,CAAC,CAAC;IACH,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;IACzC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG,UAClB,MAAe,EACf,KAAuB,EACvB,OAAyB,EACzB,QAA6B,EAC7B,QAA2B,EAC3B,QAA2B,EAC3B,OAA0B;;IAE1B,IAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACjC,IAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1C,QAAQ,CAAC,YAAY,CACjB,OAAO,EACP,8EAA8E,CACjF,CAAC;IACF,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,CAAC,YAAY,CAChB,OAAO,EACP,sDAAmD,MAAA,QAAQ,CAAC,QAAQ,mCAAI,CAAC,WAAO,CACnF,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,QAAQ;QACpD,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,aAAa,CAAC;IAEpB,IAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAElC,IAAI,QAAQ,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,IAAG,CAAC,EAAE;QAClC,QAAQ,CAAC,OAAO,CAAC,UAAA,OAAO;YACpB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;KACN;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,QAAQ,CAAC,OAAO,CAAC,UAAA,CAAC;YACd,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;KACN;IACD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,CAAC,OAAO,CAAC,UAAA,CAAC;YACb,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;KACN;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,MAAe,EAAE,WAAoB;IACvD,IAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACjC,IAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,YAAY,CAAC,YAAY,CACrB,OAAO,EACP,sEAAoE,WAAW,0BAAuB,CACzG,CAAC;IACF,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAEF,IAAM,UAAU,GAAG,UAAC,KAAuB,EAAE,QAA6B;IACtE,IAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAqB,CAAC;IAC7D,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC9B,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC7C,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC9C,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACjD,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtD;IACD,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC","sourcesContent":["import { createImageCropper } from '../Cropper/createImageCropper';\nimport { createImageResizer } from '../Resizer/createImageResizer';\nimport { createImageRotator } from '../Rotator/createImageRotator';\nimport { wrap } from 'roosterjs-content-model-dom';\n\nimport type {\n IEditor,\n ImageEditOperation,\n ImageMetadataFormat,\n} from 'roosterjs-content-model-types';\nimport type { ImageEditOptions } from '../types/ImageEditOptions';\nimport type { ImageHtmlOptions } from '../types/ImageHtmlOptions';\n\n/**\n * @internal\n */\nexport interface WrapperElements {\n wrapper: HTMLSpanElement;\n shadowSpan: HTMLElement;\n imageClone: HTMLImageElement;\n resizers: HTMLDivElement[];\n rotators: HTMLDivElement[];\n croppers: HTMLDivElement[];\n}\n\n/**\n * @internal\n */\nexport function createImageWrapper(\n editor: IEditor,\n image: HTMLImageElement,\n options: ImageEditOptions,\n editInfo: ImageMetadataFormat,\n htmlOptions: ImageHtmlOptions,\n operation: ImageEditOperation[]\n): WrapperElements {\n const imageClone = cloneImage(image, editInfo);\n const doc = editor.getDocument();\n\n let rotators: HTMLDivElement[] = [];\n if (!options.disableRotate && operation.indexOf('rotate') > -1) {\n rotators = createImageRotator(doc, htmlOptions);\n }\n let resizers: HTMLDivElement[] = [];\n if (operation.indexOf('resize') > -1) {\n resizers = createImageResizer(doc);\n }\n\n let croppers: HTMLDivElement[] = [];\n if (operation.indexOf('crop') > -1) {\n croppers = createImageCropper(doc);\n }\n\n const wrapper = createWrapper(\n editor,\n imageClone,\n options,\n editInfo,\n resizers,\n rotators,\n croppers\n );\n const imageSpan = wrap(doc, image, 'span');\n const shadowSpan = createShadowSpan(wrapper, imageSpan);\n return { wrapper, shadowSpan, imageClone, resizers, rotators, croppers };\n}\n\nconst createShadowSpan = (wrapper: HTMLElement, imageSpan: HTMLSpanElement) => {\n const shadowRoot = imageSpan.attachShadow({\n mode: 'open',\n });\n imageSpan.style.verticalAlign = 'bottom';\n shadowRoot.appendChild(wrapper);\n return imageSpan;\n};\n\nconst createWrapper = (\n editor: IEditor,\n image: HTMLImageElement,\n options: ImageEditOptions,\n editInfo: ImageMetadataFormat,\n resizers?: HTMLDivElement[],\n rotators?: HTMLDivElement[],\n cropper?: HTMLDivElement[]\n) => {\n const doc = editor.getDocument();\n const wrapper = doc.createElement('span');\n const imageBox = doc.createElement('div');\n\n imageBox.setAttribute(\n `style`,\n `position:relative;width:100%;height:100%;overflow:hidden;transform:scale(1);`\n );\n imageBox.appendChild(image);\n wrapper.setAttribute(\n 'style',\n `font-size: 24px; margin: 0px; transform: rotate(${editInfo.angleRad ?? 0}rad);`\n );\n wrapper.style.display = editor.getEnvironment().isSafari\n ? '-webkit-inline-flex'\n : 'inline-flex';\n\n const border = createBorder(editor, options.borderColor);\n wrapper.appendChild(imageBox);\n wrapper.appendChild(border);\n wrapper.style.userSelect = 'none';\n\n if (resizers && resizers?.length > 0) {\n resizers.forEach(resizer => {\n wrapper.appendChild(resizer);\n });\n }\n if (rotators && rotators.length > 0) {\n rotators.forEach(r => {\n wrapper.appendChild(r);\n });\n }\n if (cropper && cropper.length > 0) {\n cropper.forEach(c => {\n wrapper.appendChild(c);\n });\n }\n\n return wrapper;\n};\n\nconst createBorder = (editor: IEditor, borderColor?: string) => {\n const doc = editor.getDocument();\n const resizeBorder = doc.createElement('div');\n resizeBorder.setAttribute(\n `style`,\n `position:absolute;left:0;right:0;top:0;bottom:0;border:solid 2px ${borderColor};pointer-events:none;`\n );\n return resizeBorder;\n};\n\nconst cloneImage = (image: HTMLImageElement, editInfo: ImageMetadataFormat) => {\n const imageClone = image.cloneNode(true) as HTMLImageElement;\n imageClone.style.removeProperty('transform');\n if (editInfo.src) {\n imageClone.src = editInfo.src;\n imageClone.removeAttribute('id');\n imageClone.style.removeProperty('max-width');\n imageClone.style.removeProperty('max-height');\n imageClone.style.width = editInfo.widthPx + 'px';\n imageClone.style.height = editInfo.heightPx + 'px';\n }\n return imageClone;\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReadonlyContentModelBlockGroup } from 'roosterjs-content-model-types';
|
|
2
|
+
import type { ImageAndParagraph } from '../types/ImageAndParagraph';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function findEditingImage(group: ReadonlyContentModelBlockGroup): ImageAndParagraph | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findEditingImage = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
function findEditingImage(group) {
|
|
8
|
+
for (var i = 0; i < group.blocks.length; i++) {
|
|
9
|
+
var block = group.blocks[i];
|
|
10
|
+
switch (block.blockType) {
|
|
11
|
+
case 'BlockGroup':
|
|
12
|
+
var result = findEditingImage(block);
|
|
13
|
+
if (result) {
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
break;
|
|
17
|
+
case 'Paragraph':
|
|
18
|
+
for (var j = 0; j < block.segments.length; j++) {
|
|
19
|
+
var segment = block.segments[j];
|
|
20
|
+
switch (segment.segmentType) {
|
|
21
|
+
case 'Image':
|
|
22
|
+
if (segment.dataset.isEditing) {
|
|
23
|
+
return {
|
|
24
|
+
paragraph: block,
|
|
25
|
+
image: segment,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
break;
|
|
29
|
+
case 'General':
|
|
30
|
+
var result_1 = findEditingImage(segment);
|
|
31
|
+
if (result_1) {
|
|
32
|
+
return result_1;
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
exports.findEditingImage = findEditingImage;
|
|
43
|
+
//# sourceMappingURL=findEditingImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findEditingImage.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/findEditingImage.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAqC;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE9B,QAAQ,KAAK,CAAC,SAAS,EAAE;YACrB,KAAK,YAAY;gBACb,IAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAEvC,IAAI,MAAM,EAAE;oBACR,OAAO,MAAM,CAAC;iBACjB;gBACD,MAAM;YAEV,KAAK,WAAW;gBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,IAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAClC,QAAQ,OAAO,CAAC,WAAW,EAAE;wBACzB,KAAK,OAAO;4BACR,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;gCAC3B,OAAO;oCACH,SAAS,EAAE,KAAK;oCAChB,KAAK,EAAE,OAAO;iCACjB,CAAC;6BACL;4BACD,MAAM;wBAEV,KAAK,SAAS;4BACV,IAAM,QAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;4BAEzC,IAAI,QAAM,EAAE;gCACR,OAAO,QAAM,CAAC;6BACjB;4BACD,MAAM;qBACb;iBACJ;gBAED,MAAM;SACb;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAzCD,4CAyCC","sourcesContent":["import type { ReadonlyContentModelBlockGroup } from 'roosterjs-content-model-types';\nimport type { ImageAndParagraph } from '../types/ImageAndParagraph';\n\n/**\n * @internal\n */\nexport function findEditingImage(group: ReadonlyContentModelBlockGroup): ImageAndParagraph | null {\n for (let i = 0; i < group.blocks.length; i++) {\n const block = group.blocks[i];\n\n switch (block.blockType) {\n case 'BlockGroup':\n const result = findEditingImage(block);\n\n if (result) {\n return result;\n }\n break;\n\n case 'Paragraph':\n for (let j = 0; j < block.segments.length; j++) {\n const segment = block.segments[j];\n switch (segment.segmentType) {\n case 'Image':\n if (segment.dataset.isEditing) {\n return {\n paragraph: block,\n image: segment,\n };\n }\n break;\n\n case 'General':\n const result = findEditingImage(segment);\n\n if (result) {\n return result;\n }\n break;\n }\n }\n\n break;\n }\n }\n\n return null;\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReadonlyContentModelDocument } from 'roosterjs-content-model-types';
|
|
2
|
+
import type { ImageAndParagraph } from '../types/ImageAndParagraph';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function getSelectedImage(model: ReadonlyContentModelDocument): ImageAndParagraph | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSelectedImage = void 0;
|
|
4
|
+
var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
function getSelectedImage(model) {
|
|
9
|
+
var selections = (0, roosterjs_content_model_dom_1.getSelectedSegmentsAndParagraphs)(model, false);
|
|
10
|
+
if (selections.length == 1 && selections[0][0].segmentType == 'Image' && selections[0][1]) {
|
|
11
|
+
return {
|
|
12
|
+
image: selections[0][0],
|
|
13
|
+
paragraph: selections[0][1],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.getSelectedImage = getSelectedImage;
|
|
21
|
+
//# sourceMappingURL=getSelectedImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSelectedImage.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/getSelectedImage.ts"],"names":[],"mappings":";;;AAAA,2EAA+E;AAI/E;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAmC;IAChE,IAAM,UAAU,GAAG,IAAA,8DAAgC,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAElE,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACvF,OAAO;YACH,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B,CAAC;KACL;SAAM;QACH,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAXD,4CAWC","sourcesContent":["import { getSelectedSegmentsAndParagraphs } from 'roosterjs-content-model-dom';\nimport type { ReadonlyContentModelDocument } from 'roosterjs-content-model-types';\nimport type { ImageAndParagraph } from '../types/ImageAndParagraph';\n\n/**\n * @internal\n */\nexport function getSelectedImage(model: ReadonlyContentModelDocument): ImageAndParagraph | null {\n const selections = getSelectedSegmentsAndParagraphs(model, false);\n\n if (selections.length == 1 && selections[0][0].segmentType == 'Image' && selections[0][1]) {\n return {\n image: selections[0][0],\n paragraph: selections[0][1],\n };\n } else {\n return null;\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import type { ContentModelImage, IEditor, ImageMetadataFormat } from 'roosterjs-
|
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
*/
|
|
5
|
-
export declare function updateImageEditInfo(contentModelImage: ContentModelImage, newImageMetadata?: ImageMetadataFormat | null):
|
|
5
|
+
export declare function updateImageEditInfo(contentModelImage: ContentModelImage, image: HTMLImageElement, newImageMetadata?: ImageMetadataFormat | null | undefined): ImageMetadataFormat;
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
* @returns
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSelectedImageMetadata = exports.updateImageEditInfo = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var
|
|
5
|
+
var getSelectedImage_1 = require("./getSelectedImage");
|
|
6
6
|
var roosterjs_content_model_dom_1 = require("roosterjs-content-model-dom");
|
|
7
7
|
/**
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
|
-
function updateImageEditInfo(contentModelImage, newImageMetadata) {
|
|
11
|
-
(0, roosterjs_content_model_dom_1.updateImageMetadata)(contentModelImage, newImageMetadata !== undefined
|
|
10
|
+
function updateImageEditInfo(contentModelImage, image, newImageMetadata) {
|
|
11
|
+
var contentModelMetadata = (0, roosterjs_content_model_dom_1.updateImageMetadata)(contentModelImage, newImageMetadata !== undefined
|
|
12
12
|
? function (format) {
|
|
13
13
|
format = newImageMetadata;
|
|
14
14
|
return format;
|
|
15
15
|
}
|
|
16
16
|
: undefined);
|
|
17
|
+
return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, getInitialEditInfo(image)), contentModelMetadata);
|
|
17
18
|
}
|
|
18
19
|
exports.updateImageEditInfo = updateImageEditInfo;
|
|
19
20
|
function getInitialEditInfo(image) {
|
|
@@ -37,9 +38,12 @@ function getInitialEditInfo(image) {
|
|
|
37
38
|
function getSelectedImageMetadata(editor, image) {
|
|
38
39
|
var imageMetadata = getInitialEditInfo(image);
|
|
39
40
|
editor.formatContentModel(function (model) {
|
|
40
|
-
var selectedImage = (0,
|
|
41
|
-
if (selectedImage) {
|
|
42
|
-
|
|
41
|
+
var selectedImage = (0, getSelectedImage_1.getSelectedImage)(model);
|
|
42
|
+
if (selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.image) {
|
|
43
|
+
(0, roosterjs_content_model_dom_1.mutateSegment)(selectedImage.paragraph, selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.image, function (modelImage) {
|
|
44
|
+
imageMetadata = updateImageEditInfo(modelImage, image);
|
|
45
|
+
});
|
|
46
|
+
return true;
|
|
43
47
|
}
|
|
44
48
|
return false;
|
|
45
49
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateImageEditInfo.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateImageEditInfo.ts"],"names":[],"mappings":";;;;AAAA
|
|
1
|
+
{"version":3,"file":"updateImageEditInfo.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateImageEditInfo.ts"],"names":[],"mappings":";;;;AAAA,uDAAsD;AACtD,2EAAiF;AAQjF;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,iBAAoC,EACpC,KAAuB,EACvB,gBAAyD;IAEzD,IAAM,oBAAoB,GAAG,IAAA,iDAAmB,EAC5C,iBAAiB,EACjB,gBAAgB,KAAK,SAAS;QAC1B,CAAC,CAAC,UAAA,MAAM;YACF,MAAM,GAAG,gBAAgB,CAAC;YAC1B,OAAO,MAAM,CAAC;QAClB,CAAC;QACH,CAAC,CAAC,SAAS,CAClB,CAAC;IACF,uDAAY,kBAAkB,CAAC,KAAK,CAAC,GAAK,oBAAoB,EAAG;AACrE,CAAC;AAfD,kDAeC;AAED,SAAS,kBAAkB,CAAC,KAAuB;IAC/C,OAAO;QACH,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,WAAW;QAC1B,QAAQ,EAAE,KAAK,CAAC,YAAY;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,CAAC;KACd,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CACpC,MAAe,EACf,KAAuB;IAEvB,IAAI,aAAa,GAAwB,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,CAAC,kBAAkB,CAAC,UAAA,KAAK;QAC3B,IAAM,aAAa,GAAG,IAAA,mCAAgB,EAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,EAAE;YACtB,IAAA,2CAAa,EAAC,aAAa,CAAC,SAAS,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,EAAE,UAAA,UAAU;gBACnE,aAAa,GAAG,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACzB,CAAC;AAlBD,4DAkBC","sourcesContent":["import { getSelectedImage } from './getSelectedImage';\nimport { mutateSegment, updateImageMetadata } from 'roosterjs-content-model-dom';\n\nimport type {\n ContentModelImage,\n IEditor,\n ImageMetadataFormat,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function updateImageEditInfo(\n contentModelImage: ContentModelImage,\n image: HTMLImageElement,\n newImageMetadata?: ImageMetadataFormat | null | undefined\n): ImageMetadataFormat {\n const contentModelMetadata = updateImageMetadata(\n contentModelImage,\n newImageMetadata !== undefined\n ? format => {\n format = newImageMetadata;\n return format;\n }\n : undefined\n );\n return { ...getInitialEditInfo(image), ...contentModelMetadata };\n}\n\nfunction getInitialEditInfo(image: HTMLImageElement): ImageMetadataFormat {\n return {\n src: image.getAttribute('src') || '',\n widthPx: image.clientWidth,\n heightPx: image.clientHeight,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n leftPercent: 0,\n rightPercent: 0,\n topPercent: 0,\n bottomPercent: 0,\n angleRad: 0,\n };\n}\n\n/**\n * @internal\n * @returns\n */\nexport function getSelectedImageMetadata(\n editor: IEditor,\n image: HTMLImageElement\n): ImageMetadataFormat {\n let imageMetadata: ImageMetadataFormat = getInitialEditInfo(image);\n editor.formatContentModel(model => {\n const selectedImage = getSelectedImage(model);\n if (selectedImage?.image) {\n mutateSegment(selectedImage.paragraph, selectedImage?.image, modelImage => {\n imageMetadata = updateImageEditInfo(modelImage, image);\n });\n\n return true;\n }\n return false;\n });\n\n return imageMetadata;\n}\n"]}
|
|
@@ -60,7 +60,7 @@ function updateWrapper(editInfo, options, image, clonedImage, wrapper, resizers,
|
|
|
60
60
|
(0, imageEditUtils_1.setSize)(cropOverlays[1], undefined, 0, 0, cropBottomPx, cropRightPx, undefined);
|
|
61
61
|
(0, imageEditUtils_1.setSize)(cropOverlays[2], cropLeftPx, undefined, 0, 0, undefined, cropBottomPx);
|
|
62
62
|
(0, imageEditUtils_1.setSize)(cropOverlays[3], 0, cropTopPx, undefined, 0, cropLeftPx, undefined);
|
|
63
|
-
if (angleRad) {
|
|
63
|
+
if (angleRad !== undefined) {
|
|
64
64
|
(0, updateHandleCursor_1.updateHandleCursor)(croppers, angleRad);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -77,7 +77,7 @@ function updateWrapper(editInfo, options, image, clonedImage, wrapper, resizers,
|
|
|
77
77
|
}
|
|
78
78
|
})
|
|
79
79
|
.filter(function (handle) { return !!handle; });
|
|
80
|
-
if (angleRad) {
|
|
80
|
+
if (angleRad !== undefined) {
|
|
81
81
|
(0, updateHandleCursor_1.updateHandleCursor)(resizeHandles, angleRad);
|
|
82
82
|
}
|
|
83
83
|
(0, updateSideHandlesVisibility_1.updateSideHandlesVisibility)(resizeHandles, smallImage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateWrapper.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateWrapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"updateWrapper.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { doubleCheckResize } from './doubleCheckResize';\nimport { getGeneratedImageSize } from './generateImageSize';\nimport { ImageEditElementClass } from '../types/ImageEditElementClass';\nimport { isElementOfType, isNodeOfType } from 'roosterjs-content-model-dom';\nimport { updateHandleCursor } from './updateHandleCursor';\nimport { updateSideHandlesVisibility } from '../Resizer/updateSideHandlesVisibility';\nimport type { ImageEditOptions } from '../types/ImageEditOptions';\nimport type { ImageMetadataFormat } from 'roosterjs-content-model-types';\nimport {\n getPx,\n isASmallImage,\n isRTL,\n setFlipped,\n setSize,\n setWrapperSizeDimensions,\n} from './imageEditUtils';\n\n/**\n * @internal\n */\nexport function updateWrapper(\n editInfo: ImageMetadataFormat,\n options: ImageEditOptions,\n image: HTMLImageElement,\n clonedImage: HTMLImageElement,\n wrapper: HTMLSpanElement,\n resizers?: HTMLDivElement[],\n croppers?: HTMLDivElement[]\n) {\n const {\n angleRad,\n bottomPercent,\n leftPercent,\n rightPercent,\n topPercent,\n flippedHorizontal,\n flippedVertical,\n } = editInfo;\n\n const generateImageSize = getGeneratedImageSize(editInfo, croppers && croppers?.length > 0);\n if (!generateImageSize) {\n return;\n }\n const {\n targetWidth,\n targetHeight,\n originalWidth,\n originalHeight,\n visibleWidth,\n visibleHeight,\n } = generateImageSize;\n\n const marginHorizontal = (targetWidth - visibleWidth) / 2;\n const marginVertical = (targetHeight - visibleHeight) / 2;\n const cropLeftPx = originalWidth * (leftPercent || 0);\n const cropRightPx = originalWidth * (rightPercent || 0);\n const cropTopPx = originalHeight * (topPercent || 0);\n const cropBottomPx = originalHeight * (bottomPercent || 0);\n\n // Update size and margin of the wrapper\n wrapper.style.margin = `${marginVertical}px ${marginHorizontal}px`;\n wrapper.style.transform = `rotate(${angleRad}rad)`;\n setWrapperSizeDimensions(wrapper, image, visibleWidth, visibleHeight);\n\n // Update the text-alignment to avoid the image to overflow if the parent element have align center or right\n // or if the direction is Right To Left\n if (isRTL(clonedImage)) {\n wrapper.style.textAlign = 'right';\n if (!croppers) {\n clonedImage.style.left = getPx(cropLeftPx);\n clonedImage.style.right = getPx(-cropRightPx);\n }\n } else {\n wrapper.style.textAlign = 'left';\n }\n\n // Update size of the image\n clonedImage.style.width = getPx(originalWidth);\n clonedImage.style.height = getPx(originalHeight);\n clonedImage.style.verticalAlign = 'bottom';\n clonedImage.style.position = 'absolute';\n\n //Update flip direction\n setFlipped(clonedImage.parentElement, flippedHorizontal, flippedVertical);\n const smallImage = isASmallImage(visibleWidth, visibleWidth);\n\n if (!croppers) {\n // For rotate/resize, set the margin of the image so that cropped part won't be visible\n clonedImage.style.margin = `${-cropTopPx}px 0 0 ${-cropLeftPx}px`;\n }\n\n if (croppers && croppers.length > 0) {\n const cropContainer = croppers[0];\n const cropOverlays = croppers.filter(\n cropper => cropper.className === ImageEditElementClass.CropOverlay\n );\n\n setSize(\n cropContainer,\n cropLeftPx,\n cropTopPx,\n cropRightPx,\n cropBottomPx,\n undefined,\n undefined\n );\n setSize(cropOverlays[0], 0, 0, cropRightPx, undefined, undefined, cropTopPx);\n setSize(cropOverlays[1], undefined, 0, 0, cropBottomPx, cropRightPx, undefined);\n setSize(cropOverlays[2], cropLeftPx, undefined, 0, 0, undefined, cropBottomPx);\n setSize(cropOverlays[3], 0, cropTopPx, undefined, 0, cropLeftPx, undefined);\n\n if (angleRad !== undefined) {\n updateHandleCursor(croppers, angleRad);\n }\n }\n\n if (resizers) {\n const clientWidth = wrapper.clientWidth;\n const clientHeight = wrapper.clientHeight;\n\n doubleCheckResize(editInfo, options.preserveRatio || false, clientWidth, clientHeight);\n\n const resizeHandles = resizers\n .map(resizer => {\n const resizeHandle = resizer.firstElementChild;\n if (\n isNodeOfType(resizeHandle, 'ELEMENT_NODE') &&\n isElementOfType(resizeHandle, 'div')\n ) {\n return resizeHandle;\n }\n })\n .filter(handle => !!handle) as HTMLDivElement[];\n\n if (angleRad !== undefined) {\n updateHandleCursor(resizeHandles, angleRad);\n }\n\n updateSideHandlesVisibility(resizeHandles, smallImage);\n }\n}\n"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { TableEditPlugin } from './tableEdit/TableEditPlugin';
|
|
|
2
2
|
export { OnTableEditorCreatedCallback } from './tableEdit/OnTableEditorCreatedCallback';
|
|
3
3
|
export { TableEditFeatureName } from './tableEdit/editors/features/TableEditFeatureName';
|
|
4
4
|
export { PastePlugin } from './paste/PastePlugin';
|
|
5
|
-
export { EditPlugin } from './edit/EditPlugin';
|
|
5
|
+
export { EditPlugin, EditOptions } from './edit/EditPlugin';
|
|
6
6
|
export { AutoFormatPlugin, AutoFormatOptions } from './autoFormat/AutoFormatPlugin';
|
|
7
7
|
export { ShortcutBold, ShortcutItalic, ShortcutUnderline, ShortcutClearFormat, ShortcutUndo, ShortcutUndo2, ShortcutRedo, ShortcutRedoAlt, ShortcutRedoMacOS, ShortcutBullet, ShortcutNumbering, ShortcutIncreaseFont, ShortcutDecreaseFont, ShortcutIndentList, ShortcutOutdentList, } from './shortcut/shortcuts';
|
|
8
8
|
export { ShortcutPlugin } from './shortcut/ShortcutPlugin';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/roosterjs-content-model-plugins/lib/index.ts"],"names":[],"mappings":";;;AAAA,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAGxB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/roosterjs-content-model-plugins/lib/index.ts"],"names":[],"mappings":";;;AAAA,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAGxB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,gDAA4D;AAAnD,wGAAA,UAAU,OAAA;AACnB,kEAAoF;AAA3E,oHAAA,gBAAgB,OAAA;AAEzB,kDAgB8B;AAf1B,yGAAA,YAAY,OAAA;AACZ,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AACpB,iHAAA,oBAAoB,OAAA;AACpB,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AAEvB,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AAEvB,iFAAoG;AAA3F,8HAAA,qBAAqB,OAAA;AAC9B,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAExB,4DAA4E;AAAnE,gHAAA,cAAc,OAAA;AACvB,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAExB,sDAAqD;AAA5C,4GAAA,YAAY,OAAA;AAGrB,2EAAyF;AAAhF,0HAAA,mBAAmB,OAAA;AAC5B,+DAA8D;AAArD,kHAAA,eAAe,OAAA","sourcesContent":["export { TableEditPlugin } from './tableEdit/TableEditPlugin';\nexport { OnTableEditorCreatedCallback } from './tableEdit/OnTableEditorCreatedCallback';\nexport { TableEditFeatureName } from './tableEdit/editors/features/TableEditFeatureName';\nexport { PastePlugin } from './paste/PastePlugin';\nexport { EditPlugin, EditOptions } from './edit/EditPlugin';\nexport { AutoFormatPlugin, AutoFormatOptions } from './autoFormat/AutoFormatPlugin';\n\nexport {\n ShortcutBold,\n ShortcutItalic,\n ShortcutUnderline,\n ShortcutClearFormat,\n ShortcutUndo,\n ShortcutUndo2,\n ShortcutRedo,\n ShortcutRedoAlt,\n ShortcutRedoMacOS,\n ShortcutBullet,\n ShortcutNumbering,\n ShortcutIncreaseFont,\n ShortcutDecreaseFont,\n ShortcutIndentList,\n ShortcutOutdentList,\n} from './shortcut/shortcuts';\nexport { ShortcutPlugin } from './shortcut/ShortcutPlugin';\nexport { ShortcutKeyDefinition, ShortcutCommand } from './shortcut/ShortcutCommand';\nexport { ContextMenuPluginBase, ContextMenuOptions } from './contextMenuBase/ContextMenuPluginBase';\nexport { WatermarkPlugin } from './watermark/WatermarkPlugin';\nexport { WatermarkFormat } from './watermark/WatermarkFormat';\nexport { MarkdownPlugin, MarkdownOptions } from './markdown/MarkdownPlugin';\nexport { HyperlinkPlugin } from './hyperlink/HyperlinkPlugin';\nexport { HyperlinkToolTip } from './hyperlink/HyperlinkToolTip';\nexport { PickerPlugin } from './picker/PickerPlugin';\nexport { PickerHelper } from './picker/PickerHelper';\nexport { PickerSelectionChangMode, PickerDirection, PickerHandler } from './picker/PickerHandler';\nexport { CustomReplacePlugin, CustomReplace } from './customReplace/CustomReplacePlugin';\nexport { ImageEditPlugin } from './imageEdit/ImageEditPlugin';\nexport { ImageEditOptions } from './imageEdit/types/ImageEditOptions';\n"]}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.setFormat = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
|
|
6
|
-
var splitTextSegment_1 = require("../../pluginUtils/splitTextSegment");
|
|
7
6
|
/**
|
|
8
7
|
* @internal
|
|
9
8
|
*/
|
|
@@ -18,7 +17,7 @@ function setFormat(editor, character, format, codeFormat) {
|
|
|
18
17
|
.substring(0, lastCharIndex - 1)
|
|
19
18
|
.lastIndexOf(character);
|
|
20
19
|
if (lastCharIndex - firstCharIndex > 2) {
|
|
21
|
-
var formattedText = (0,
|
|
20
|
+
var formattedText = (0, roosterjs_content_model_api_1.splitTextSegment)(previousSegment, paragraph, firstCharIndex, lastCharIndex);
|
|
22
21
|
formattedText.text = formattedText.text.replace(character, '').slice(0, -1);
|
|
23
22
|
formattedText.format = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, formattedText.format), format);
|
|
24
23
|
if (codeFormat) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setFormat.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"setFormat.js","sourceRoot":"","sources":["../../../../../packages/roosterjs-content-model-plugins/lib/markdown/utils/setFormat.ts"],"names":[],"mappings":";;;;AAAA,2EAGqC;AAOrC;;GAEG;AACH,SAAgB,SAAS,CACrB,MAAe,EACf,SAAiB,EACjB,MAAiC,EACjC,UAAmC;IAEnC,IAAA,oEAAsC,EAClC,MAAM,EACN,UAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO;QACtD,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,EAAE;YACpE,IAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,gBAAgB,mDACjB,YAAY,KACf,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,aAAa,EAC3C,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAC7B,UAAU,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAC5D,CAAC;YACF,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC1C,IAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClD,IAAM,cAAc,GAAG,eAAe,CAAC,IAAI;qBACtC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC;qBAC/B,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5B,IAAI,aAAa,GAAG,cAAc,GAAG,CAAC,EAAE;oBACpC,IAAM,aAAa,GAAG,IAAA,8CAAgB,EAClC,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,CAChB,CAAC;oBAEF,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC5E,aAAa,CAAC,MAAM,mDACb,aAAa,CAAC,MAAM,GACpB,MAAM,CACZ,CAAC;oBACF,IAAI,UAAU,EAAE;wBACZ,aAAa,CAAC,IAAI,GAAG;4BACjB,MAAM,EAAE,UAAU;yBACrB,CAAC;qBACL;oBAED,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAClC,OAAO,IAAI,CAAC;iBACf;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CACJ,CAAC;AACN,CAAC;AAjDD,8BAiDC","sourcesContent":["import {\n formatTextSegmentBeforeSelectionMarker,\n splitTextSegment,\n} from 'roosterjs-content-model-api';\nimport type {\n ContentModelCodeFormat,\n ContentModelSegmentFormat,\n IEditor,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function setFormat(\n editor: IEditor,\n character: string,\n format: ContentModelSegmentFormat,\n codeFormat?: ContentModelCodeFormat\n) {\n formatTextSegmentBeforeSelectionMarker(\n editor,\n (_model, previousSegment, paragraph, markerFormat, context) => {\n if (previousSegment.text[previousSegment.text.length - 1] == character) {\n const textBeforeMarker = previousSegment.text.slice(0, -1);\n context.newPendingFormat = {\n ...markerFormat,\n strikethrough: !!markerFormat.strikethrough,\n italic: !!markerFormat.italic,\n fontWeight: markerFormat?.fontWeight ? 'bold' : undefined,\n };\n if (textBeforeMarker.indexOf(character) > -1) {\n const lastCharIndex = previousSegment.text.length;\n const firstCharIndex = previousSegment.text\n .substring(0, lastCharIndex - 1)\n .lastIndexOf(character);\n if (lastCharIndex - firstCharIndex > 2) {\n const formattedText = splitTextSegment(\n previousSegment,\n paragraph,\n firstCharIndex,\n lastCharIndex\n );\n\n formattedText.text = formattedText.text.replace(character, '').slice(0, -1);\n formattedText.format = {\n ...formattedText.format,\n ...format,\n };\n if (codeFormat) {\n formattedText.code = {\n format: codeFormat,\n };\n }\n\n context.canUndoByBackspace = true;\n return true;\n }\n }\n }\n return false;\n }\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getQueryString = void 0;
|
|
4
|
-
var
|
|
4
|
+
var roosterjs_content_model_api_1 = require("roosterjs-content-model-api");
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
@@ -18,7 +18,7 @@ function getQueryString(triggerCharacter, paragraph, previousSegment, splittedSe
|
|
|
18
18
|
if (index >= 0) {
|
|
19
19
|
result = segment.text.substring(index) + result;
|
|
20
20
|
splittedSegmentResult === null || splittedSegmentResult === void 0 ? void 0 : splittedSegmentResult.unshift(index > 0
|
|
21
|
-
? (0,
|
|
21
|
+
? (0, roosterjs_content_model_api_1.splitTextSegment)(segment, paragraph, index, segment.text.length)
|
|
22
22
|
: segment);
|
|
23
23
|
break;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getQueryString.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/picker/getQueryString.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getQueryString.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/picker/getQueryString.ts"],"names":[],"mappings":";;;AAAA,2EAA+D;AAM/D;;GAEG;AACH,SAAgB,cAAc,CAC1B,gBAAwB,EACxB,SAA8C,EAC9C,eAAiC,EACjC,qBAA0C;IAE1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEpD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAChB,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,EAAE;YAC/B,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM;SACT;QAED,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAEzD,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YAEhD,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAC1B,KAAK,GAAG,CAAC;gBACL,CAAC,CAAC,IAAA,8CAAgB,EAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClE,CAAC,CAAC,OAAO,CAChB,CAAC;YAEF,MAAM;SACT;aAAM;YACH,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;YAE/B,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SAC3C;KACJ;IAED,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,MAAM,GAAG,EAAE,CAAC;KACf;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAzCD,wCAyCC","sourcesContent":["import { splitTextSegment } from 'roosterjs-content-model-api';\nimport type {\n ContentModelText,\n ShallowMutableContentModelParagraph,\n} from 'roosterjs-content-model-types';\n\n/**\n * @internal\n */\nexport function getQueryString(\n triggerCharacter: string,\n paragraph: ShallowMutableContentModelParagraph,\n previousSegment: ContentModelText,\n splittedSegmentResult?: ContentModelText[]\n): string {\n let result = '';\n let i = paragraph.segments.indexOf(previousSegment);\n\n for (; i >= 0; i--) {\n const segment = paragraph.segments[i];\n\n if (segment.segmentType != 'Text') {\n result = '';\n break;\n }\n\n const index = segment.text.lastIndexOf(triggerCharacter);\n\n if (index >= 0) {\n result = segment.text.substring(index) + result;\n\n splittedSegmentResult?.unshift(\n index > 0\n ? splitTextSegment(segment, paragraph, index, segment.text.length)\n : segment\n );\n\n break;\n } else {\n result = segment.text + result;\n\n splittedSegmentResult?.unshift(segment);\n }\n }\n\n if (i < 0) {\n result = '';\n }\n\n return result;\n}\n"]}
|
|
@@ -104,8 +104,10 @@ var TableEditor = /** @class */ (function () {
|
|
|
104
104
|
_this.disposeTableInserter();
|
|
105
105
|
_this.disposeCellResizers();
|
|
106
106
|
};
|
|
107
|
-
this.onEndTableMove = function () {
|
|
108
|
-
|
|
107
|
+
this.onEndTableMove = function (disposeHandler) {
|
|
108
|
+
if (disposeHandler) {
|
|
109
|
+
_this.disposeTableMover();
|
|
110
|
+
}
|
|
109
111
|
return _this.onFinishEditing();
|
|
110
112
|
};
|
|
111
113
|
this.onInserted = function () {
|