@univerjs/docs-ui 0.25.0 → 1.0.0-alpha.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/cjs/facade.js +23 -183
- package/lib/cjs/index.js +7475 -5364
- package/lib/cjs/locale/ar-SA.js +35 -1
- package/lib/cjs/locale/ca-ES.js +35 -1
- package/lib/cjs/locale/de-DE.js +35 -1
- package/lib/cjs/locale/en-US.js +35 -1
- package/lib/cjs/locale/es-ES.js +35 -1
- package/lib/cjs/locale/fa-IR.js +35 -1
- package/lib/cjs/locale/fr-FR.js +35 -1
- package/lib/cjs/locale/id-ID.js +35 -1
- package/lib/cjs/locale/it-IT.js +35 -1
- package/lib/cjs/locale/ja-JP.js +35 -1
- package/lib/cjs/locale/ko-KR.js +35 -1
- package/lib/cjs/locale/pl-PL.js +35 -1
- package/lib/cjs/locale/pt-BR.js +35 -1
- package/lib/cjs/locale/ru-RU.js +35 -1
- package/lib/cjs/locale/sk-SK.js +35 -1
- package/lib/cjs/locale/vi-VN.js +35 -1
- package/lib/cjs/locale/zh-CN.js +35 -1
- package/lib/cjs/locale/zh-HK.js +35 -1
- package/lib/cjs/locale/zh-TW.js +35 -1
- package/lib/es/facade.js +25 -178
- package/lib/es/index.js +7934 -5853
- package/lib/es/locale/ar-SA.js +35 -1
- package/lib/es/locale/ca-ES.js +35 -1
- package/lib/es/locale/de-DE.js +35 -1
- package/lib/es/locale/en-US.js +35 -1
- package/lib/es/locale/es-ES.js +35 -1
- package/lib/es/locale/fa-IR.js +35 -1
- package/lib/es/locale/fr-FR.js +35 -1
- package/lib/es/locale/id-ID.js +35 -1
- package/lib/es/locale/it-IT.js +35 -1
- package/lib/es/locale/ja-JP.js +35 -1
- package/lib/es/locale/ko-KR.js +35 -1
- package/lib/es/locale/pl-PL.js +35 -1
- package/lib/es/locale/pt-BR.js +35 -1
- package/lib/es/locale/ru-RU.js +35 -1
- package/lib/es/locale/sk-SK.js +35 -1
- package/lib/es/locale/vi-VN.js +35 -1
- package/lib/es/locale/zh-CN.js +35 -1
- package/lib/es/locale/zh-HK.js +35 -1
- package/lib/es/locale/zh-TW.js +35 -1
- package/lib/facade.js +25 -178
- package/lib/index.css +25 -35
- package/lib/index.js +7934 -5853
- package/lib/locale/ar-SA.js +35 -1
- package/lib/locale/ca-ES.js +35 -1
- package/lib/locale/de-DE.js +35 -1
- package/lib/locale/en-US.js +35 -1
- package/lib/locale/es-ES.js +35 -1
- package/lib/locale/fa-IR.js +35 -1
- package/lib/locale/fr-FR.js +35 -1
- package/lib/locale/id-ID.js +35 -1
- package/lib/locale/it-IT.js +35 -1
- package/lib/locale/ja-JP.js +35 -1
- package/lib/locale/ko-KR.js +35 -1
- package/lib/locale/pl-PL.js +35 -1
- package/lib/locale/pt-BR.js +35 -1
- package/lib/locale/ru-RU.js +35 -1
- package/lib/locale/sk-SK.js +35 -1
- package/lib/locale/vi-VN.js +35 -1
- package/lib/locale/zh-CN.js +35 -1
- package/lib/locale/zh-HK.js +35 -1
- package/lib/locale/zh-TW.js +35 -1
- package/lib/types/commands/commands/doc-delete.command.d.ts +1 -1
- package/lib/types/commands/commands/inline-format.command.d.ts +3 -1
- package/lib/types/commands/commands/table/doc-table-create.command.d.ts +31 -1
- package/lib/types/commands/operations/doc-cursor.operation.d.ts +2 -0
- package/lib/types/commands/util.d.ts +1 -2
- package/lib/types/config/config.d.ts +15 -0
- package/lib/types/controllers/components.controller.d.ts +25 -0
- package/lib/types/controllers/doc-header-footer.controller.d.ts +1 -4
- package/lib/types/controllers/doc-move-cursor.controller.d.ts +9 -0
- package/lib/types/controllers/doc-paragraph-setting.controller.d.ts +2 -4
- package/lib/types/controllers/doc-table.controller.d.ts +1 -4
- package/lib/types/controllers/render-controllers/doc-paragraph-placeholder.render-controller.d.ts +51 -0
- package/lib/types/controllers/render-controllers/doc.render-controller.d.ts +5 -2
- package/lib/types/controllers/render-controllers/zoom.render-controller.d.ts +3 -1
- package/lib/types/controllers/{doc-ui.controller.d.ts → ui.controller.d.ts} +2 -4
- package/lib/types/facade/f-document.d.ts +11 -43
- package/lib/types/facade/index.d.ts +2 -3
- package/lib/types/index.d.ts +39 -26
- package/lib/types/locale/en-US.d.ts +34 -0
- package/lib/types/{views/side-menu/index.d.ts → locale/types.d.ts} +3 -1
- package/lib/types/menu/context-menu.d.ts +15 -14
- package/lib/types/menu/menu.d.ts +31 -29
- package/lib/types/menu/paragraph-menu.d.ts +68 -38
- package/lib/types/services/clipboard/html-to-udm/converter.d.ts +1 -0
- package/lib/types/services/doc-event-manager.service.d.ts +15 -0
- package/lib/types/services/doc-ime-state-change-interceptor.service.d.ts +23 -0
- package/lib/types/services/doc-page-layout.service.d.ts +3 -1
- package/lib/types/services/doc-paragraph-menu.service.d.ts +26 -2
- package/lib/types/services/doc-render-background.d.ts +29 -0
- package/lib/types/services/doc-view-scale.d.ts +54 -0
- package/lib/types/services/doc-zoom.d.ts +20 -0
- package/lib/types/services/docs-render.service.d.ts +5 -2
- package/lib/types/services/editor/editor-manager.service.d.ts +8 -1
- package/lib/types/services/index.d.ts +2 -0
- package/lib/types/services/selection/selection-utils.d.ts +0 -15
- package/lib/types/services/{doc-content-insert.service.d.ts → selection/word-boundary.d.ts} +4 -10
- package/lib/types/shortcuts/core-editing.shortcut.d.ts +1 -0
- package/lib/types/shortcuts/cursor.shortcut.d.ts +12 -0
- package/lib/types/shortcuts/heading.shortcut.d.ts +22 -0
- package/lib/types/{types/delete-direction.d.ts → views/DocSideMenu.d.ts} +1 -4
- package/lib/types/views/Icon.d.ts +49 -0
- package/lib/types/views/{page-settings/index.d.ts → PageSettings.d.ts} +1 -1
- package/lib/types/views/ParagraphMenu.d.ts +62 -0
- package/lib/types/views/{rich-text-editor/index.d.ts → RichTextEditor.d.ts} +3 -3
- package/lib/types/{components/side-menu/index.d.ts → views/SideMenu.d.ts} +4 -3
- package/lib/types/views/count-bar/CountBar.d.ts +1 -1
- package/lib/types/views/count-bar/ZoomSlider.d.ts +1 -1
- package/lib/types/views/doc-footer/DocFooter.d.ts +1 -1
- package/lib/types/views/float-toolbar/FloatToolbar.d.ts +25 -0
- package/lib/types/{components → views}/float-toolbar/FloatToolbar.stories.d.ts +1 -1
- package/lib/types/views/header-footer/panel/DocHeaderFooterOptions.d.ts +1 -1
- package/lib/types/views/header-footer/panel/DocHeaderFooterPanel.d.ts +1 -1
- package/lib/types/{components → views}/list-type-picker/Picker.d.ts +3 -3
- package/lib/types/{components/float-toolbar/FloatToolbar.d.ts → views/paragraph-menu/component-keys.d.ts} +2 -5
- package/lib/types/views/paragraph-menu/theme-color.d.ts +17 -0
- package/lib/types/views/paragraph-setting/Setting.d.ts +1 -1
- package/lib/types/views/paragraph-setting/index.d.ts +1 -1
- package/lib/types/views/paragraph-setting/line-spacing.d.ts +51 -0
- package/lib/types/views/rich-text-editor/hooks/editor-undo-redo-keyboard.d.ts +32 -0
- package/lib/types/views/rich-text-editor/hooks/index.d.ts +1 -0
- package/lib/types/views/rich-text-editor/hooks/use-editor-click-outside.d.ts +2 -1
- package/lib/types/{components → views}/side-menu/SideMenu.stories.d.ts +5 -5
- package/lib/types/views/table/create/TableCreate.d.ts +1 -1
- package/lib/umd/facade.js +1 -5
- package/lib/umd/index.js +11 -26
- package/lib/umd/locale/ar-SA.js +1 -1
- package/lib/umd/locale/ca-ES.js +1 -1
- package/lib/umd/locale/de-DE.js +1 -1
- package/lib/umd/locale/en-US.js +1 -1
- package/lib/umd/locale/es-ES.js +1 -1
- package/lib/umd/locale/fa-IR.js +1 -1
- package/lib/umd/locale/fr-FR.js +1 -1
- package/lib/umd/locale/id-ID.js +1 -1
- package/lib/umd/locale/it-IT.js +1 -1
- package/lib/umd/locale/ja-JP.js +1 -1
- package/lib/umd/locale/ko-KR.js +1 -1
- package/lib/umd/locale/pl-PL.js +1 -1
- package/lib/umd/locale/pt-BR.js +1 -1
- package/lib/umd/locale/ru-RU.js +1 -1
- package/lib/umd/locale/sk-SK.js +1 -1
- package/lib/umd/locale/vi-VN.js +1 -1
- package/lib/umd/locale/zh-CN.js +1 -1
- package/lib/umd/locale/zh-HK.js +1 -1
- package/lib/umd/locale/zh-TW.js +1 -1
- package/package.json +12 -12
- package/lib/types/commands/commands/core-editing.command.d.ts +0 -58
- package/lib/types/components/paragraph-menu/index.d.ts +0 -41
- package/lib/types/facade/f-univer.d.ts +0 -52
- package/lib/types/services/doc-state-change-manager.service.d.ts +0 -50
- /package/lib/types/{components → views}/const.d.ts +0 -0
- /package/lib/types/{components → views}/editor/utils.d.ts +0 -0
- /package/lib/types/{components → views}/list-type-picker/index.d.ts +0 -0
package/lib/cjs/facade.js
CHANGED
|
@@ -1,166 +1,38 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
1
|
let _univerjs_core = require("@univerjs/core");
|
|
3
|
-
let _univerjs_core_facade = require("@univerjs/core/facade");
|
|
4
2
|
let _univerjs_docs_ui = require("@univerjs/docs-ui");
|
|
3
|
+
let _univerjs_docs_facade = require("@univerjs/docs/facade");
|
|
5
4
|
let _univerjs_engine_render = require("@univerjs/engine-render");
|
|
6
5
|
|
|
7
|
-
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
|
|
8
|
-
function _typeof(o) {
|
|
9
|
-
"@babel/helpers - typeof";
|
|
10
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
11
|
-
return typeof o;
|
|
12
|
-
} : function(o) {
|
|
13
|
-
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
14
|
-
}, _typeof(o);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
|
|
19
|
-
function toPrimitive(t, r) {
|
|
20
|
-
if ("object" != _typeof(t) || !t) return t;
|
|
21
|
-
var e = t[Symbol.toPrimitive];
|
|
22
|
-
if (void 0 !== e) {
|
|
23
|
-
var i = e.call(t, r || "default");
|
|
24
|
-
if ("object" != _typeof(i)) return i;
|
|
25
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
26
|
-
}
|
|
27
|
-
return ("string" === r ? String : Number)(t);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
|
|
32
|
-
function toPropertyKey(t) {
|
|
33
|
-
var i = toPrimitive(t, "string");
|
|
34
|
-
return "symbol" == _typeof(i) ? i : i + "";
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
//#endregion
|
|
38
|
-
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
|
|
39
|
-
function _defineProperty(e, r, t) {
|
|
40
|
-
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
41
|
-
value: t,
|
|
42
|
-
enumerable: !0,
|
|
43
|
-
configurable: !0,
|
|
44
|
-
writable: !0
|
|
45
|
-
}) : e[r] = t, e;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
//#endregion
|
|
49
|
-
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
|
|
50
|
-
function __decorateParam(paramIndex, decorator) {
|
|
51
|
-
return function(target, key) {
|
|
52
|
-
decorator(target, key, paramIndex);
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
//#endregion
|
|
57
|
-
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
|
|
58
|
-
function __decorate(decorators, target, key, desc) {
|
|
59
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
60
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
61
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
62
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
//#endregion
|
|
66
6
|
//#region src/facade/f-document.ts
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
getSnapshot() {
|
|
85
|
-
const resources = this._resourceManagerService.getResourcesByType(this.id, _univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
86
|
-
const snapshot = this._documentDataModel.getSnapshot();
|
|
87
|
-
snapshot.resources = resources;
|
|
88
|
-
return snapshot;
|
|
89
|
-
}
|
|
90
|
-
undo() {
|
|
91
|
-
this._univerInstanceService.focusUnit(this.id);
|
|
92
|
-
return this._commandService.executeCommand(_univerjs_core.UndoCommand.id);
|
|
93
|
-
}
|
|
94
|
-
redo() {
|
|
95
|
-
this._univerInstanceService.focusUnit(this.id);
|
|
96
|
-
return this._commandService.executeCommand(_univerjs_core.RedoCommand.id);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Adds the specified text to the end of this text region.
|
|
100
|
-
* @param text - The text to be added to the end of this text region.
|
|
101
|
-
*/
|
|
102
|
-
appendText(text) {
|
|
103
|
-
const { body } = this.getSnapshot();
|
|
104
|
-
if (!body) throw new Error("The document body is empty");
|
|
105
|
-
const lastPosition = body.dataStream.length - 2;
|
|
106
|
-
return this.insertText(text, {
|
|
107
|
-
startOffset: lastPosition,
|
|
108
|
-
endOffset: lastPosition,
|
|
109
|
-
segmentId: ""
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Inserts text at the provided document range. Defaults to appending before the final section break.
|
|
114
|
-
* @param text - The text to insert.
|
|
115
|
-
* @param options - Optional target range, segment id, and cursor offset.
|
|
116
|
-
*/
|
|
117
|
-
insertText(text, options = {}) {
|
|
118
|
-
var _options$startOffset, _options$endOffset, _options$segmentId;
|
|
119
|
-
const unitId = this.id;
|
|
120
|
-
const { body } = this.getSnapshot();
|
|
121
|
-
if (!body) throw new Error("The document body is empty");
|
|
122
|
-
const startOffset = (_options$startOffset = options.startOffset) !== null && _options$startOffset !== void 0 ? _options$startOffset : Math.max(0, body.dataStream.length - 2);
|
|
123
|
-
const endOffset = (_options$endOffset = options.endOffset) !== null && _options$endOffset !== void 0 ? _options$endOffset : startOffset;
|
|
124
|
-
const segmentId = (_options$segmentId = options.segmentId) !== null && _options$segmentId !== void 0 ? _options$segmentId : "";
|
|
125
|
-
const activeRange = {
|
|
126
|
-
startOffset,
|
|
127
|
-
endOffset,
|
|
128
|
-
collapsed: startOffset === endOffset,
|
|
129
|
-
segmentId
|
|
130
|
-
};
|
|
131
|
-
return this._commandService.executeCommand(_univerjs_docs_ui.InsertCommand.id, {
|
|
132
|
-
unitId,
|
|
133
|
-
body: { dataStream: text },
|
|
134
|
-
range: activeRange,
|
|
135
|
-
segmentId,
|
|
136
|
-
...options.cursorOffset == null ? {} : { cursorOffset: options.cursorOffset }
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Inserts one or more plain-text paragraphs at the provided document range.
|
|
141
|
-
* @param text - Paragraph text. Newlines are normalized to document paragraph separators.
|
|
142
|
-
* @param options - Optional target range, segment id, and cursor offset.
|
|
143
|
-
*/
|
|
144
|
-
insertParagraph(text = "", options = {}) {
|
|
145
|
-
var _options$cursorOffset;
|
|
146
|
-
const dataStream = `${text.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n").join("\r\n")}\r\n`;
|
|
147
|
-
return this.insertText(dataStream, {
|
|
148
|
-
...options,
|
|
149
|
-
cursorOffset: (_options$cursorOffset = options.cursorOffset) !== null && _options$cursorOffset !== void 0 ? _options$cursorOffset : dataStream.length
|
|
150
|
-
});
|
|
151
|
-
}
|
|
7
|
+
/**
|
|
8
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
var FDocumentUIMixin = class extends _univerjs_docs_facade.FDocument {
|
|
152
23
|
/**
|
|
153
24
|
* Sets the selection to a specified text range in the document.
|
|
154
25
|
* @param startOffset - The starting offset of the selection in the document.
|
|
155
26
|
* @param endOffset - The ending offset of the selection in the document.
|
|
156
27
|
* @example
|
|
157
28
|
* ```typescript
|
|
158
|
-
*
|
|
29
|
+
* const fDocument = univerAPI.getActiveDocument();
|
|
30
|
+
* fDocument.setSelection(10, 20);
|
|
159
31
|
* ```
|
|
160
32
|
*/
|
|
161
33
|
setSelection(startOffset, endOffset) {
|
|
162
|
-
var
|
|
163
|
-
const docSelectionRenderService = (
|
|
34
|
+
var _renderManagerService;
|
|
35
|
+
const docSelectionRenderService = (_renderManagerService = this._injector.get(_univerjs_engine_render.IRenderManagerService).getRenderUnitById(this.getId())) === null || _renderManagerService === void 0 ? void 0 : _renderManagerService.with(_univerjs_docs_ui.DocSelectionRenderService);
|
|
164
36
|
docSelectionRenderService === null || docSelectionRenderService === void 0 || docSelectionRenderService.removeAllRanges();
|
|
165
37
|
docSelectionRenderService === null || docSelectionRenderService === void 0 || docSelectionRenderService.addDocRanges([{
|
|
166
38
|
startOffset,
|
|
@@ -169,38 +41,6 @@ let FDocument = class FDocument {
|
|
|
169
41
|
}], true);
|
|
170
42
|
}
|
|
171
43
|
};
|
|
172
|
-
FDocument
|
|
173
|
-
__decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_core.Injector)),
|
|
174
|
-
__decorateParam(2, _univerjs_core.IUniverInstanceService),
|
|
175
|
-
__decorateParam(3, _univerjs_core.ICommandService),
|
|
176
|
-
__decorateParam(4, _univerjs_core.IResourceManagerService),
|
|
177
|
-
__decorateParam(5, _univerjs_engine_render.IRenderManagerService)
|
|
178
|
-
], FDocument);
|
|
179
|
-
|
|
180
|
-
//#endregion
|
|
181
|
-
//#region src/facade/f-univer.ts
|
|
182
|
-
var FUniverDocsUIMixin = class extends _univerjs_core_facade.FUniver {
|
|
183
|
-
createUniverDoc(data) {
|
|
184
|
-
const document = this._univerInstanceService.createUnit(_univerjs_core.UniverInstanceType.UNIVER_DOC, data);
|
|
185
|
-
return this._injector.createInstance(FDocument, document);
|
|
186
|
-
}
|
|
187
|
-
getActiveDocument() {
|
|
188
|
-
const document = this._univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_DOC);
|
|
189
|
-
if (!document) return null;
|
|
190
|
-
return this._injector.createInstance(FDocument, document);
|
|
191
|
-
}
|
|
192
|
-
getUniverDoc(id) {
|
|
193
|
-
const document = this._univerInstanceService.getUniverDocInstance(id);
|
|
194
|
-
if (!document) return null;
|
|
195
|
-
return this._injector.createInstance(FDocument, document);
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
_univerjs_core_facade.FUniver.extend(FUniverDocsUIMixin);
|
|
44
|
+
_univerjs_docs_facade.FDocument.extend(FDocumentUIMixin);
|
|
199
45
|
|
|
200
|
-
//#endregion
|
|
201
|
-
Object.defineProperty(exports, 'FDocument', {
|
|
202
|
-
enumerable: true,
|
|
203
|
-
get: function () {
|
|
204
|
-
return FDocument;
|
|
205
|
-
}
|
|
206
|
-
});
|
|
46
|
+
//#endregion
|