devexpress-richedit 25.1.2-beta → 25.1.4-build-25191-0102
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/bin/gulpfile.js +1 -1
- package/bin/index-custom.js +1 -1
- package/bin/localization-builder.js +1 -1
- package/bin/nspell-index.js +1 -1
- package/bin/nspell.webpack.config.js +1 -1
- package/bin/webpack-externals.js +1 -1
- package/bin/webpack.config.js +1 -1
- package/dist/dx.richedit.css +1 -1
- package/dist/dx.richedit.d.ts +1 -2
- package/dist/dx.richedit.js +1374 -1304
- package/dist/dx.richedit.min.js +2 -2
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/lib/client/client-rich-edit.js +2 -2
- package/lib/client/commands/commands.js +0 -3
- package/lib/client/commands/mail-merge-command.js +3 -2
- package/lib/client/commands/open-document-command.js +4 -0
- package/lib/client/formats/docx/export/exporters/relations/base.js +2 -2
- package/lib/client/formats/docx/import/destination/numbering/numberings-destination.js +1 -1
- package/lib/client/formats/docx/import/destination/runs/text-destination.js +1 -1
- package/lib/client/model-api/character-properties.js +13 -17
- package/lib/client/model-api/document.js +2 -0
- package/lib/client/model-api/images/image-enums.js +1 -0
- package/lib/client/model-api/images/images.js +1 -1
- package/lib/client/model-api/table/enums.js +4 -0
- package/lib/client/public/commands/enum.d.ts +1 -2
- package/lib/client/public/commands/enum.js +1 -1
- package/lib/client/public/options.d.ts +1 -0
- package/lib/client/public/ribbon/item-ids.js +1 -0
- package/lib/client/public/rich-edit.d.ts +5 -5
- package/lib/client/ribbon/toolbar-items/index.d.ts +1 -1
- package/lib/client/ribbon/toolbar-items/toolbar-item-template-creators/index.d.ts +7 -7
- package/lib/client/utils/focus-helper.js +22 -5
- package/lib/common/canvas/canvas-manager.js +1 -1
- package/lib/common/canvas/canvas-scroll-manager.js +1 -1
- package/lib/common/canvas/canvas-size-info.d.ts +1 -0
- package/lib/common/canvas/canvas-size-info.js +2 -2
- package/lib/common/canvas/renderes/view-manager.js +4 -3
- package/lib/common/commands/client-command.d.ts +1 -2
- package/lib/common/commands/client-command.js +0 -1
- package/lib/common/commands/command-manager.js +0 -2
- package/lib/common/commands/dialogs/dialog-layout-options-command.js +0 -3
- package/lib/common/commands/document/print-document-on-client-command.d.ts +2 -0
- package/lib/common/commands/document/print-document-on-client-command.js +46 -18
- package/lib/common/commands/floating-objects/floating-object-drag-drop-change-position-command.js +0 -3
- package/lib/common/commands/layout/apply-style-command.d.ts +2 -2
- package/lib/common/commands/layout/apply-style-command.js +3 -4
- package/lib/common/commands/layout/toggle-show-hidden-symbols-command.js +0 -3
- package/lib/common/commands/toc/set-paragraph-level-command.js +1 -1
- package/lib/common/formats/html/export/html-export.d.ts +8 -0
- package/lib/common/formats/html/export/html-export.js +49 -26
- package/lib/common/formats/html/import/containers/runs.d.ts +2 -1
- package/lib/common/formats/html/import/containers/runs.js +2 -1
- package/lib/common/formats/html/import/html-importer.d.ts +0 -1
- package/lib/common/formats/html/import/html-importer.js +2 -3
- package/lib/common/formats/html/import/html-model-inserter.js +4 -0
- package/lib/common/formats/html/import/importers/list-base.js +2 -1
- package/lib/common/formats/rtf/utils/list-level-display-text-helper.js +2 -2
- package/lib/common/input-controller.js +2 -2
- package/lib/common/layout/document-layout.js +4 -1
- package/lib/common/layout/main-structures/layout-row.d.ts +1 -2
- package/lib/common/layout/main-structures/layout-row.js +0 -1
- package/lib/common/layout-formatter/row/result.js +1 -1
- package/lib/common/layout-formatter/row/size-engine/row-formatting-info.d.ts +1 -0
- package/lib/common/layout-formatter/row/size-engine/row-formatting-info.js +2 -2
- package/lib/common/layout-formatter/row/size-engine/row-sizes-manager.d.ts +2 -0
- package/lib/common/layout-formatter/row/size-engine/row-sizes-manager.js +2 -0
- package/lib/common/layout-formatter/row/states.js +1 -1
- package/lib/common/layout-formatter/row/tab-info.d.ts +2 -1
- package/lib/common/layout-formatter/row/tab-info.js +40 -40
- package/lib/common/layout-formatter/row/word-holder.js +1 -1
- package/lib/common/model/borders/border-info.js +1 -1
- package/lib/common/model/caches/images.d.ts +4 -1
- package/lib/common/model/caches/images.js +6 -2
- package/lib/common/model/character/character-properties.d.ts +1 -1
- package/lib/common/model/character/character-properties.js +14 -2
- package/lib/common/model/fields/field.d.ts +1 -1
- package/lib/common/model/fields/field.js +4 -3
- package/lib/common/model/fields/parsers/field-code-parser-doc-variable.d.ts +1 -1
- package/lib/common/model/fields/parsers/field-code-parser.d.ts +1 -1
- package/lib/common/model/fields/tree-creator.js +1 -1
- package/lib/common/model/history/items/character-properties-history-items.d.ts +2 -1
- package/lib/common/model/history/items/character-properties-history-items.js +3 -2
- package/lib/common/model/manipulators/character-properties-manipulator.js +2 -2
- package/lib/common/model/manipulators/i-properties-manipulator.d.ts +1 -1
- package/lib/common/model/manipulators/picture-manipulator/picture-manipulator.js +2 -2
- package/lib/common/model/options/fonts.d.ts +1 -1
- package/lib/common/model/paragraph/paragraph-style.d.ts +1 -0
- package/lib/common/model/paragraph/paragraph-style.js +3 -0
- package/lib/common/scroll/canvas-states.d.ts +4 -4
- package/lib/common/scroll/model-states.d.ts +5 -5
- package/lib/common/ui/ruler/controls/ruler.js +3 -7
- package/lib/common/ui/ruler/controls/vertical-line.js +2 -1
- package/package.json +3 -3
- package/lib/client/formats/docx/import/destination/field/field-data-destination.d.ts +0 -0
- package/lib/client/formats/docx/import/destination/field/field-data-destination.js +0 -0
- package/lib/client/formats/docx/import/destination/field/form-field-destination.d.ts +0 -0
- package/lib/client/formats/docx/import/destination/field/form-field-destination.js +0 -0
- package/lib/client/formats/docx/import/destination/paragraph-properties/paragraph-mark-run-properties-destination.d.ts +0 -0
- package/lib/client/formats/docx/import/destination/paragraph-properties/paragraph-mark-run-properties-destination.js +0 -0
- package/lib/common/commands/layout/toggle-allow-zoom-command.d.ts +0 -7
- package/lib/common/commands/layout/toggle-allow-zoom-command.js +0 -17
- package/lib/common/formats/rtf/import/properties-normalization/tmp.d.ts +0 -0
- package/lib/common/formats/rtf/import/properties-normalization/tmp.js +0 -0
- package/lib/common/layout-formatter/box/generator/multi-dimension-iterator.d.ts +0 -0
- package/lib/common/layout-formatter/box/generator/multi-dimension-iterator.js +0 -0
- package/lib/common/layout-formatter/table/layout-row-index-helper.d.ts +0 -0
- package/lib/common/layout-formatter/table/layout-row-index-helper.js +0 -0
package/index.d.ts
CHANGED
package/index.js
CHANGED
@@ -62,8 +62,8 @@ export class ClientRichEdit {
|
|
62
62
|
this.rawDataSource = settings.rawDataSource;
|
63
63
|
this.contextMenuSettings = settings.contextMenuSettings;
|
64
64
|
this.fullScreenHelper = new FullScreenHelper(element);
|
65
|
-
if ("
|
66
|
-
config(JSON.parse(atob("
|
65
|
+
if ("eyJsaWNlbnNlS2V5IjoiZXdvZ0lDSm1iM0p0WVhRaU9pQXhMQW9nSUNKcGJuUmxjbTVoYkZWellXZGxTV1FpT2lBaVZqSlJjRkZ0U2xaWVYzazJUbVY0YTNFNVdHczVieUlLZlE9PS5EMTNKeDFkWmJlWFE0bGVWQ05XZnk5U2FLeWFHbmxMOE1xYkF2YzloQ3FVZTlBajJWYzJUS2RaU01RR05xVkVkSjMrTWZQKzQrQTBqMFhCSGxEczdEV2xpWFlNK01EMEVCaEJVQ0JTVzVmeWRGSzhyOGpEMDRzV2ZKYS9CTDRFTGdLOWZpZz09In0=")
|
66
|
+
config(JSON.parse(atob("eyJsaWNlbnNlS2V5IjoiZXdvZ0lDSm1iM0p0WVhRaU9pQXhMQW9nSUNKcGJuUmxjbTVoYkZWellXZGxTV1FpT2lBaVZqSlJjRkZ0U2xaWVYzazJUbVY0YTNFNVdHczVieUlLZlE9PS5EMTNKeDFkWmJlWFE0bGVWQ05XZnk5U2FLeWFHbmxMOE1xYkF2YzloQ3FVZTlBajJWYzJUS2RaU01RR05xVkVkSjMrTWZQKzQrQTBqMFhCSGxEczdEV2xpWFlNK01EMEVCaEJVQ0JTVzVmeWRGSzhyOGpEMDRzV2ZKYS9CTDRFTGdLOWZpZz09In0=")));
|
67
67
|
this.prepareElement(element, settings);
|
68
68
|
this.initDefaultFontsAndStyles();
|
69
69
|
this.initBars(settings.ribbon, settings.fonts);
|
@@ -441,9 +441,6 @@ export function executeApiCommandCore(commandManager, commandId, parameter) {
|
|
441
441
|
break;
|
442
442
|
}
|
443
443
|
;
|
444
|
-
case ViewTabCommandId.ToggleAllowZoom:
|
445
|
-
parameter = undefined;
|
446
|
-
break;
|
447
444
|
case HeaderAndFooterTabCommandId.GoToPageHeader:
|
448
445
|
parameter = undefined;
|
449
446
|
break;
|
@@ -8,7 +8,6 @@ import { InsertParagraphManipulatorParams } from '../../common/model/manipulator
|
|
8
8
|
import { RangeCopy } from '../../common/model/manipulators/range/create-range-copy-operation';
|
9
9
|
import { InsertTextManipulatorParams } from '../../common/model/manipulators/text-manipulator/insert-text-manipulator-params';
|
10
10
|
import { ControlOptions, DocumentCapability } from '../../common/model/options/control';
|
11
|
-
import { RichUtils } from '../../common/model/rich-utils';
|
12
11
|
import { RunType } from '../../common/model/runs/run-type';
|
13
12
|
import { SectionStartType } from '../../common/model/section/enums';
|
14
13
|
import { SubDocumentIntervals, SubDocumentPosition } from '../../common/model/sub-document';
|
@@ -125,8 +124,10 @@ export class MailMergeCommand extends CommandBase {
|
|
125
124
|
replaceMergeFieldsInSubDocument(modelManager, record, lastProcessedPositionInMainSubDocument, subDoc) {
|
126
125
|
const processField = (parser) => {
|
127
126
|
if (parser instanceof FieldCodeParserMailMerge) {
|
127
|
+
parser.update(null);
|
128
128
|
const fieldName = parser.getMergeFieldName();
|
129
|
-
|
129
|
+
const simpleText = this.getResultByFieldName(record, fieldName);
|
130
|
+
return parser.getFormattedResult(simpleText);
|
130
131
|
}
|
131
132
|
return null;
|
132
133
|
};
|
@@ -71,6 +71,8 @@ export class OpenDocumentCommand extends CommandBase {
|
|
71
71
|
return false;
|
72
72
|
this.beforeOpen();
|
73
73
|
core.activeDocumentImporter.importFromFile(file, this.control.modelManager.richOptions, (documentModel, formatImagesImporter) => {
|
74
|
+
if (core.isDisposed)
|
75
|
+
return;
|
74
76
|
core.activeDocumentImporter = null;
|
75
77
|
this.openCore(fileName, format, documentModel, formatImagesImporter, extension);
|
76
78
|
if (!this.suppressUpdateFields)
|
@@ -78,6 +80,8 @@ export class OpenDocumentCommand extends CommandBase {
|
|
78
80
|
if (callback)
|
79
81
|
callback(true, null);
|
80
82
|
}, (reason) => {
|
83
|
+
if (core.isDisposed)
|
84
|
+
return;
|
81
85
|
core.activeDocumentImporter = null;
|
82
86
|
this.control.loadingPanelManager.loadingPanel.setVisible(false);
|
83
87
|
NewDocumentCommand.newDocumentInner.call(this);
|
@@ -21,9 +21,9 @@ export class RelationsBaseExporter extends ExporterBaseWithRootElement {
|
|
21
21
|
urlEncodeAsciiSpecialSymbols(url) {
|
22
22
|
if (url) {
|
23
23
|
if (url.indexOf(' ') >= 0)
|
24
|
-
url = url.replace(
|
24
|
+
url = url.replace(/ /g, '%20');
|
25
25
|
if (url.indexOf('\'') >= 0)
|
26
|
-
url = url.replace(
|
26
|
+
url = url.replace(/'/g, '%27');
|
27
27
|
}
|
28
28
|
return url;
|
29
29
|
}
|
@@ -438,7 +438,7 @@ export class ListLevelFormatStringDestination extends ListLevelElementDestinatio
|
|
438
438
|
}
|
439
439
|
convertFormatString(value) {
|
440
440
|
const regex = new RegExp(/%\d/);
|
441
|
-
let result = value.replace(
|
441
|
+
let result = value.replace(/{/g, '{{').replace(/}/g, '}}');
|
442
442
|
let match = result.match(regex);
|
443
443
|
if (match) {
|
444
444
|
do {
|
@@ -40,7 +40,7 @@ export function convertToCharacterPropertiesApi(properties, colorProvider) {
|
|
40
40
|
return value;
|
41
41
|
}
|
42
42
|
export function convertFromCharacterPropertiesApi(properties, fontInfoCache, parameterIndex, setRestAsUndefined, propsCoreTemplate) {
|
43
|
-
var _a, _b, _c, _d, _e, _f, _g, _h
|
43
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
44
44
|
properties = ApiParametersChecker.check(properties, parameterIndex, false, [
|
45
45
|
ApiParametersChecker.objectDescriptor('properties', 'CharacterProperties', (val) => val)
|
46
46
|
]);
|
@@ -60,31 +60,27 @@ export function convertFromCharacterPropertiesApi(properties, fontInfoCache, par
|
|
60
60
|
propsCoreTemplate.fontItalic = (_d = ApiParametersChecker.check(properties.italic, parameterIndex, true, [
|
61
61
|
ApiParametersChecker.booleanDescriptor('properties.italic', (val) => val)
|
62
62
|
])) !== null && _d !== void 0 ? _d : propsCoreTemplate.fontItalic;
|
63
|
-
|
64
|
-
ApiParametersChecker.stringDescriptor('properties.fontName', (
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
return fontInfo;
|
69
|
-
}, false)
|
70
|
-
])) !== null && _e !== void 0 ? _e : propsCoreTemplate.fontInfo;
|
71
|
-
propsCoreTemplate.fontSize = (_f = ApiParametersChecker.check(properties.size, parameterIndex, true, [
|
63
|
+
const fontInfo = ApiParametersChecker.check(properties.fontName, parameterIndex, true, [
|
64
|
+
ApiParametersChecker.stringDescriptor('properties.fontName', (value) => fontInfoCache.getItemByName(value), false)
|
65
|
+
]);
|
66
|
+
propsCoreTemplate.fontInfo = fontInfo === undefined ? propsCoreTemplate.fontInfo : fontInfo !== null && fontInfo !== void 0 ? fontInfo : fontInfoCache.addFont(properties.fontName, properties.fontName);
|
67
|
+
propsCoreTemplate.fontSize = (_e = ApiParametersChecker.check(properties.size, parameterIndex, true, [
|
72
68
|
ApiParametersChecker.numberDescriptor('properties.size', (val) => val, 0, 601)
|
73
|
-
])) !== null &&
|
74
|
-
propsCoreTemplate.hidden = (
|
69
|
+
])) !== null && _e !== void 0 ? _e : propsCoreTemplate.fontSize;
|
70
|
+
propsCoreTemplate.hidden = (_f = ApiParametersChecker.check(properties.hidden, parameterIndex, true, [
|
75
71
|
ApiParametersChecker.booleanDescriptor('properties.hidden', (val) => val)
|
76
|
-
])) !== null &&
|
72
|
+
])) !== null && _f !== void 0 ? _f : propsCoreTemplate.hidden;
|
77
73
|
const shadigInfoColor = ApiParametersChecker.check(properties.backColor, parameterIndex, true, ModelParametersChecker.colorDescriptors('properties.backColor'));
|
78
74
|
propsCoreTemplate.shadingInfo = shadigInfoColor === undefined ? propsCoreTemplate.shadingInfo :
|
79
75
|
ShadingInfo.createByColor(ColorModelInfo.makeByColor(shadigInfoColor));
|
80
|
-
propsCoreTemplate.script = (
|
76
|
+
propsCoreTemplate.script = (_g = ApiParametersChecker.check(properties.script, parameterIndex, true, [
|
81
77
|
ApiParametersChecker.enumDescriptor('properties.script', (val) => val, CharacterPropertiesScriptApi, 'CharacterPropertiesScript')
|
82
|
-
])) !== null &&
|
78
|
+
])) !== null && _g !== void 0 ? _g : propsCoreTemplate.script;
|
83
79
|
const underlineColor = ApiParametersChecker.check(properties.underlineColor, parameterIndex, true, ModelParametersChecker.colorDescriptors('properties.underlineColor'));
|
84
80
|
propsCoreTemplate.underlineColor = underlineColor === undefined ? propsCoreTemplate.underlineColor : ColorModelInfo.makeByColor(underlineColor);
|
85
|
-
propsCoreTemplate.underlineWordsOnly = (
|
81
|
+
propsCoreTemplate.underlineWordsOnly = (_h = ApiParametersChecker.check(properties.underlineWordsOnly, parameterIndex, true, [
|
86
82
|
ApiParametersChecker.booleanDescriptor('properties.underlineWordsOnly', (val) => val)
|
87
|
-
])) !== null &&
|
83
|
+
])) !== null && _h !== void 0 ? _h : propsCoreTemplate.underlineWordsOnly;
|
88
84
|
const strikeout = ApiParametersChecker.check(properties.strikeout, parameterIndex, true, [
|
89
85
|
ApiParametersChecker.booleanDescriptor('properties.strikeout', (val) => val)
|
90
86
|
]);
|
@@ -7,6 +7,7 @@ import { HyperlinkCollection } from './collections/hyperlink-collection';
|
|
7
7
|
import { ListCollection } from './collections/numbered-list-collection';
|
8
8
|
import { SectionCollection } from './collections/section-collection';
|
9
9
|
import { SubDocumentCollection as SubDocumentCollection } from './collections/sub-documents-collection';
|
10
|
+
import { FontCorrector } from '../../common/model/creator/font-corrector';
|
10
11
|
export class RichEditDocumentApi {
|
11
12
|
constructor(processor) {
|
12
13
|
this._processor = processor;
|
@@ -105,6 +106,7 @@ export class RichEditDocumentApi {
|
|
105
106
|
this._processor.modelManager.model.defaultCharacterProperties =
|
106
107
|
this._processor.modelManager.model.cache.maskedCharacterPropertiesCache.getItem(propertiesCore);
|
107
108
|
NumberMapUtils.forEach(this._processor.modelManager.model.subDocuments, (sd) => sd.resetMergedFormattingCache(ResetFormattingCacheType.All));
|
109
|
+
new FontCorrector(this._processor.modelManager.modelManipulator, this._processor.modelManager.model, this._processor.modelManager.richOptions.fonts).correct();
|
108
110
|
this._processor.layoutFormatterManager.restartManager.restartAllLayout();
|
109
111
|
this._processor.endUpdate();
|
110
112
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { AnchorObjectVerticalPositionAlignment } from '../../../common/model/floating-objects/enums';
|
1
2
|
export var FloatingObjectHorizontalPositionTypeApi;
|
2
3
|
(function (FloatingObjectHorizontalPositionTypeApi) {
|
3
4
|
FloatingObjectHorizontalPositionTypeApi[FloatingObjectHorizontalPositionTypeApi["Aligned"] = 0] = "Aligned";
|
@@ -197,7 +197,7 @@ export class ImagesApi {
|
|
197
197
|
applyVerticalPosition(verticalPosition, anchorInfo);
|
198
198
|
const anchorPictureInfo = new AnchorPictureInfo(new PictureSize(true, 0, cacheInfo, new Size(100, 100)), shape, anchorInfo, new NonVisualDrawingObjectInfo(), new NonVisualDrawingObjectInfo());
|
199
199
|
anchorPictureInfo.containerProperties.description = options.description;
|
200
|
-
this._processor.modelManager.modelManipulator.picture.insertAnchoredPictureViaHistory(new SubDocumentPosition(this._subDocument, position), inputPos.charPropsBundle, anchorPictureInfo,
|
200
|
+
this._processor.modelManager.modelManipulator.picture.insertAnchoredPictureViaHistory(new SubDocumentPosition(this._subDocument, position), inputPos.charPropsBundle, anchorPictureInfo, ImageLoadingOptions.initByActualSize(size ? new Size(size.width, size.height) : undefined, (_picInterval, _cacheInfo) => setTimeout(() => {
|
201
201
|
callback(getFloatingImageApiFromRun(this._processor, this._subDocument, this._subDocument.getRunAndIndexesByPosition(position)));
|
202
202
|
}, 0)));
|
203
203
|
this._processor.endUpdate();
|
@@ -1,3 +1,7 @@
|
|
1
|
+
import { ParagraphAlignment } from '../../../common/model/paragraph/paragraph-properties';
|
2
|
+
import { BorderLineStyle } from '../../../common/model/borders/enums';
|
3
|
+
import { TableCellVerticalAlignment } from '../../../common/model/tables/secondary-structures/table-base-structures';
|
4
|
+
import { TableHeightUnitType, TableWidthUnitType } from '../../../common/model/tables/secondary-structures/table-units';
|
1
5
|
export var BorderLineStyleApi;
|
2
6
|
(function (BorderLineStyleApi) {
|
3
7
|
BorderLineStyleApi[BorderLineStyleApi["Nil"] = -1] = "Nil";
|
@@ -150,8 +150,7 @@ export declare enum ViewTabCommandId {
|
|
150
150
|
SwitchToPrintLayout = 406,
|
151
151
|
ToggleShowHorizontalRuler = 94,
|
152
152
|
ToggleFullScreen = 98,
|
153
|
-
ChangeZoomLevel = 460
|
154
|
-
ToggleAllowZoom = 461
|
153
|
+
ChangeZoomLevel = 460
|
155
154
|
}
|
156
155
|
export declare enum HeaderAndFooterTabCommandId {
|
157
156
|
GoToPageHeader = 227,
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { RichEditClientCommand as Command } from '../../../common/commands/client-command';
|
1
2
|
export var FileTabCommandId;
|
2
3
|
(function (FileTabCommandId) {
|
3
4
|
FileTabCommandId[FileTabCommandId["CreateDocument"] = 412] = "CreateDocument";
|
@@ -158,7 +159,6 @@ export var ViewTabCommandId;
|
|
158
159
|
ViewTabCommandId[ViewTabCommandId["ToggleShowHorizontalRuler"] = 94] = "ToggleShowHorizontalRuler";
|
159
160
|
ViewTabCommandId[ViewTabCommandId["ToggleFullScreen"] = 98] = "ToggleFullScreen";
|
160
161
|
ViewTabCommandId[ViewTabCommandId["ChangeZoomLevel"] = 460] = "ChangeZoomLevel";
|
161
|
-
ViewTabCommandId[ViewTabCommandId["ToggleAllowZoom"] = 461] = "ToggleAllowZoom";
|
162
162
|
})(ViewTabCommandId || (ViewTabCommandId = {}));
|
163
163
|
export var HeaderAndFooterTabCommandId;
|
164
164
|
(function (HeaderAndFooterTabCommandId) {
|
@@ -118,20 +118,20 @@ declare enum PrintModeApi {
|
|
118
118
|
Html = 1,
|
119
119
|
Pdf = 2
|
120
120
|
}
|
121
|
-
export { CharacterPropertiesApi as CharacterProperties, CharacterPropertiesScriptApi as CharacterPropertiesScript, ICharacterProperties } from '../model-api/character-properties';
|
121
|
+
export { CharacterPropertiesApi as CharacterProperties, CharacterPropertiesScriptApi as CharacterPropertiesScript, type ICharacterProperties } from '../model-api/character-properties';
|
122
122
|
export { HyperlinkInfoApi as HyperlinkInfo } from '../model-api/field';
|
123
123
|
export { IntervalApi as Interval } from '../model-api/interval';
|
124
124
|
export { ListTypeApi as ListType, ListLevelNumberAlignmentApi as ListLevelNumberAlignment, ListLevelFormatApi as ListLevelFormat } from '../model-api/lists/enums';
|
125
125
|
export { ListLevelSettingsApi as ListLevelSettings } from '../model-api/lists/list-level-settings';
|
126
126
|
export { ListApi as List } from '../model-api/lists/lists';
|
127
|
-
export { ParagraphAlignmentApi as ParagraphAlignment, ParagraphLineSpacingTypeApi as ParagraphLineSpacingType, ParagraphFirstLineIndentApi as ParagraphFirstLineIndent, ParagraphPropertiesApi as ParagraphProperties, ParagraphApi as Paragraph, IParagraphProperties } from '../model-api/paragraph';
|
128
|
-
export { MarginsApi as Margins, SizeApi as Size, IMargins, } from '../model-api/size';
|
127
|
+
export { ParagraphAlignmentApi as ParagraphAlignment, ParagraphLineSpacingTypeApi as ParagraphLineSpacingType, ParagraphFirstLineIndentApi as ParagraphFirstLineIndent, ParagraphPropertiesApi as ParagraphProperties, ParagraphApi as Paragraph, type IParagraphProperties } from '../model-api/paragraph';
|
128
|
+
export { MarginsApi as Margins, SizeApi as Size, type IMargins, } from '../model-api/size';
|
129
129
|
export { SubDocumentTypeApi as SubDocumentType, HeaderFooterTypeApi as HeaderFooterType, SectionBreakTypeApi as SectionBreakType, SubDocumentApi as SubDocument } from '../model-api/sub-document';
|
130
130
|
export { BookmarkApi as Bookmark } from '../model-api/bookmark';
|
131
131
|
export { BookmarkClientApi as BookmarkBase } from '../api/bookmark';
|
132
132
|
export { PaperSizeApi as PaperSize } from '../model-api/section';
|
133
133
|
export { TableApi as Table } from '../model-api/table/table';
|
134
|
-
export { TableBordersBaseApi as TableBordersBase, TableBordersApi as TableBorders, TableCellBordersApi as TableCellBorders, TableBorderApi as TableBorder, ITableBorders, ITableCellBorders, } from '../model-api/table/table-borders';
|
134
|
+
export { TableBordersBaseApi as TableBordersBase, TableBordersApi as TableBorders, TableCellBordersApi as TableCellBorders, TableBorderApi as TableBorder, type ITableBorders, type ITableCellBorders, } from '../model-api/table/table-borders';
|
135
135
|
export { TableStyleOptionsApi as TableStyleOptions } from '../model-api/table/table-style-options';
|
136
136
|
export { TableWidthTypeApi as TableWidthType, TableContentVerticalAlignmentApi as TableContentVerticalAlignment, TableContentHorizontalAlignmentApi as TableContentHorizontalAlignment, TableRowHeightTypeApi as TableRowHeightType, BorderLineStyleApi as BorderLineStyle, } from '../model-api/table/enums';
|
137
137
|
export { SectionApi as Section } from '../model-api/section';
|
@@ -175,7 +175,7 @@ export { TableLayoutTabCommandId };
|
|
175
175
|
export { FloatingObjectsFormatTabCommandId };
|
176
176
|
export { ContextMenuCommandId };
|
177
177
|
export { WrapTypeApi as WrapType, WrapSideApi as WrapSide, FloatingObjectHorizontalAlignmentApi as FloatingObjectHorizontalAlignment, FloatingObjectHorizontalAnchorElementApi as FloatingObjectHorizontalAnchorElement, FloatingObjectHorizontalPositionTypeApi as FloatingObjectHorizontalPositionType, FloatingObjectVerticalAnchorElementApi as FloatingObjectVerticalAnchorElement, FloatingObjectVerticalAlignmentApi as FloatingObjectVerticalAlignment, FloatingObjectVerticalPositionTypeApi as FloatingObjectVerticalPositionType } from '../model-api/images/image-enums';
|
178
|
-
export { HorizontalAbsolutePositionApi as HorizontalAbsolutePosition, HorizontalAlignedPositionApi as HorizontalAlignedPosition, HorizontalRelativePositionApi as HorizontalRelativePosition, VerticalAbsolutePositionApi as VerticalAbsolutePosition, VerticalAlignedPositionApi as VerticalAlignedPosition, VerticalRelativePositionApi as VerticalRelativePosition, IFloatingObjectDistanceApi as IFloatingObjectDistance, IHorizontalAlignedPositionApi as IHorizontalAlignedPosition, IHorizontalAbsolutePositionApi as IHorizontalAbsolutePosition, IHorizontalRelativePositionApi as IHorizontalRelativePosition, IVerticalAlignedPositionApi as IVerticalAlignedPosition, IVerticalAbsolutePositionApi as IVerticalAbsolutePosition, IVerticalRelativePositionApi as IVerticalRelativePosition, IInsertedFloatingImageOptionsApi as IInsertedFloatingImageOptions, IInsertedInlineImageOptionsApi as IInsertedInlineImageOptions, } from '../model-api/images/image-interfaces';
|
178
|
+
export { HorizontalAbsolutePositionApi as HorizontalAbsolutePosition, HorizontalAlignedPositionApi as HorizontalAlignedPosition, HorizontalRelativePositionApi as HorizontalRelativePosition, VerticalAbsolutePositionApi as VerticalAbsolutePosition, VerticalAlignedPositionApi as VerticalAlignedPosition, VerticalRelativePositionApi as VerticalRelativePosition, type IFloatingObjectDistanceApi as IFloatingObjectDistance, type IHorizontalAlignedPositionApi as IHorizontalAlignedPosition, type IHorizontalAbsolutePositionApi as IHorizontalAbsolutePosition, type IHorizontalRelativePositionApi as IHorizontalRelativePosition, type IVerticalAlignedPositionApi as IVerticalAlignedPosition, type IVerticalAbsolutePositionApi as IVerticalAbsolutePosition, type IVerticalRelativePositionApi as IVerticalRelativePosition, type IInsertedFloatingImageOptionsApi as IInsertedFloatingImageOptions, type IInsertedInlineImageOptionsApi as IInsertedInlineImageOptions, } from '../model-api/images/image-interfaces';
|
179
179
|
export { FloatingImageApi as FloatingImage } from '../model-api/images/floating-image';
|
180
180
|
export { InlineImageApi as InlineImage } from '../model-api/images/inline-image';
|
181
181
|
export { ImageApi as Image } from '../model-api/images/image';
|
@@ -4,7 +4,7 @@ export { ToolbarMenuItem } from './toolbar-menu-item';
|
|
4
4
|
export { ToolbarSelectBoxItem } from './toolbar-select-box-item';
|
5
5
|
export { ToolbarSeparatorItem } from './toolbar-separator-item';
|
6
6
|
export { ToolbarItemBase } from './toolbar-item-base';
|
7
|
-
export { InteractiveItemOptions, ToolbarInteractiveItem } from './toolbar-interactive-item';
|
7
|
+
export { type InteractiveItemOptions, ToolbarInteractiveItem } from './toolbar-interactive-item';
|
8
8
|
export { ToolbarSubMenuItem } from './toolbar-sub-menu-item';
|
9
9
|
export { ToolbarColorBoxItem } from './toolbar-color-box-item';
|
10
10
|
export { ToolbarNumberBoxItem } from './toolbar-number-box-item';
|
@@ -1,8 +1,8 @@
|
|
1
|
-
export { ButtonToolbarItemTemplateCreator, IButtonToolbarItemTemplateCreatorOptions } from './button-toolbar-item-template-creator';
|
2
|
-
export { ButtonGroupToolbarItemTemplateCreator, IButtonGroupToolbarItemTemplateCreatorOptions } from './button-group-toolbar-item-template-creator';
|
3
|
-
export { MenuToolbarItemTemplateCreator, IMenuToolbarItemTemplateCreatorOptions } from './menu-toolbar-item-template-creator';
|
4
|
-
export { SelectBoxToolbarItemTemplateCreator, ISelectBoxToolbarItemTemplateCreatorOptions } from './select-box-toolbar-item-template-creator';
|
1
|
+
export { ButtonToolbarItemTemplateCreator, type IButtonToolbarItemTemplateCreatorOptions } from './button-toolbar-item-template-creator';
|
2
|
+
export { ButtonGroupToolbarItemTemplateCreator, type IButtonGroupToolbarItemTemplateCreatorOptions } from './button-group-toolbar-item-template-creator';
|
3
|
+
export { MenuToolbarItemTemplateCreator, type IMenuToolbarItemTemplateCreatorOptions } from './menu-toolbar-item-template-creator';
|
4
|
+
export { SelectBoxToolbarItemTemplateCreator, type ISelectBoxToolbarItemTemplateCreatorOptions } from './select-box-toolbar-item-template-creator';
|
5
5
|
export { SeparatorToolbarItemTemplateCreator } from './separator-toolbar-item-template-creator';
|
6
|
-
export { NumberBoxToolbarItemTemplateCreator, INumberBoxToolbarItemTemplateCreatorOptions } from './number-box-toolbar-item-template-creator';
|
7
|
-
export { ColorBoxToolbarItemTemplateCreator, IColorBoxToolbarItemTemplateCreatorOptions } from './color-box-toolbar-item-template-creator';
|
8
|
-
export { IToolbarItemTemplateCreator } from './base-types';
|
6
|
+
export { NumberBoxToolbarItemTemplateCreator, type INumberBoxToolbarItemTemplateCreatorOptions } from './number-box-toolbar-item-template-creator';
|
7
|
+
export { ColorBoxToolbarItemTemplateCreator, type IColorBoxToolbarItemTemplateCreatorOptions } from './color-box-toolbar-item-template-creator';
|
8
|
+
export { type IToolbarItemTemplateCreator } from './base-types';
|
@@ -1,3 +1,4 @@
|
|
1
|
+
var _a;
|
1
2
|
export class FocusHelper {
|
2
3
|
static preventFocusOnClick(element) {
|
3
4
|
return new FocusBlocker(element);
|
@@ -10,23 +11,24 @@ class FocusBlocker {
|
|
10
11
|
this.addEventListeners(target);
|
11
12
|
}
|
12
13
|
addEventListeners(element) {
|
13
|
-
element.addEventListener("
|
14
|
+
element.addEventListener("mousedown", this.onPointerDownBinded);
|
14
15
|
}
|
15
16
|
removeEventListeners(element) {
|
16
|
-
element.removeEventListener("
|
17
|
+
element.removeEventListener("mousedown", this.onPointerDownBinded);
|
17
18
|
}
|
18
19
|
onPointerDown(event) {
|
19
20
|
for (const element of event.composedPath()) {
|
20
|
-
if (!(element instanceof HTMLElement))
|
21
|
-
continue;
|
22
21
|
if (element === this.target) {
|
23
22
|
event.preventDefault();
|
24
23
|
break;
|
25
24
|
}
|
26
|
-
if (
|
25
|
+
if (element instanceof Element && this.isFocusableElement(element))
|
27
26
|
break;
|
28
27
|
}
|
29
28
|
}
|
29
|
+
isFocusableElement(element) {
|
30
|
+
return element.matches(FocusBlocker.focusableSelector);
|
31
|
+
}
|
30
32
|
dispose() {
|
31
33
|
if (this.target) {
|
32
34
|
this.removeEventListeners(this.target);
|
@@ -34,3 +36,18 @@ class FocusBlocker {
|
|
34
36
|
}
|
35
37
|
}
|
36
38
|
}
|
39
|
+
_a = FocusBlocker;
|
40
|
+
FocusBlocker.focusableSelectors = [
|
41
|
+
'a[href]',
|
42
|
+
'area[href]',
|
43
|
+
'input',
|
44
|
+
'select',
|
45
|
+
'textarea',
|
46
|
+
'button',
|
47
|
+
'iframe',
|
48
|
+
'object',
|
49
|
+
'embed',
|
50
|
+
'[tabindex]:not([tabindex="-1"])',
|
51
|
+
'[contenteditable]:not([contenteditable="false"])'
|
52
|
+
];
|
53
|
+
FocusBlocker.focusableSelector = _a.focusableSelectors.join(',');
|
@@ -254,7 +254,7 @@ export class CanvasManager extends BatchUpdatableObject {
|
|
254
254
|
const canvasX = MixedSize.fromUI(DomUtils.getAbsolutePositionX(canvas));
|
255
255
|
const canvasY = MixedSize.fromUI(DomUtils.getAbsolutePositionY(canvas));
|
256
256
|
const offsetY = MixedSize.fromUI(canvas.scrollTop).addSize(clientY).subtractSize(canvasY).useScale(scaleY);
|
257
|
-
const pageIndex = this.viewManager.layout.findPageIndexByOffsetY(offsetY.LayoutSize, this.sizes);
|
257
|
+
const pageIndex = this.viewManager.layout.findPageIndexByOffsetY(offsetY.LayoutSize * scaleY, this.sizes);
|
258
258
|
const visibleAreaWidth = MixedSize.fromUI(this.sizes.getVisibleAreaWidth(false));
|
259
259
|
const visibleAreaHeight = MixedSize.fromUI(this.sizes.getVisibleAreaHeight(false));
|
260
260
|
if (checkScroll) {
|
@@ -69,7 +69,7 @@ export class CanvasScrollManager {
|
|
69
69
|
height.clear().addLayoutSize(position.page.height);
|
70
70
|
if (relativePosition === RelativePosition.Bottom)
|
71
71
|
y.subtractUISize(this.sizes.getVisibleAreaHeight(false));
|
72
|
-
y.
|
72
|
+
y.addLayoutSize(canvasState.getVerticalOffset(this.sizes));
|
73
73
|
if (relativePosition === RelativePosition.Inside) {
|
74
74
|
let scrollTop = this.canvas.scrollTop;
|
75
75
|
const scrollVisibleAreaHeight = this.sizes.getVisibleAreaHeight(false);
|
@@ -15,6 +15,7 @@ export declare class CanvasSizeInfo implements IControlHeightProvider {
|
|
15
15
|
isInitialized(): boolean;
|
16
16
|
initialize(page: HTMLElement, canvas: HTMLDivElement): void;
|
17
17
|
getPageOffsetY(layoutPage: LayoutPage): number;
|
18
|
+
get zoomLevel(): number;
|
18
19
|
private setVisibleAreaSize;
|
19
20
|
getVisibleAreaWidth(includeScrollBars: boolean): number;
|
20
21
|
getVisibleAreaHeight(includeScrollBars: boolean): number;
|
@@ -22,9 +22,9 @@ export class CanvasSizeInfo {
|
|
22
22
|
this.setVisibleAreaSize(SizeUtils.getClientWidth(canvas), SizeUtils.getClientHeight(canvas));
|
23
23
|
}
|
24
24
|
getPageOffsetY(layoutPage) {
|
25
|
-
|
26
|
-
return pageOffsetY * this.zoomLevelHolder.zoomLevel;
|
25
|
+
return layoutPage.y + (this.topSpacing + layoutPage.index * this.betweenPageSpacing);
|
27
26
|
}
|
27
|
+
get zoomLevel() { return this.zoomLevelHolder.zoomLevel; }
|
28
28
|
setVisibleAreaSize(width, height) {
|
29
29
|
this.visibleAreaSize.width = width;
|
30
30
|
this.visibleAreaSize.height = height;
|
@@ -28,6 +28,7 @@ import { ControlOptions, DocumentCapability } from '../../model/options/control'
|
|
28
28
|
import { RichEditClientCommand } from '../../commands/client-command';
|
29
29
|
import { ZoomLevelChange } from '../../model/changes/model/zoom-level';
|
30
30
|
import { ModelChangeType } from '../../model/changes/enums';
|
31
|
+
import { MixedSize } from '../../../common/utils/mixed-size';
|
31
32
|
export class ViewManager {
|
32
33
|
get renderer() { return this.renderers[this.innerClientProperties.viewsSettings.viewType]; }
|
33
34
|
get printLayoutRenderer() { return this.renderers[ViewType.PrintLayout]; }
|
@@ -113,9 +114,9 @@ export class ViewManager {
|
|
113
114
|
const pageInfo = layoutSelection.selectionInfo.pageInfos[pageIndex];
|
114
115
|
const item = pageInfo.oldItems[0];
|
115
116
|
const layoutPage = this.layout.pages[pageIndex];
|
116
|
-
const x = layoutPage.x + this.cache[pageIndex].page.offsetLeft + item.x;
|
117
|
-
const y = this.sizes.getPageOffsetY(layoutPage) + item.y;
|
118
|
-
this.inputController.setPosition(x, y);
|
117
|
+
const x = MixedSize.fromLayout(layoutPage.x + this.cache[pageIndex].page.offsetLeft + item.x).useScale(this.zoomLevel);
|
118
|
+
const y = MixedSize.fromLayout(this.sizes.getPageOffsetY(layoutPage) + item.y).useScale(this.zoomLevel);
|
119
|
+
this.inputController.setPosition(x.UISize, y.UISize);
|
119
120
|
}
|
120
121
|
}
|
121
122
|
NotifySearchSelectionLayoutChanged() {
|
@@ -422,5 +422,4 @@ export var RichEditClientCommand;
|
|
422
422
|
RichEditClientCommand[RichEditClientCommand["GetHtml"] = 458] = "GetHtml";
|
423
423
|
RichEditClientCommand[RichEditClientCommand["CreateEmptyIfField"] = 459] = "CreateEmptyIfField";
|
424
424
|
RichEditClientCommand[RichEditClientCommand["ChangeZoomLevel"] = 460] = "ChangeZoomLevel";
|
425
|
-
RichEditClientCommand[RichEditClientCommand["ToggleAllowZoom"] = 461] = "ToggleAllowZoom";
|
426
425
|
})(RichEditClientCommand || (RichEditClientCommand = {}));
|
@@ -67,7 +67,6 @@ import { GoToNextHeaderFooterCommand, GoToPreviousHeaderFooterCommand } from './
|
|
67
67
|
import { InsertFooterCommand, InsertHeaderCommand } from './header-footer/insert-header-footer-commands';
|
68
68
|
import { LinkHeaderFooterToPreviousCommand } from './header-footer/link-header-footer-commands';
|
69
69
|
import { ApplyStyleCommand } from './layout/apply-style-command';
|
70
|
-
import { ToggleAllowZoomCommand } from './layout/toggle-allow-zoom-command';
|
71
70
|
import { ChangeZoomLevelCommand } from './layout/change-zoom-level-command';
|
72
71
|
import { ClearFormattingCommand } from './layout/clear-formatting-command';
|
73
72
|
import { ChangeViewTypeCommand, SwitchToPrintLayoutViewCommand, SwitchToSimpleViewCommand } from './layout/switch-view-command';
|
@@ -558,7 +557,6 @@ export class CommandManager {
|
|
558
557
|
this.createCommand(control, RichEditClientCommand.SwitchToSimpleView, SwitchToSimpleViewCommand);
|
559
558
|
this.createCommand(control, RichEditClientCommand.SwitchToPrintLayoutView, SwitchToPrintLayoutViewCommand);
|
560
559
|
this.createCommand(control, RichEditClientCommand.ChangeZoomLevel, ChangeZoomLevelCommand);
|
561
|
-
this.createCommand(control, RichEditClientCommand.ToggleAllowZoom, ToggleAllowZoomCommand);
|
562
560
|
this.createCommand(control, RichEditClientCommand.ShowErrorLoadPictureMessage, ShowLoadPictureErrorDialogCommand);
|
563
561
|
this.assingCommand(RichEditClientCommand.PrintDocumentOnClient, new PrintDocumentOnClient(control, printNonce));
|
564
562
|
}
|
@@ -58,7 +58,6 @@ export class DialogLayoutOptionsCommand extends ShowDialogCommandBase {
|
|
58
58
|
let run = subDocument.getRunByPosition(position);
|
59
59
|
let modelManipulator = this.modelManipulator;
|
60
60
|
let anchorInfoManipulator = modelManipulator.floatingObject.anchorInfo;
|
61
|
-
const topInfo = this.control.viewManager.canvasManager.getScrollTopInfo();
|
62
61
|
let history = this.history;
|
63
62
|
history.beginTransaction();
|
64
63
|
let changed = false;
|
@@ -224,8 +223,6 @@ export class DialogLayoutOptionsCommand extends ShowDialogCommandBase {
|
|
224
223
|
changed = true;
|
225
224
|
}
|
226
225
|
history.endTransaction();
|
227
|
-
if (topInfo)
|
228
|
-
this.selection.scrollManager.setScroll(new ScrollState().byScrollInfo.setPageInfo(topInfo));
|
229
226
|
return changed;
|
230
227
|
}
|
231
228
|
getDialogName() {
|
@@ -13,6 +13,8 @@ export declare class PrintDocumentOnClient extends CommandBase<SimpleCommandStat
|
|
13
13
|
executeCore(_state: SimpleCommandState, options: CommandSimpleOptions<PrintMode | PrintingSettings | undefined>): boolean;
|
14
14
|
private printCore;
|
15
15
|
private generatePrintDocument;
|
16
|
+
private getGoogleFonts;
|
17
|
+
private createGoogleFontStyleLink;
|
16
18
|
private generatePrintContent;
|
17
19
|
private createZIndexStyles;
|
18
20
|
}
|
@@ -80,8 +80,18 @@ export class PrintDocumentOnClient extends CommandBase {
|
|
80
80
|
return true;
|
81
81
|
}
|
82
82
|
printCore(htmlPrinting, printWindow, closePrintDialogWithHtmlPreview, needSwitchViewType, needToggleHiddenSymbols) {
|
83
|
-
if (htmlPrinting)
|
84
|
-
this.generatePrintDocument(printWindow
|
83
|
+
if (htmlPrinting) {
|
84
|
+
this.generatePrintDocument(printWindow.document);
|
85
|
+
printWindow.focus();
|
86
|
+
const interval = setInterval(() => {
|
87
|
+
if (printWindow.document.readyState == 'complete') {
|
88
|
+
printWindow.print();
|
89
|
+
if (closePrintDialogWithHtmlPreview && !Browser.AndroidMobilePlatform)
|
90
|
+
printWindow.close();
|
91
|
+
clearInterval(interval);
|
92
|
+
}
|
93
|
+
}, 100);
|
94
|
+
}
|
85
95
|
else {
|
86
96
|
pdfExport(this.control, (blob, _stream) => {
|
87
97
|
if (window.navigator.msSaveOrOpenBlob && !Browser.Edge)
|
@@ -96,12 +106,27 @@ export class PrintDocumentOnClient extends CommandBase {
|
|
96
106
|
this.control.commandManager.getCommand(RichEditClientCommand.ToggleShowWhitespace).execute(this.control.commandManager.isPublicApiCall);
|
97
107
|
this.control.commandManager.isPrintingProcessing = false;
|
98
108
|
}
|
99
|
-
generatePrintDocument(
|
109
|
+
generatePrintDocument(document) {
|
100
110
|
const height = this.control.layout.pages[0].height;
|
101
111
|
const width = this.control.layout.pages[0].width;
|
102
|
-
let
|
103
|
-
|
112
|
+
let fontLink = "";
|
113
|
+
let divsToLoadFonts = "";
|
114
|
+
const googleFonts = this.getGoogleFonts();
|
115
|
+
if (googleFonts.length > 0) {
|
116
|
+
fontLink = this.createGoogleFontStyleLink(googleFonts);
|
117
|
+
divsToLoadFonts = googleFonts.reduce((prev, curr) => {
|
118
|
+
const fontStyles = [`font-family:${curr}`, 'font-weight:bold', 'font-style:italic'];
|
119
|
+
const result = [];
|
120
|
+
for (let i = 1; i <= fontStyles.length; i++)
|
121
|
+
result.push(`<div style="font-size:1pt;position:absolute;top:-1000px;${fontStyles.slice(0, i).join(';')}">${curr}</div>`);
|
122
|
+
return prev ? [prev, ...result].join('\n') : result.join('\n');
|
123
|
+
}, null);
|
124
|
+
}
|
125
|
+
document.documentElement.innerHTML =
|
126
|
+
`<!DOCTYPE html>
|
127
|
+
<html moznomarginboxes mozdisallowselectionprint>
|
104
128
|
<head>
|
129
|
+
${fontLink}
|
105
130
|
<style ${this._nonce ? `nonce="${this._nonce}"` : ''}>
|
106
131
|
html, body {
|
107
132
|
margin: 0;
|
@@ -120,22 +145,25 @@ export class PrintDocumentOnClient extends CommandBase {
|
|
120
145
|
</style>
|
121
146
|
</head>
|
122
147
|
<body>
|
148
|
+
${divsToLoadFonts}
|
123
149
|
</body>
|
124
|
-
|
125
|
-
printWindow.document.write(printWindowContent);
|
126
|
-
printWindow.document.close();
|
150
|
+
</html>`;
|
127
151
|
this.generatePrintContent().forEach((child) => {
|
128
|
-
|
152
|
+
document.body.appendChild(child);
|
129
153
|
});
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
154
|
+
}
|
155
|
+
getGoogleFonts() {
|
156
|
+
return this.control.modelManager.richOptions.fonts.fonts.reduce((res, f) => {
|
157
|
+
if (f.useGoogleFonts)
|
158
|
+
res.push(f.fontFamily);
|
159
|
+
return res;
|
160
|
+
}, []);
|
161
|
+
}
|
162
|
+
createGoogleFontStyleLink(fontFamilies) {
|
163
|
+
const url = new URL('https://fonts.googleapis.com/css');
|
164
|
+
url.searchParams.append('family', fontFamilies.join('|'));
|
165
|
+
url.searchParams.append('display', 'auto');
|
166
|
+
return `<link href="${url.toString()}" rel="stylesheet" />`;
|
139
167
|
}
|
140
168
|
generatePrintContent() {
|
141
169
|
const layout = this.control.layout;
|