@worktile/theia 2.2.7 → 2.3.0-next.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/bundles/worktile-theia.umd.js +852 -249
- package/bundles/worktile-theia.umd.js.map +1 -1
- package/components/toolbar/toolbar.component.d.ts +3 -2
- package/components/toolbar-item/toolbar-item.component.d.ts +3 -4
- package/constants/default.d.ts +3 -0
- package/constants/node-types.d.ts +4 -0
- package/custom-types.d.ts +3 -1
- package/editor.component.d.ts +3 -1
- package/editor.module.d.ts +26 -24
- package/esm2015/components/toolbar/toolbar.component.js +6 -4
- package/esm2015/components/toolbar-item/toolbar-item.component.js +4 -4
- package/esm2015/constants/auto-format-rules.js +26 -7
- package/esm2015/constants/default.js +2 -1
- package/esm2015/constants/node-types.js +6 -1
- package/esm2015/custom-types.js +1 -1
- package/esm2015/editor.component.js +12 -6
- package/esm2015/editor.module.js +6 -3
- package/esm2015/interfaces/editor.js +1 -1
- package/esm2015/interfaces/image.js +1 -1
- package/esm2015/interfaces/valid-children-types.js +2 -1
- package/esm2015/plugins/align/align.editor.js +10 -2
- package/esm2015/plugins/align/options.js +3 -2
- package/esm2015/plugins/common/auto-insert-data..js +2 -18
- package/esm2015/plugins/dnd/component/dnd.component.js +260 -0
- package/esm2015/plugins/dnd/utils/get-current-target.js +19 -0
- package/esm2015/plugins/dnd/utils/get-hover-direction.js +13 -0
- package/esm2015/plugins/dnd/utils/is-valid-drag.js +38 -0
- package/esm2015/plugins/dnd/utils/move-drag-node.js +30 -0
- package/esm2015/plugins/dnd/utils/remove-drop-thumb-line.js +10 -0
- package/esm2015/plugins/image/image.component.js +167 -14
- package/esm2015/plugins/image/image.editor.js +4 -1
- package/esm2015/plugins/indent/on-keydown-indent.js +2 -3
- package/esm2015/plugins/list/list.editor.js +2 -2
- package/esm2015/plugins/quick-insert/components/quick-insert.component.js +13 -2
- package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +1 -1
- package/esm2015/services/context.service.js +5 -1
- package/esm2015/utils/dom.js +39 -1
- package/esm2015/utils/is-clean-empty-paragraph.js +4 -4
- package/esm2015/utils/merge-element-options.js +20 -0
- package/fesm2015/worktile-theia.js +786 -201
- package/fesm2015/worktile-theia.js.map +1 -1
- package/interfaces/editor.d.ts +9 -1
- package/interfaces/image.d.ts +7 -1
- package/interfaces/valid-children-types.d.ts +1 -0
- package/package.json +1 -1
- package/plugins/align/align.editor.d.ts +1 -0
- package/plugins/dnd/component/dnd.component.d.ts +42 -0
- package/plugins/dnd/component/dnd.component.scss +61 -0
- package/plugins/dnd/utils/get-current-target.d.ts +2 -0
- package/plugins/dnd/utils/get-hover-direction.d.ts +3 -0
- package/plugins/dnd/utils/is-valid-drag.d.ts +3 -0
- package/plugins/dnd/utils/move-drag-node.d.ts +2 -0
- package/plugins/dnd/utils/remove-drop-thumb-line.d.ts +2 -0
- package/plugins/image/image.component.d.ts +27 -3
- package/plugins/image/image.component.scss +9 -2
- package/plugins/image/image.editor.d.ts +6 -1
- package/plugins/quick-insert/components/quick-insert.component.d.ts +1 -0
- package/plugins/table/components/table.component.scss +1 -0
- package/services/context.service.d.ts +1 -0
- package/styles/editor.scss +4 -0
- package/styles/index.scss +1 -0
- package/styles/typo.scss +44 -0
- package/utils/dom.d.ts +5 -1
- package/utils/merge-element-options.d.ts +2 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Component, ChangeDetectionStrategy, HostBinding, Input, HostListener, ViewContainerRef, ChangeDetectorRef, Injectable, Inject, ViewChild, Directive, ElementRef, TemplateRef,
|
|
3
|
-
import * as
|
|
2
|
+
import { InjectionToken, Component, ChangeDetectionStrategy, HostBinding, Input, HostListener, ViewContainerRef, ChangeDetectorRef, Injectable, Inject, ViewChild, Directive, ElementRef, TemplateRef, EventEmitter, Output, Pipe, forwardRef, NgModule } from '@angular/core';
|
|
3
|
+
import * as i10 from '@angular/common';
|
|
4
4
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
5
|
-
import * as i4$
|
|
5
|
+
import * as i4$1 from '@angular/forms';
|
|
6
6
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i1 from 'slate-angular';
|
|
8
8
|
import { BaseTextComponent, BaseElementComponent, AngularEditor, NODE_TO_PARENT, NODE_TO_INDEX, IS_SAFARI, hotkeys, getPlainText as getPlainText$1, hasBlockCard, isCardLeft, FAKE_RIGHT_BLOCK_CARD_OFFSET, ELEMENT_TO_COMPONENT, EDITOR_TO_ELEMENT, isComponentType, withAngular, SlateModule } from 'slate-angular';
|
|
@@ -22,18 +22,18 @@ import * as i1$1 from 'ngx-tethys/alert';
|
|
|
22
22
|
import { ThyAlertModule } from 'ngx-tethys/alert';
|
|
23
23
|
import { map, takeUntil, take, delay, startWith, distinctUntilChanged, skip, share, filter, throttleTime, mapTo, debounceTime, pairwise } from 'rxjs/operators';
|
|
24
24
|
import { ThyUploadStatus } from 'ngx-tethys/uploader';
|
|
25
|
-
import * as i1$2 from '@angular/platform-browser';
|
|
26
25
|
import { fromEvent, timer, Subject, combineLatest, Observable, BehaviorSubject, merge, ReplaySubject } from 'rxjs';
|
|
27
|
-
import * as
|
|
26
|
+
import * as i1$2 from '@angular/platform-browser';
|
|
27
|
+
import * as i6 from 'ngx-tethys/progress';
|
|
28
28
|
import { ThyProgressModule } from 'ngx-tethys/progress';
|
|
29
|
-
import * as i4
|
|
29
|
+
import * as i4 from 'ngx-tethys/icon';
|
|
30
30
|
import { ThyIconModule } from 'ngx-tethys/icon';
|
|
31
|
-
import * as i5 from 'ngx-tethys/input';
|
|
32
|
-
import { ThyInputModule } from 'ngx-tethys/input';
|
|
33
31
|
import * as i3 from 'ngx-tethys/nav';
|
|
34
32
|
import { ThyNavModule } from 'ngx-tethys/nav';
|
|
35
|
-
import * as i5
|
|
33
|
+
import * as i5 from 'ngx-tethys/tooltip';
|
|
36
34
|
import { ThyTooltipModule } from 'ngx-tethys/tooltip';
|
|
35
|
+
import * as i5$1 from 'ngx-tethys/input';
|
|
36
|
+
import { ThyInputModule } from 'ngx-tethys/input';
|
|
37
37
|
import * as i8 from 'ng-codemirror';
|
|
38
38
|
import { CodeMirrorComponent, CodemirrorModule } from 'ng-codemirror';
|
|
39
39
|
import * as i1$4 from 'ngx-tethys/notify';
|
|
@@ -69,6 +69,7 @@ const CLIPBOARD_FORMAT_KEY = 'x-theia-fragment';
|
|
|
69
69
|
const DEFAULT_SCROLL_CONTAINER = '.the-editable-container';
|
|
70
70
|
const ELEMENT_UNIQUE_ID = 'key';
|
|
71
71
|
const ZERO_WIDTH_CHAR = '\u200B';
|
|
72
|
+
const DROP_THUMB_LINE = 'drop-thumb-line';
|
|
72
73
|
var TheMode;
|
|
73
74
|
(function (TheMode) {
|
|
74
75
|
TheMode["fullMode"] = "full";
|
|
@@ -114,6 +115,11 @@ var VerticalAlignment;
|
|
|
114
115
|
VerticalAlignment["middle"] = "middle";
|
|
115
116
|
VerticalAlignment["bottom"] = "bottom";
|
|
116
117
|
})(VerticalAlignment || (VerticalAlignment = {}));
|
|
118
|
+
var LayoutTypes;
|
|
119
|
+
(function (LayoutTypes) {
|
|
120
|
+
LayoutTypes["wrapLeft"] = "wrap-left";
|
|
121
|
+
LayoutTypes["wrapRight"] = "wrap-right";
|
|
122
|
+
})(LayoutTypes || (LayoutTypes = {}));
|
|
117
123
|
var FontSizes;
|
|
118
124
|
(function (FontSizes) {
|
|
119
125
|
FontSizes["fontSize12"] = "12";
|
|
@@ -501,6 +507,7 @@ const DefaultElementOptions = [
|
|
|
501
507
|
},
|
|
502
508
|
{
|
|
503
509
|
type: ElementKinds.tableCell,
|
|
510
|
+
isSecondaryContainer: true,
|
|
504
511
|
inValidChildrenTypes: [ElementKinds.table, ElementKinds.tableCell]
|
|
505
512
|
}
|
|
506
513
|
];
|
|
@@ -1684,7 +1691,7 @@ const ListEditor = {
|
|
|
1684
1691
|
else if (Element$1.isElement(node) && node.type === ElementKinds.paragraph) {
|
|
1685
1692
|
let { textIndent } = node;
|
|
1686
1693
|
if (textIndent) {
|
|
1687
|
-
Transforms.setNodes(editor, { textIndent: undefined }, // remove
|
|
1694
|
+
Transforms.setNodes(editor, { textIndent: undefined, indent: undefined }, // remove indent
|
|
1688
1695
|
{ at: path });
|
|
1689
1696
|
}
|
|
1690
1697
|
}
|
|
@@ -1806,30 +1813,79 @@ const InlineCodeEditor = {
|
|
|
1806
1813
|
}
|
|
1807
1814
|
};
|
|
1808
1815
|
|
|
1816
|
+
const HeadingEditor = {
|
|
1817
|
+
setHeading(editor, heading) {
|
|
1818
|
+
Editor.withoutNormalizing(editor, () => {
|
|
1819
|
+
const types = [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.listItem];
|
|
1820
|
+
Transforms.unwrapNodes(editor, {
|
|
1821
|
+
at: editor.selection,
|
|
1822
|
+
match: n => Element$1.isElement(n) && types.includes(n.type),
|
|
1823
|
+
mode: 'all',
|
|
1824
|
+
split: true
|
|
1825
|
+
});
|
|
1826
|
+
Transforms.setNodes(editor, { type: heading });
|
|
1827
|
+
const entry = anchorBlockEntry(editor);
|
|
1828
|
+
const unMarks = {
|
|
1829
|
+
[MarkTypes.fontSize]: null
|
|
1830
|
+
};
|
|
1831
|
+
if (entry) {
|
|
1832
|
+
setMarks(editor, unMarks, entry[1]);
|
|
1833
|
+
return;
|
|
1834
|
+
}
|
|
1835
|
+
setMarks(editor, unMarks, editor.selection);
|
|
1836
|
+
});
|
|
1837
|
+
},
|
|
1838
|
+
isHeadingActive(editor, heading) {
|
|
1839
|
+
const [match] = Editor.nodes(editor, {
|
|
1840
|
+
match: n => Element$1.isElement(n) && n.type === heading,
|
|
1841
|
+
universal: true
|
|
1842
|
+
});
|
|
1843
|
+
return !!match;
|
|
1844
|
+
}
|
|
1845
|
+
};
|
|
1846
|
+
|
|
1809
1847
|
const autoFormatRules = [
|
|
1810
1848
|
{
|
|
1811
1849
|
type: ElementKinds.heading_1,
|
|
1812
|
-
markup: '#'
|
|
1850
|
+
markup: '#',
|
|
1851
|
+
format: (editor) => {
|
|
1852
|
+
HeadingEditor.setHeading(editor, ElementKinds.heading_1);
|
|
1853
|
+
}
|
|
1813
1854
|
},
|
|
1814
1855
|
{
|
|
1815
1856
|
type: ElementKinds.heading_2,
|
|
1816
|
-
markup: '##'
|
|
1857
|
+
markup: '##',
|
|
1858
|
+
format: (editor) => {
|
|
1859
|
+
HeadingEditor.setHeading(editor, ElementKinds.heading_2);
|
|
1860
|
+
}
|
|
1817
1861
|
},
|
|
1818
1862
|
{
|
|
1819
1863
|
type: ElementKinds.heading_3,
|
|
1820
|
-
markup: '###'
|
|
1864
|
+
markup: '###',
|
|
1865
|
+
format: (editor) => {
|
|
1866
|
+
HeadingEditor.setHeading(editor, ElementKinds.heading_3);
|
|
1867
|
+
}
|
|
1821
1868
|
},
|
|
1822
1869
|
{
|
|
1823
1870
|
type: ElementKinds.heading_4,
|
|
1824
|
-
markup: '####'
|
|
1871
|
+
markup: '####',
|
|
1872
|
+
format: (editor) => {
|
|
1873
|
+
HeadingEditor.setHeading(editor, ElementKinds.heading_4);
|
|
1874
|
+
}
|
|
1825
1875
|
},
|
|
1826
1876
|
{
|
|
1827
1877
|
type: ElementKinds.heading_5,
|
|
1828
|
-
markup: '#####'
|
|
1878
|
+
markup: '#####',
|
|
1879
|
+
format: (editor) => {
|
|
1880
|
+
HeadingEditor.setHeading(editor, ElementKinds.heading_5);
|
|
1881
|
+
}
|
|
1829
1882
|
},
|
|
1830
1883
|
{
|
|
1831
1884
|
type: ElementKinds.heading_6,
|
|
1832
|
-
markup: '######'
|
|
1885
|
+
markup: '######',
|
|
1886
|
+
format: (editor) => {
|
|
1887
|
+
HeadingEditor.setHeading(editor, ElementKinds.heading_6);
|
|
1888
|
+
}
|
|
1833
1889
|
},
|
|
1834
1890
|
{
|
|
1835
1891
|
type: ElementKinds.blockquote,
|
|
@@ -2080,7 +2136,7 @@ const isCleanEmptyParagraph = (editor) => {
|
|
|
2080
2136
|
const textIndent = 'textIndent';
|
|
2081
2137
|
const align = 'align';
|
|
2082
2138
|
const hasTextIndent = block[textIndent];
|
|
2083
|
-
const
|
|
2139
|
+
const alignValue = block[align];
|
|
2084
2140
|
const hasIndent = block[ElementKinds.indent];
|
|
2085
2141
|
if (Node.string(block) === '' &&
|
|
2086
2142
|
Element$1.isElement(block) &&
|
|
@@ -2090,7 +2146,7 @@ const isCleanEmptyParagraph = (editor) => {
|
|
|
2090
2146
|
!Editor.isVoid(editor, block) &&
|
|
2091
2147
|
!hasIndent &&
|
|
2092
2148
|
!hasTextIndent &&
|
|
2093
|
-
!
|
|
2149
|
+
(!alignValue || alignValue === Alignment.left)) {
|
|
2094
2150
|
return true;
|
|
2095
2151
|
}
|
|
2096
2152
|
return false;
|
|
@@ -2200,6 +2256,25 @@ const isMarkdownStynx = content => {
|
|
|
2200
2256
|
return regexps.some(regexp => regexp.test(content));
|
|
2201
2257
|
};
|
|
2202
2258
|
|
|
2259
|
+
const mergeElementOptions = (elementOptions) => {
|
|
2260
|
+
elementOptions = elementOptions.filter(item => item.inValidChildrenTypes.length > 0);
|
|
2261
|
+
const combinationData = [...DefaultElementOptions, ...elementOptions];
|
|
2262
|
+
const dataInfo = {};
|
|
2263
|
+
combinationData.forEach(item => {
|
|
2264
|
+
const { type, inValidChildrenTypes, isIndivisible, isSecondaryContainer } = item;
|
|
2265
|
+
if (!dataInfo[type]) {
|
|
2266
|
+
dataInfo[type] = {
|
|
2267
|
+
type,
|
|
2268
|
+
inValidChildrenTypes,
|
|
2269
|
+
isIndivisible,
|
|
2270
|
+
isSecondaryContainer
|
|
2271
|
+
};
|
|
2272
|
+
}
|
|
2273
|
+
dataInfo[type].inValidChildrenTypes = Array.from(new Set([...inValidChildrenTypes, ...dataInfo[type].inValidChildrenTypes]));
|
|
2274
|
+
});
|
|
2275
|
+
return dataInfo;
|
|
2276
|
+
};
|
|
2277
|
+
|
|
2203
2278
|
const withAutoInsertData = (validChildren) => (editor) => {
|
|
2204
2279
|
const { insertData } = editor;
|
|
2205
2280
|
let allElementOptions = DefaultElementOptions;
|
|
@@ -2265,23 +2340,6 @@ const withAutoInsertData = (validChildren) => (editor) => {
|
|
|
2265
2340
|
};
|
|
2266
2341
|
return editor;
|
|
2267
2342
|
};
|
|
2268
|
-
const mergeElementOptions = (elementOptions) => {
|
|
2269
|
-
elementOptions = elementOptions.filter(item => item.inValidChildrenTypes.length > 0);
|
|
2270
|
-
const combinationData = [...DefaultElementOptions, ...elementOptions];
|
|
2271
|
-
const dataInfo = {};
|
|
2272
|
-
combinationData.forEach(item => {
|
|
2273
|
-
const { type, inValidChildrenTypes, isIndivisible } = item;
|
|
2274
|
-
if (!dataInfo[type]) {
|
|
2275
|
-
dataInfo[type] = {
|
|
2276
|
-
type,
|
|
2277
|
-
inValidChildrenTypes,
|
|
2278
|
-
isIndivisible
|
|
2279
|
-
};
|
|
2280
|
-
}
|
|
2281
|
-
dataInfo[type].inValidChildrenTypes = Array.from(new Set([...inValidChildrenTypes, ...dataInfo[type].inValidChildrenTypes]));
|
|
2282
|
-
});
|
|
2283
|
-
return dataInfo;
|
|
2284
|
-
};
|
|
2285
2343
|
|
|
2286
2344
|
const withRemoveEmpty = (editor) => {
|
|
2287
2345
|
const { deleteBackward, deleteForward } = editor;
|
|
@@ -2396,6 +2454,10 @@ class TheContextService {
|
|
|
2396
2454
|
const editableElement = this.getEditableElement();
|
|
2397
2455
|
return editableElement === null || editableElement === void 0 ? void 0 : editableElement.firstElementChild;
|
|
2398
2456
|
}
|
|
2457
|
+
layoutDefaultWidth() {
|
|
2458
|
+
const firstElementChild = this.getFirstElementChild();
|
|
2459
|
+
return 0.48 * firstElementChild.clientWidth;
|
|
2460
|
+
}
|
|
2399
2461
|
setUploadFileList(file) {
|
|
2400
2462
|
this.fileList.push(file);
|
|
2401
2463
|
}
|
|
@@ -2409,17 +2471,157 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
2409
2471
|
type: Injectable
|
|
2410
2472
|
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
2411
2473
|
|
|
2474
|
+
const ImageEditor = {
|
|
2475
|
+
openUpload(editor) {
|
|
2476
|
+
const inputFile = document.createElement('input');
|
|
2477
|
+
inputFile.setAttribute('type', 'file');
|
|
2478
|
+
inputFile.setAttribute('accept', 'image/*');
|
|
2479
|
+
inputFile.onchange = (event) => {
|
|
2480
|
+
ImageEditor.insertImages(editor, event.target.files);
|
|
2481
|
+
};
|
|
2482
|
+
inputFile.click();
|
|
2483
|
+
},
|
|
2484
|
+
insertImages(editor, imageFiles) {
|
|
2485
|
+
const contextService = editor.injector.get(TheContextService);
|
|
2486
|
+
const imageNodes = [];
|
|
2487
|
+
const text = { text: '' };
|
|
2488
|
+
for (const image of imageFiles) {
|
|
2489
|
+
const verify = ImageEditor.verifyImage(editor, image);
|
|
2490
|
+
if (verify) {
|
|
2491
|
+
const url = URL.createObjectURL(image);
|
|
2492
|
+
contextService.setUploadFileList({
|
|
2493
|
+
url,
|
|
2494
|
+
file: image
|
|
2495
|
+
});
|
|
2496
|
+
imageNodes.push({ type: ElementKinds.image, url, children: [text] });
|
|
2497
|
+
}
|
|
2498
|
+
}
|
|
2499
|
+
if (imageNodes.length > 0) {
|
|
2500
|
+
const at = editor.selection;
|
|
2501
|
+
Transforms.insertNodes(editor, imageNodes, { at });
|
|
2502
|
+
if (isCollapsed(editor.selection) && isEmptyParagraph(editor)) {
|
|
2503
|
+
Transforms.removeNodes(editor, { at });
|
|
2504
|
+
Transforms.select(editor, at);
|
|
2505
|
+
}
|
|
2506
|
+
}
|
|
2507
|
+
},
|
|
2508
|
+
verifyImage(editor, image) {
|
|
2509
|
+
if (!PICTURE_ACCEPTED_UPLOAD_MIME.includes(image.type)) {
|
|
2510
|
+
editor.onError({
|
|
2511
|
+
code: ErrorCodes.IMAGE_ERR_MIME_FORMAT
|
|
2512
|
+
});
|
|
2513
|
+
return false;
|
|
2514
|
+
}
|
|
2515
|
+
if (image.size / 1000000 >= PICTURE_ACCEPTED_UPLOAD_SIZE) {
|
|
2516
|
+
editor.onError({
|
|
2517
|
+
code: ErrorCodes.IMAGE_ERR_SIZE_LIMIT
|
|
2518
|
+
});
|
|
2519
|
+
return false;
|
|
2520
|
+
}
|
|
2521
|
+
return true;
|
|
2522
|
+
},
|
|
2523
|
+
isImageActive(editor) {
|
|
2524
|
+
const [match] = Editor.nodes(editor, {
|
|
2525
|
+
match: n => Element$1.isElement(n) && n.type === ElementKinds.image,
|
|
2526
|
+
universal: true
|
|
2527
|
+
});
|
|
2528
|
+
return !!match;
|
|
2529
|
+
},
|
|
2530
|
+
setImageNode(editor, path, partial) {
|
|
2531
|
+
Transforms.setNodes(editor, partial, { at: path });
|
|
2532
|
+
}
|
|
2533
|
+
};
|
|
2534
|
+
|
|
2535
|
+
class NavSplitLineComponent {
|
|
2536
|
+
constructor() {
|
|
2537
|
+
this.mode = ToolbarItemMode.vertical;
|
|
2538
|
+
this.theNavSplitLine = true;
|
|
2539
|
+
}
|
|
2540
|
+
get horizontal() {
|
|
2541
|
+
return this.mode === ToolbarItemMode.horizontal;
|
|
2542
|
+
}
|
|
2543
|
+
get vertical() {
|
|
2544
|
+
return this.mode === ToolbarItemMode.vertical;
|
|
2545
|
+
}
|
|
2546
|
+
ngOnInit() { }
|
|
2547
|
+
}
|
|
2548
|
+
NavSplitLineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: NavSplitLineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2549
|
+
NavSplitLineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: NavSplitLineComponent, selector: "nav-split-line", inputs: { mode: "mode" }, host: { properties: { "class.the-nav-split-line": "this.theNavSplitLine", "class.horizontal": "this.horizontal", "class.vertical": "this.vertical" } }, ngImport: i0, template: '', isInline: true });
|
|
2550
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: NavSplitLineComponent, decorators: [{
|
|
2551
|
+
type: Component,
|
|
2552
|
+
args: [{
|
|
2553
|
+
selector: 'nav-split-line',
|
|
2554
|
+
template: ''
|
|
2555
|
+
}]
|
|
2556
|
+
}], ctorParameters: function () { return []; }, propDecorators: { mode: [{
|
|
2557
|
+
type: Input
|
|
2558
|
+
}], theNavSplitLine: [{
|
|
2559
|
+
type: HostBinding,
|
|
2560
|
+
args: ['class.the-nav-split-line']
|
|
2561
|
+
}], horizontal: [{
|
|
2562
|
+
type: HostBinding,
|
|
2563
|
+
args: ['class.horizontal']
|
|
2564
|
+
}], vertical: [{
|
|
2565
|
+
type: HostBinding,
|
|
2566
|
+
args: ['class.vertical']
|
|
2567
|
+
}] } });
|
|
2568
|
+
|
|
2412
2569
|
class TheImageComponent extends TheBaseElementComponent {
|
|
2413
|
-
constructor(elementRef, sanitizer, imageUploaderService, cdr, theContextService) {
|
|
2570
|
+
constructor(elementRef, sanitizer, imageUploaderService, cdr, theContextService, thyPopover, overlay, viewContainerRef) {
|
|
2414
2571
|
super(elementRef, cdr);
|
|
2415
2572
|
this.elementRef = elementRef;
|
|
2416
2573
|
this.sanitizer = sanitizer;
|
|
2417
2574
|
this.imageUploaderService = imageUploaderService;
|
|
2418
2575
|
this.cdr = cdr;
|
|
2419
2576
|
this.theContextService = theContextService;
|
|
2577
|
+
this.thyPopover = thyPopover;
|
|
2578
|
+
this.overlay = overlay;
|
|
2579
|
+
this.viewContainerRef = viewContainerRef;
|
|
2420
2580
|
this.imageEntry = {};
|
|
2421
2581
|
this.uploading = false;
|
|
2422
2582
|
this.percentage = 0;
|
|
2583
|
+
this.layoutDefaultWidth = 368;
|
|
2584
|
+
this.layoutOptions = [
|
|
2585
|
+
{
|
|
2586
|
+
key: Alignment.left,
|
|
2587
|
+
icon: 'image-left',
|
|
2588
|
+
name: '左对齐',
|
|
2589
|
+
handle: (e, key) => this.setImageNode(e, { align: key, layout: undefined })
|
|
2590
|
+
},
|
|
2591
|
+
{
|
|
2592
|
+
key: Alignment.center,
|
|
2593
|
+
icon: 'image-center',
|
|
2594
|
+
name: '居中',
|
|
2595
|
+
handle: (e, key) => this.setImageNode(e, { align: key, layout: undefined })
|
|
2596
|
+
},
|
|
2597
|
+
{
|
|
2598
|
+
key: Alignment.right,
|
|
2599
|
+
icon: 'image-right',
|
|
2600
|
+
name: '右对齐',
|
|
2601
|
+
handle: (e, key) => this.setImageNode(e, { align: key, layout: undefined })
|
|
2602
|
+
},
|
|
2603
|
+
{
|
|
2604
|
+
key: ToolbarActionTypes.split
|
|
2605
|
+
},
|
|
2606
|
+
{
|
|
2607
|
+
key: LayoutTypes.wrapLeft,
|
|
2608
|
+
icon: 'wrap-left',
|
|
2609
|
+
name: '隐藏左边',
|
|
2610
|
+
handle: (e, key) => this.setImageNode(e, { layout: key })
|
|
2611
|
+
},
|
|
2612
|
+
{
|
|
2613
|
+
key: LayoutTypes.wrapRight,
|
|
2614
|
+
icon: 'wrap-right',
|
|
2615
|
+
name: '隐藏右边',
|
|
2616
|
+
handle: (e, key) => this.setImageNode(e, { layout: key })
|
|
2617
|
+
},
|
|
2618
|
+
{
|
|
2619
|
+
key: 'remove',
|
|
2620
|
+
icon: 'trash',
|
|
2621
|
+
name: '删除',
|
|
2622
|
+
handle: (e) => this.onDelete(e)
|
|
2623
|
+
}
|
|
2624
|
+
];
|
|
2423
2625
|
this.dragable = false;
|
|
2424
2626
|
this.beforeContextChange = (value) => {
|
|
2425
2627
|
if (value.element !== this.element && value.element.thumbUrl) {
|
|
@@ -2429,19 +2631,37 @@ class TheImageComponent extends TheBaseElementComponent {
|
|
|
2429
2631
|
height: value.element.height,
|
|
2430
2632
|
thumbUrl: value.element.thumbUrl,
|
|
2431
2633
|
originUrl: value.element.originUrl,
|
|
2432
|
-
align: value.element.align || Alignment.left
|
|
2634
|
+
align: value.element.align || Alignment.left,
|
|
2635
|
+
layout: value.element.layout,
|
|
2636
|
+
reSized: value.element.reSized || false
|
|
2433
2637
|
};
|
|
2638
|
+
this.setBlockCardLayoutAttr();
|
|
2434
2639
|
}
|
|
2435
2640
|
};
|
|
2436
2641
|
}
|
|
2642
|
+
get isOpen() {
|
|
2643
|
+
return this.layoutToolbarRef && this.layoutToolbarRef.getOverlayRef() && this.layoutToolbarRef.getOverlayRef().hasAttached();
|
|
2644
|
+
}
|
|
2437
2645
|
ngOnInit() {
|
|
2438
2646
|
var _a;
|
|
2647
|
+
this.layoutDefaultWidth = this.theContextService.layoutDefaultWidth();
|
|
2439
2648
|
this.file = (_a = this.theContextService.fileList.find(item => item.url === this.element.url)) === null || _a === void 0 ? void 0 : _a.file;
|
|
2440
2649
|
if (this.file && this.file instanceof File) {
|
|
2441
2650
|
this.uploadImage(this.file);
|
|
2442
2651
|
}
|
|
2443
2652
|
super.ngOnInit();
|
|
2444
2653
|
}
|
|
2654
|
+
onContextChange() {
|
|
2655
|
+
super.onContextChange();
|
|
2656
|
+
if (this.initialized) {
|
|
2657
|
+
if (this.isShouldOpen()) {
|
|
2658
|
+
this.openLayoutToolbar();
|
|
2659
|
+
}
|
|
2660
|
+
if (this.isShouldClose()) {
|
|
2661
|
+
this.closeLayoutToolbar();
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2664
|
+
}
|
|
2445
2665
|
ngOnDestroy() {
|
|
2446
2666
|
this.uploadingSubscription.unsubscribe();
|
|
2447
2667
|
this.mouseUpSubscription.unsubscribe();
|
|
@@ -2510,18 +2730,20 @@ class TheImageComponent extends TheBaseElementComponent {
|
|
|
2510
2730
|
axis,
|
|
2511
2731
|
printerPositionX: event.pageX,
|
|
2512
2732
|
printerPositionY: event.pageY,
|
|
2513
|
-
internalWidth:
|
|
2514
|
-
internalHeight:
|
|
2733
|
+
internalWidth: imgElement.width || this.imageEntry.width,
|
|
2734
|
+
internalHeight: imgElement.height || this.imageEntry.height,
|
|
2515
2735
|
maxWidth: this.theContextService.getOptions().width
|
|
2516
2736
|
};
|
|
2517
2737
|
this.mouseMoveSubscription = this.theContextService.onMouseMove$.subscribe(e => this.mouseMoveHandle(e, options));
|
|
2518
2738
|
}
|
|
2519
2739
|
mouseMoveHandle(event, options) {
|
|
2740
|
+
var _a;
|
|
2520
2741
|
if (this.dragable) {
|
|
2521
2742
|
const { axis, printerPositionX, printerPositionY, internalWidth, internalHeight, maxWidth } = options;
|
|
2522
2743
|
const isReversal = axis.includes('-');
|
|
2523
2744
|
let offsetX = event.pageX - printerPositionX;
|
|
2524
2745
|
let offsetY = event.pageY - printerPositionY;
|
|
2746
|
+
let { width, height } = this.element;
|
|
2525
2747
|
if (isReversal) {
|
|
2526
2748
|
offsetX = -offsetX;
|
|
2527
2749
|
offsetY = -offsetY;
|
|
@@ -2529,11 +2751,15 @@ class TheImageComponent extends TheBaseElementComponent {
|
|
|
2529
2751
|
if (this.element.align === 'center') {
|
|
2530
2752
|
offsetX = offsetX * 2;
|
|
2531
2753
|
}
|
|
2532
|
-
let { width, height } = this.element;
|
|
2533
2754
|
if (axis.includes('x')) {
|
|
2534
2755
|
width = offsetX + internalWidth;
|
|
2535
2756
|
if (width >= maxWidth) {
|
|
2536
2757
|
width = maxWidth;
|
|
2758
|
+
// clear `layout` when the image is adjusted to the maximum value under rich media
|
|
2759
|
+
if ((_a = this.imageEntry) === null || _a === void 0 ? void 0 : _a.layout) {
|
|
2760
|
+
const path = findPath(this.editor, this.element);
|
|
2761
|
+
ImageEditor.setImageNode(this.editor, path, { layout: undefined });
|
|
2762
|
+
}
|
|
2537
2763
|
}
|
|
2538
2764
|
if (width <= 100) {
|
|
2539
2765
|
width = 100;
|
|
@@ -2556,6 +2782,9 @@ class TheImageComponent extends TheBaseElementComponent {
|
|
|
2556
2782
|
width = internalWidth / ratio;
|
|
2557
2783
|
}
|
|
2558
2784
|
}
|
|
2785
|
+
if (!this.imageEntry.reSized && this.imageEntry.width !== width) {
|
|
2786
|
+
this.imageEntry.reSized = true;
|
|
2787
|
+
}
|
|
2559
2788
|
this.imageContent.nativeElement.style.width = width + 'px';
|
|
2560
2789
|
this.imageContent.nativeElement.style.height = height + 'px';
|
|
2561
2790
|
this.imageEntry.width = width;
|
|
@@ -2578,9 +2807,79 @@ class TheImageComponent extends TheBaseElementComponent {
|
|
|
2578
2807
|
}
|
|
2579
2808
|
$event.stopPropagation();
|
|
2580
2809
|
}
|
|
2810
|
+
isShouldOpen() {
|
|
2811
|
+
return !(this === null || this === void 0 ? void 0 : this.readonly) && (this === null || this === void 0 ? void 0 : this.isCollapsed) && !this.uploading && !this.isOpen;
|
|
2812
|
+
}
|
|
2813
|
+
isShouldClose() {
|
|
2814
|
+
return this.isOpen && ((this === null || this === void 0 ? void 0 : this.readonly) || !(this === null || this === void 0 ? void 0 : this.isCollapsed) || this.uploading);
|
|
2815
|
+
}
|
|
2816
|
+
openLayoutToolbar() {
|
|
2817
|
+
var _a;
|
|
2818
|
+
this.layoutToolbarRef = this.thyPopover.open(this.layoutToolbar, {
|
|
2819
|
+
origin: this.imageContent,
|
|
2820
|
+
panelClass: ['the-image-toolbar'],
|
|
2821
|
+
placement: 'bottom',
|
|
2822
|
+
insideClosable: false,
|
|
2823
|
+
backdropClosable: true,
|
|
2824
|
+
hasBackdrop: false,
|
|
2825
|
+
offset: 60,
|
|
2826
|
+
viewContainerRef: this.viewContainerRef,
|
|
2827
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition()
|
|
2828
|
+
});
|
|
2829
|
+
(_a = this.layoutToolbarRef) === null || _a === void 0 ? void 0 : _a.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
|
|
2830
|
+
}
|
|
2831
|
+
closeLayoutToolbar() {
|
|
2832
|
+
var _a;
|
|
2833
|
+
(_a = this.layoutToolbarRef) === null || _a === void 0 ? void 0 : _a.close();
|
|
2834
|
+
}
|
|
2835
|
+
layoutActive(key) {
|
|
2836
|
+
const { layout, align } = this.imageEntry;
|
|
2837
|
+
return key && ((key === align && !layout) || key === layout);
|
|
2838
|
+
}
|
|
2839
|
+
setImageNode(e, partial) {
|
|
2840
|
+
e.preventDefault();
|
|
2841
|
+
const path = findPath(this.editor, this.element);
|
|
2842
|
+
ImageEditor.setImageNode(this.editor, path, partial);
|
|
2843
|
+
}
|
|
2844
|
+
setBlockCardLayoutAttr() {
|
|
2845
|
+
Promise.resolve().then(() => {
|
|
2846
|
+
var _a;
|
|
2847
|
+
const currentElement = AngularEditor.toDOMNode(this.editor, this.element);
|
|
2848
|
+
const blockCard = currentElement.closest('.slate-block-card');
|
|
2849
|
+
const { layout } = this.element;
|
|
2850
|
+
if (blockCard && layout) {
|
|
2851
|
+
blockCard.setAttribute('layout', layout);
|
|
2852
|
+
}
|
|
2853
|
+
else if (blockCard && !layout) {
|
|
2854
|
+
blockCard.removeAttribute('layout');
|
|
2855
|
+
}
|
|
2856
|
+
(_a = this.layoutToolbarRef) === null || _a === void 0 ? void 0 : _a.getOverlayRef().updatePosition();
|
|
2857
|
+
});
|
|
2858
|
+
}
|
|
2859
|
+
onDelete(event) {
|
|
2860
|
+
event.preventDefault();
|
|
2861
|
+
deleteElement(this.editor, this.element);
|
|
2862
|
+
}
|
|
2863
|
+
createPositionStrategy() {
|
|
2864
|
+
const bottomPosition = {
|
|
2865
|
+
originX: 'center',
|
|
2866
|
+
originY: 'bottom',
|
|
2867
|
+
overlayX: 'center',
|
|
2868
|
+
overlayY: 'top',
|
|
2869
|
+
offsetX: 0,
|
|
2870
|
+
offsetY: 60
|
|
2871
|
+
};
|
|
2872
|
+
return this.overlay
|
|
2873
|
+
.position()
|
|
2874
|
+
.flexibleConnectedTo(this.imageContent)
|
|
2875
|
+
.withFlexibleDimensions(false)
|
|
2876
|
+
.withGrowAfterOpen(false)
|
|
2877
|
+
.withPush(false)
|
|
2878
|
+
.withPositions([bottomPosition]);
|
|
2879
|
+
}
|
|
2581
2880
|
}
|
|
2582
|
-
TheImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheImageComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.DomSanitizer }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i0.ChangeDetectorRef }, { token: TheContextService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2583
|
-
TheImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheImageComponent, selector: "the-image, [theImage]", viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl\"\n class=\"image-content\"\n [class.pointer]=\"!selection\"\n [ngStyle]=\"{ width: imageEntry.width
|
|
2881
|
+
TheImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheImageComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.DomSanitizer }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i0.ChangeDetectorRef }, { token: TheContextService }, { token: i1$3.ThyPopover }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2882
|
+
TheImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheImageComponent, selector: "the-image, [theImage]", viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl\"\n class=\"image-content\"\n [class.pointer]=\"!selection\"\n [ngStyle]=\"{\n 'width.px':\n imageEntry?.layout && imageEntry?.width > layoutDefaultWidth && !imageEntry?.reSized\n ? layoutDefaultWidth\n : imageEntry.width,\n 'height.px': imageEntry.height\n }\"\n >\n <img #img class=\"main-image\" [src]=\"imageEntry.thumbUrl\" [alt]=\"imageEntry.name\" />\n <div *ngIf=\"selection\" class=\"image-profile\" [class.outline]=\"selection\">\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"></thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" (mousedown)=\"preview($event)\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <div class=\"the-block-operate\" contenteditable=\"false\">\n <thy-icon-nav>\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyIconNavLink\n [ngClass]=\"{ 'remove-link': item.key === 'remove' }\"\n [thyIconNavLinkIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n [thyIconNavLinkActive]=\"layoutActive(item.key)\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <nav-split-line *ngIf=\"item.key === 'split'\"></nav-split-line>\n </ng-container>\n </thy-icon-nav>\n </div>\n</ng-template>\n", components: [{ type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { type: i6.ThyProgressComponent, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
|
|
2584
2883
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheImageComponent, decorators: [{
|
|
2585
2884
|
type: Component,
|
|
2586
2885
|
args: [{
|
|
@@ -2590,72 +2889,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
2590
2889
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.DomSanitizer }, { type: undefined, decorators: [{
|
|
2591
2890
|
type: Inject,
|
|
2592
2891
|
args: [THE_UPLOAD_SERVICE_TOKEN]
|
|
2593
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: TheContextService }]; }, propDecorators: { imageContent: [{
|
|
2892
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: TheContextService }, { type: i1$3.ThyPopover }, { type: i2.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { imageContent: [{
|
|
2594
2893
|
type: ViewChild,
|
|
2595
2894
|
args: ['imageContent']
|
|
2596
2895
|
}], img: [{
|
|
2597
2896
|
type: ViewChild,
|
|
2598
2897
|
args: ['img', { static: false }]
|
|
2898
|
+
}], layoutToolbar: [{
|
|
2899
|
+
type: ViewChild,
|
|
2900
|
+
args: ['layoutToolbar', { static: true }]
|
|
2599
2901
|
}] } });
|
|
2600
2902
|
|
|
2601
|
-
const ImageEditor = {
|
|
2602
|
-
openUpload(editor) {
|
|
2603
|
-
const inputFile = document.createElement('input');
|
|
2604
|
-
inputFile.setAttribute('type', 'file');
|
|
2605
|
-
inputFile.setAttribute('accept', 'image/*');
|
|
2606
|
-
inputFile.onchange = (event) => {
|
|
2607
|
-
ImageEditor.insertImages(editor, event.target.files);
|
|
2608
|
-
};
|
|
2609
|
-
inputFile.click();
|
|
2610
|
-
},
|
|
2611
|
-
insertImages(editor, imageFiles) {
|
|
2612
|
-
const contextService = editor.injector.get(TheContextService);
|
|
2613
|
-
const imageNodes = [];
|
|
2614
|
-
const text = { text: '' };
|
|
2615
|
-
for (const image of imageFiles) {
|
|
2616
|
-
const verify = ImageEditor.verifyImage(editor, image);
|
|
2617
|
-
if (verify) {
|
|
2618
|
-
const url = URL.createObjectURL(image);
|
|
2619
|
-
contextService.setUploadFileList({
|
|
2620
|
-
url,
|
|
2621
|
-
file: image
|
|
2622
|
-
});
|
|
2623
|
-
imageNodes.push({ type: ElementKinds.image, url, children: [text] });
|
|
2624
|
-
}
|
|
2625
|
-
}
|
|
2626
|
-
if (imageNodes.length > 0) {
|
|
2627
|
-
const at = editor.selection;
|
|
2628
|
-
Transforms.insertNodes(editor, imageNodes, { at });
|
|
2629
|
-
if (isCollapsed(editor.selection) && isEmptyParagraph(editor)) {
|
|
2630
|
-
Transforms.removeNodes(editor, { at });
|
|
2631
|
-
Transforms.select(editor, at);
|
|
2632
|
-
}
|
|
2633
|
-
}
|
|
2634
|
-
},
|
|
2635
|
-
verifyImage(editor, image) {
|
|
2636
|
-
if (!PICTURE_ACCEPTED_UPLOAD_MIME.includes(image.type)) {
|
|
2637
|
-
editor.onError({
|
|
2638
|
-
code: ErrorCodes.IMAGE_ERR_MIME_FORMAT
|
|
2639
|
-
});
|
|
2640
|
-
return false;
|
|
2641
|
-
}
|
|
2642
|
-
if (image.size / 1000000 >= PICTURE_ACCEPTED_UPLOAD_SIZE) {
|
|
2643
|
-
editor.onError({
|
|
2644
|
-
code: ErrorCodes.IMAGE_ERR_SIZE_LIMIT
|
|
2645
|
-
});
|
|
2646
|
-
return false;
|
|
2647
|
-
}
|
|
2648
|
-
return true;
|
|
2649
|
-
},
|
|
2650
|
-
isImageActive(editor) {
|
|
2651
|
-
const [match] = Editor.nodes(editor, {
|
|
2652
|
-
match: n => Element$1.isElement(n) && n.type === ElementKinds.image,
|
|
2653
|
-
universal: true
|
|
2654
|
-
});
|
|
2655
|
-
return !!match;
|
|
2656
|
-
}
|
|
2657
|
-
};
|
|
2658
|
-
|
|
2659
2903
|
const withImage = (editor) => {
|
|
2660
2904
|
const { insertData, isVoid, renderElement, isBlockCard } = editor;
|
|
2661
2905
|
editor.isVoid = (element) => {
|
|
@@ -3751,7 +3995,7 @@ TheHrComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
|
|
|
3751
3995
|
<hr class="the-hr" />
|
|
3752
3996
|
<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>
|
|
3753
3997
|
</div>
|
|
3754
|
-
`, isInline: true, components: [{ type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type:
|
|
3998
|
+
`, isInline: true, components: [{ type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
3755
3999
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheHrComponent, decorators: [{
|
|
3756
4000
|
type: Component,
|
|
3757
4001
|
args: [{
|
|
@@ -5516,37 +5760,6 @@ const HrOptions = [
|
|
|
5516
5760
|
}
|
|
5517
5761
|
];
|
|
5518
5762
|
|
|
5519
|
-
const HeadingEditor = {
|
|
5520
|
-
setHeading(editor, heading) {
|
|
5521
|
-
Editor.withoutNormalizing(editor, () => {
|
|
5522
|
-
const types = [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.listItem];
|
|
5523
|
-
Transforms.unwrapNodes(editor, {
|
|
5524
|
-
at: editor.selection,
|
|
5525
|
-
match: n => Element$1.isElement(n) && types.includes(n.type),
|
|
5526
|
-
mode: 'all',
|
|
5527
|
-
split: true
|
|
5528
|
-
});
|
|
5529
|
-
Transforms.setNodes(editor, { type: heading });
|
|
5530
|
-
const entry = anchorBlockEntry(editor);
|
|
5531
|
-
const unMarks = {
|
|
5532
|
-
[MarkTypes.fontSize]: null
|
|
5533
|
-
};
|
|
5534
|
-
if (entry) {
|
|
5535
|
-
setMarks(editor, unMarks, entry[1]);
|
|
5536
|
-
return;
|
|
5537
|
-
}
|
|
5538
|
-
setMarks(editor, unMarks, editor.selection);
|
|
5539
|
-
});
|
|
5540
|
-
},
|
|
5541
|
-
isHeadingActive(editor, heading) {
|
|
5542
|
-
const [match] = Editor.nodes(editor, {
|
|
5543
|
-
match: n => Element$1.isElement(n) && n.type === heading,
|
|
5544
|
-
universal: true
|
|
5545
|
-
});
|
|
5546
|
-
return !!match;
|
|
5547
|
-
}
|
|
5548
|
-
};
|
|
5549
|
-
|
|
5550
5763
|
const HeadingOptions = [
|
|
5551
5764
|
{
|
|
5552
5765
|
name: '正文',
|
|
@@ -5628,6 +5841,14 @@ const AlignEditor = {
|
|
|
5628
5841
|
}
|
|
5629
5842
|
return false;
|
|
5630
5843
|
},
|
|
5844
|
+
isDisabled(editor) {
|
|
5845
|
+
if (editor.selection) {
|
|
5846
|
+
const disableGroup = [ElementKinds.image];
|
|
5847
|
+
const anchorBlock$1 = anchorBlock(editor);
|
|
5848
|
+
return anchorBlock$1 && disableGroup.includes(anchorBlock$1 === null || anchorBlock$1 === void 0 ? void 0 : anchorBlock$1.type);
|
|
5849
|
+
}
|
|
5850
|
+
return false;
|
|
5851
|
+
},
|
|
5631
5852
|
setAlign(editor, alignment) {
|
|
5632
5853
|
if (TableEditor.setAlign(editor, alignment)) {
|
|
5633
5854
|
return;
|
|
@@ -5649,7 +5870,8 @@ const AlignOptions = [
|
|
|
5649
5870
|
dropdownMode: DropdownMode.icon,
|
|
5650
5871
|
dropdownItemKey: ToolbarActionTypes.alignLeft,
|
|
5651
5872
|
includes: [ToolbarActionTypes.alignLeft, ToolbarActionTypes.alignCenter, ToolbarActionTypes.alignRight],
|
|
5652
|
-
name: '对齐方式'
|
|
5873
|
+
name: '对齐方式',
|
|
5874
|
+
disable: editor => AlignEditor.isDisabled(editor)
|
|
5653
5875
|
},
|
|
5654
5876
|
{
|
|
5655
5877
|
key: ToolbarActionTypes.alignLeft,
|
|
@@ -5876,7 +6098,7 @@ class TheColorSelectComponent {
|
|
|
5876
6098
|
}
|
|
5877
6099
|
}
|
|
5878
6100
|
TheColorSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheColorSelectComponent, deps: [{ token: i1$3.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
5879
|
-
TheColorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheColorSelectComponent, selector: "the-color-select", inputs: { selectedColor: "selectedColor", selectAction: "selectAction", showCustom: "showCustom", colors: "colors", option: "option" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)" } }, ngImport: i0, template: "<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon thyIconName=\"check\" [ngStyle]=\"{ color: row.tickColor }\"></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div *ngIf=\"option.showCustom\" class=\"select-color\">\n <span class=\"color\" [ngStyle]=\"{ background: selectedColor }\"></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n", components: [{ type: i4
|
|
6101
|
+
TheColorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheColorSelectComponent, selector: "the-color-select", inputs: { selectedColor: "selectedColor", selectAction: "selectAction", showCustom: "showCustom", colors: "colors", option: "option" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)" } }, ngImport: i0, template: "<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon thyIconName=\"check\" [ngStyle]=\"{ color: row.tickColor }\"></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div *ngIf=\"option.showCustom\" class=\"select-color\">\n <span class=\"color\" [ngStyle]=\"{ background: selectedColor }\"></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n", components: [{ type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5$1.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { type: i4$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5880
6102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheColorSelectComponent, decorators: [{
|
|
5881
6103
|
type: Component,
|
|
5882
6104
|
args: [{
|
|
@@ -6090,7 +6312,7 @@ TheColorToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
6090
6312
|
thyIconName="caret-down"
|
|
6091
6313
|
></thy-icon>
|
|
6092
6314
|
</a>
|
|
6093
|
-
`, isInline: true, components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
6315
|
+
`, isInline: true, components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
6094
6316
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheColorToolbarItemComponent, decorators: [{
|
|
6095
6317
|
type: Component,
|
|
6096
6318
|
args: [{
|
|
@@ -6366,7 +6588,7 @@ class TheToolbarDropdownComponent extends TheToolbarBaseItemComponent {
|
|
|
6366
6588
|
}
|
|
6367
6589
|
}
|
|
6368
6590
|
TheToolbarDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
6369
|
-
TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { toolbarItem: "toolbarItem", menus: "menus", mode: "mode", item: "item", itemMousedownHandle: "itemMousedownHandle" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.disabled": "this.disabledState" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenu?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
6591
|
+
TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { toolbarItem: "toolbarItem", menus: "menus", mode: "mode", item: "item", itemMousedownHandle: "itemMousedownHandle" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.disabled": "this.disabledState" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenu?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5$2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i5$2.ThyActionMenuDividerComponent, selector: "thy-action-menu-divider", inputs: ["thyTitle", "thyType"] }], directives: [{ type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5$2.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5$2.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5$2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }] });
|
|
6370
6592
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
|
|
6371
6593
|
type: Component,
|
|
6372
6594
|
args: [{
|
|
@@ -6406,40 +6628,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
6406
6628
|
args: ['class.disabled']
|
|
6407
6629
|
}] } });
|
|
6408
6630
|
|
|
6409
|
-
class NavSplitLineComponent {
|
|
6410
|
-
constructor() {
|
|
6411
|
-
this.mode = ToolbarItemMode.vertical;
|
|
6412
|
-
this.theNavSplitLine = true;
|
|
6413
|
-
}
|
|
6414
|
-
get horizontal() {
|
|
6415
|
-
return this.mode === ToolbarItemMode.horizontal;
|
|
6416
|
-
}
|
|
6417
|
-
get vertical() {
|
|
6418
|
-
return this.mode === ToolbarItemMode.vertical;
|
|
6419
|
-
}
|
|
6420
|
-
ngOnInit() { }
|
|
6421
|
-
}
|
|
6422
|
-
NavSplitLineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: NavSplitLineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6423
|
-
NavSplitLineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: NavSplitLineComponent, selector: "nav-split-line", inputs: { mode: "mode" }, host: { properties: { "class.the-nav-split-line": "this.theNavSplitLine", "class.horizontal": "this.horizontal", "class.vertical": "this.vertical" } }, ngImport: i0, template: '', isInline: true });
|
|
6424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: NavSplitLineComponent, decorators: [{
|
|
6425
|
-
type: Component,
|
|
6426
|
-
args: [{
|
|
6427
|
-
selector: 'nav-split-line',
|
|
6428
|
-
template: ''
|
|
6429
|
-
}]
|
|
6430
|
-
}], ctorParameters: function () { return []; }, propDecorators: { mode: [{
|
|
6431
|
-
type: Input
|
|
6432
|
-
}], theNavSplitLine: [{
|
|
6433
|
-
type: HostBinding,
|
|
6434
|
-
args: ['class.the-nav-split-line']
|
|
6435
|
-
}], horizontal: [{
|
|
6436
|
-
type: HostBinding,
|
|
6437
|
-
args: ['class.horizontal']
|
|
6438
|
-
}], vertical: [{
|
|
6439
|
-
type: HostBinding,
|
|
6440
|
-
args: ['class.vertical']
|
|
6441
|
-
}] } });
|
|
6442
|
-
|
|
6443
6631
|
class TheCodeComponent extends TheBaseElementComponent {
|
|
6444
6632
|
constructor(elementRef, cdr, thyNotifyService, contextService, ngZone, config) {
|
|
6445
6633
|
super(elementRef, cdr);
|
|
@@ -6642,7 +6830,7 @@ class TheCodeComponent extends TheBaseElementComponent {
|
|
|
6642
6830
|
}
|
|
6643
6831
|
}
|
|
6644
6832
|
TheCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheCodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$4.ThyNotifyService }, { token: TheContextService }, { token: i0.NgZone }, { token: THE_CODE_MODE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
6645
|
-
TheCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }], usesInheritance: true, ngImport: i0, template: "<div contenteditable=\"false\" class=\"the-code-block-operation\" *ngIf=\"isCollapsed && codemirror && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown [menus]=\"menus\" [item]=\"actives\" [itemMousedownHandle]=\"onChangeLangulage\"> </the-toolbar-dropdown>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n <nav-split-line [mode]=\"ToolbarItemMode.vertical\"></nav-split-line>\n <span class=\"auto-wrap d-flex align-items-center\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsed, readonly: options.readOnly, active: isHightLight && isCollapsed }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsed && !options.readOnly\"></thy-resize-handle>\n</div>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: ["toolbarItem", "menus", "mode", "item", "itemMousedownHandle"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }, { type: i6$1.ThySwitchComponent, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled"], outputs: ["thyChange"] }, { type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { type: i8.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "delayRefreshTime", "options"], outputs: ["focusChange"] }, { type: i9.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }], directives: [{ type:
|
|
6833
|
+
TheCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }], usesInheritance: true, ngImport: i0, template: "<div contenteditable=\"false\" class=\"the-code-block-operation\" *ngIf=\"isCollapsed && codemirror && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown [menus]=\"menus\" [item]=\"actives\" [itemMousedownHandle]=\"onChangeLangulage\"> </the-toolbar-dropdown>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n <nav-split-line [mode]=\"ToolbarItemMode.vertical\"></nav-split-line>\n <span class=\"auto-wrap d-flex align-items-center\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsed, readonly: options.readOnly, active: isHightLight && isCollapsed }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsed && !options.readOnly\"></thy-resize-handle>\n</div>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: ["toolbarItem", "menus", "mode", "item", "itemMousedownHandle"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }, { type: i6$1.ThySwitchComponent, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled"], outputs: ["thyChange"] }, { type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { type: i8.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "delayRefreshTime", "options"], outputs: ["focusChange"] }, { type: i9.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeEnd", "thyResizeStart"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6646
6834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheCodeComponent, decorators: [{
|
|
6647
6835
|
type: Component,
|
|
6648
6836
|
args: [{
|
|
@@ -6866,7 +7054,7 @@ class TheLinkEditComponent {
|
|
|
6866
7054
|
}
|
|
6867
7055
|
}
|
|
6868
7056
|
TheLinkEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheLinkEditComponent, deps: [{ token: i1$3.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
6869
|
-
TheLinkEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheLinkEditComponent, selector: "the-link-edit", inputs: { tag: "tag", node: "node", link: "link", text: "text", originSelection: "originSelection" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class": "this.className" } }, ngImport: i0, template: "<form\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig\"\n name=\"linkForm\"\n>\n <thy-form-group thyLabelText=\"\u6587\u672C\">\n <input\n thyInput\n placeholder=\"\u8BF7\u8F93\u5165\u6587\u672C\"\n required\n name=\"text\"\n [(ngModel)]=\"text\"\n thyAutofocus\n type=\"text\"\n />\n </thy-form-group>\n <thy-form-group thyLabelText=\"\u94FE\u63A5\">\n <input\n name=\"link\"\n thyInput\n placeholder=\"\u8BF7\u8F93\u5165\u94FE\u63A5\"\n required\n type=\"text\"\n #linkControl=\"ngModel\"\n [(ngModel)]=\"link\"\n />\n </thy-form-group>\n <thy-form-group-footer>\n <div class=\"btn-pair\">\n <button\n thyButton=\"link-secondary\"\n thySize=\"sm\"\n (click)=\"closePopover()\"\n >\u53D6\u6D88</button>\n <button\n thyButton=\"primary-square\"\n thySize=\"sm\"\n (thyFormSubmit)=\"applyLink(linkForm)\"\n >\u5E94\u7528</button>\n </div>\n </thy-form-group-footer>\n</form>\n", components: [{ type: i2$1.ThyFormGroupComponent, selector: "thy-form-group", inputs: ["thyLabelText", "thyLabelTextTranslateKey", "thyLabelRequired", "thyLabelPaddingTopClear", "thyFeedbackIcon", "thyTipsMode", "thyTips", "thyTipsTranslateKey", "thyRowFill"] }, { type: i2$1.ThyFormGroupFooterComponent, selector: "thy-form-group-footer", inputs: ["thyAlign"] }, { type: i1$5.ThyButtonComponent, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thySquare", "thyBlock"] }], directives: [{ type: i4$
|
|
7057
|
+
TheLinkEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheLinkEditComponent, selector: "the-link-edit", inputs: { tag: "tag", node: "node", link: "link", text: "text", originSelection: "originSelection" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class": "this.className" } }, ngImport: i0, template: "<form\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig\"\n name=\"linkForm\"\n>\n <thy-form-group thyLabelText=\"\u6587\u672C\">\n <input\n thyInput\n placeholder=\"\u8BF7\u8F93\u5165\u6587\u672C\"\n required\n name=\"text\"\n [(ngModel)]=\"text\"\n thyAutofocus\n type=\"text\"\n />\n </thy-form-group>\n <thy-form-group thyLabelText=\"\u94FE\u63A5\">\n <input\n name=\"link\"\n thyInput\n placeholder=\"\u8BF7\u8F93\u5165\u94FE\u63A5\"\n required\n type=\"text\"\n #linkControl=\"ngModel\"\n [(ngModel)]=\"link\"\n />\n </thy-form-group>\n <thy-form-group-footer>\n <div class=\"btn-pair\">\n <button\n thyButton=\"link-secondary\"\n thySize=\"sm\"\n (click)=\"closePopover()\"\n >\u53D6\u6D88</button>\n <button\n thyButton=\"primary-square\"\n thySize=\"sm\"\n (thyFormSubmit)=\"applyLink(linkForm)\"\n >\u5E94\u7528</button>\n </div>\n </thy-form-group-footer>\n</form>\n", components: [{ type: i2$1.ThyFormGroupComponent, selector: "thy-form-group", inputs: ["thyLabelText", "thyLabelTextTranslateKey", "thyLabelRequired", "thyLabelPaddingTopClear", "thyFeedbackIcon", "thyTipsMode", "thyTips", "thyTipsTranslateKey", "thyRowFill"] }, { type: i2$1.ThyFormGroupFooterComponent, selector: "thy-form-group-footer", inputs: ["thyAlign"] }, { type: i1$5.ThyButtonComponent, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thySquare", "thyBlock"] }], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2$1.ThyFormDirective, selector: "[thyForm],[thy-form]", inputs: ["thyLayout", "thyEnterKeyMode", "thyFormValidatorConfig"], exportAs: ["thyForm"] }, { type: i5$3.ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutoSelect", "thyAutofocus"] }, { type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5$1.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { type: i4$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2$1.ThyFormSubmitDirective, selector: "[thyFormSubmit],[thy-form-submit]", outputs: ["thyFormSubmit"] }] });
|
|
6870
7058
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheLinkEditComponent, decorators: [{
|
|
6871
7059
|
type: Component,
|
|
6872
7060
|
args: [{
|
|
@@ -7138,7 +7326,7 @@ class TheTableSelectComponent {
|
|
|
7138
7326
|
}
|
|
7139
7327
|
}
|
|
7140
7328
|
TheTableSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableSelectComponent, deps: [{ token: i1$6.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
7141
|
-
TheTableSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTableSelectComponent, selector: "table-select", inputs: { optionsParam: "optionsParam", editor: "editor" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" } }, ngImport: i0, template: "<div class=\"table-selector-container\">\n <div\n *ngFor=\"let item of tableData, let rowIndex = index\"\n class=\"selector-row\"\n (mousedown)=\"executeTable($event)\"\n >\n <span\n *ngFor=\"let item of tableData, let colIndex = index\"\n [ngClass]=\"{'active-cell': rowIndex<= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true}\"\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\n >\n </span>\n </div>\n <span class=\"selector-text\">{{maxRowIndex+1}} x {{maxColIndex+1}}</span>\n</div>\n", directives: [{ type:
|
|
7329
|
+
TheTableSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTableSelectComponent, selector: "table-select", inputs: { optionsParam: "optionsParam", editor: "editor" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" } }, ngImport: i0, template: "<div class=\"table-selector-container\">\n <div\n *ngFor=\"let item of tableData, let rowIndex = index\"\n class=\"selector-row\"\n (mousedown)=\"executeTable($event)\"\n >\n <span\n *ngFor=\"let item of tableData, let colIndex = index\"\n [ngClass]=\"{'active-cell': rowIndex<= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true}\"\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\n >\n </span>\n </div>\n <span class=\"selector-text\">{{maxRowIndex+1}} x {{maxColIndex+1}}</span>\n</div>\n", directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
7142
7330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableSelectComponent, decorators: [{
|
|
7143
7331
|
type: Component,
|
|
7144
7332
|
args: [{
|
|
@@ -7212,7 +7400,7 @@ TheTableToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
7212
7400
|
<thy-icon [thyIconName]="item.icon"></thy-icon>
|
|
7213
7401
|
<thy-icon class="link-down-icon font-size-sm text-desc table-down-icon" thyIconName="caret-down"> </thy-icon>
|
|
7214
7402
|
</a>
|
|
7215
|
-
`, isInline: true, components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
7403
|
+
`, isInline: true, components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
|
|
7216
7404
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableToolbarItemComponent, decorators: [{
|
|
7217
7405
|
type: Component,
|
|
7218
7406
|
args: [{
|
|
@@ -7927,6 +8115,43 @@ function getElementClassByPrefix(el, prefix) {
|
|
|
7927
8115
|
});
|
|
7928
8116
|
return matchClass;
|
|
7929
8117
|
}
|
|
8118
|
+
function findRelativeElementByPoint(editor, x, y, mode) {
|
|
8119
|
+
const editableElement = EDITOR_TO_ELEMENT.get(editor);
|
|
8120
|
+
const rectEditable = editableElement.getBoundingClientRect();
|
|
8121
|
+
if (x > rectEditable.x && x < rectEditable.x + rectEditable.width) {
|
|
8122
|
+
const centerX = rectEditable.x + rectEditable.width / 2;
|
|
8123
|
+
let relativeElement = document.elementFromPoint(mode === 'highest' ? centerX : x, y);
|
|
8124
|
+
return relativeElement;
|
|
8125
|
+
}
|
|
8126
|
+
return null;
|
|
8127
|
+
}
|
|
8128
|
+
function findNodeEntryByPoint(editor, x, y, mode) {
|
|
8129
|
+
const editableElement = EDITOR_TO_ELEMENT.get(editor);
|
|
8130
|
+
let rootElement = null;
|
|
8131
|
+
let relativeElement = findRelativeElementByPoint(editor, x, y, mode);
|
|
8132
|
+
// 获取最顶层的DOM
|
|
8133
|
+
if (mode === 'highest') {
|
|
8134
|
+
while (relativeElement && editableElement.contains(relativeElement)) {
|
|
8135
|
+
relativeElement = relativeElement.closest('[data-slate-node="element"]');
|
|
8136
|
+
if (relativeElement) {
|
|
8137
|
+
rootElement = relativeElement;
|
|
8138
|
+
relativeElement = relativeElement.parentElement;
|
|
8139
|
+
}
|
|
8140
|
+
}
|
|
8141
|
+
}
|
|
8142
|
+
if (!mode) {
|
|
8143
|
+
if (relativeElement && editableElement.contains(relativeElement)) {
|
|
8144
|
+
relativeElement = relativeElement.closest('[data-slate-node="element"]');
|
|
8145
|
+
rootElement = relativeElement;
|
|
8146
|
+
}
|
|
8147
|
+
}
|
|
8148
|
+
if (rootElement) {
|
|
8149
|
+
const node = AngularEditor.toSlateNode(editor, rootElement);
|
|
8150
|
+
const path = AngularEditor.findPath(editor, node);
|
|
8151
|
+
return [node, path];
|
|
8152
|
+
}
|
|
8153
|
+
return null;
|
|
8154
|
+
}
|
|
7930
8155
|
|
|
7931
8156
|
function splitCell(editor) {
|
|
7932
8157
|
const opts = new TableOptions$1();
|
|
@@ -8079,7 +8304,7 @@ class TheTableToolbarComponent {
|
|
|
8079
8304
|
}
|
|
8080
8305
|
}
|
|
8081
8306
|
TheTableToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i0.NgZone }, { token: TheColorSelectService }, { token: i1$3.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8082
|
-
TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", isActiveSelect: "isActiveSelect" }, ngImport: i0, template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
8307
|
+
TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", isActiveSelect: "isActiveSelect" }, ngImport: i0, template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
|
|
8083
8308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
|
|
8084
8309
|
type: Component,
|
|
8085
8310
|
args: [{
|
|
@@ -8142,7 +8367,7 @@ class TheContextMenuComponent {
|
|
|
8142
8367
|
ngOnInit() { }
|
|
8143
8368
|
}
|
|
8144
8369
|
TheContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheContextMenuComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8145
|
-
TheContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheContextMenuComponent, selector: "the-contextmenu", inputs: { menuEntities: "menuEntities", actionHandle: "actionHandle", activeHandle: "activeHandle", deactiveHandle: "deactiveHandle" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)" }, properties: { "class.the-overlay-menu-wrap": "this.wrap" } }, ngImport: i0, template: "<thy-action-menu>\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n *ngIf=\"!menuItem.invisibility\"\n (mousedown)=\"itemMousedown($event, menuItem)\"\n (mouseenter)=\"itemMouseenter($event, menuItem)\"\n (mouseleave)=\"itemMouseleave($event, menuItem)\"\n >\n <span thyActionMenuItemIcon>\n <thy-icon\n *ngIf=\"menuItem.backgroundColor; else elseIcon\"\n [thyIconName]=\"menuItem.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"menuItem.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"menuItem.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyActionMenuItemName>{{ menuItem.name }}</span>\n <span *ngIf=\"menuItem.extendIcon\" thyActionMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ menuItem.extendIcon }}\"></thy-icon>\n </span>\n </a>\n <thy-action-menu-divider *ngIf=\"menuItem.divider\"></thy-action-menu-divider>\n </ng-container>\n</thy-action-menu>\n", components: [{ type: i5$2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i4
|
|
8370
|
+
TheContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheContextMenuComponent, selector: "the-contextmenu", inputs: { menuEntities: "menuEntities", actionHandle: "actionHandle", activeHandle: "activeHandle", deactiveHandle: "deactiveHandle" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)" }, properties: { "class.the-overlay-menu-wrap": "this.wrap" } }, ngImport: i0, template: "<thy-action-menu>\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n *ngIf=\"!menuItem.invisibility\"\n (mousedown)=\"itemMousedown($event, menuItem)\"\n (mouseenter)=\"itemMouseenter($event, menuItem)\"\n (mouseleave)=\"itemMouseleave($event, menuItem)\"\n >\n <span thyActionMenuItemIcon>\n <thy-icon\n *ngIf=\"menuItem.backgroundColor; else elseIcon\"\n [thyIconName]=\"menuItem.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"menuItem.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"menuItem.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyActionMenuItemName>{{ menuItem.name }}</span>\n <span *ngIf=\"menuItem.extendIcon\" thyActionMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ menuItem.extendIcon }}\"></thy-icon>\n </span>\n </a>\n <thy-action-menu-divider *ngIf=\"menuItem.divider\"></thy-action-menu-divider>\n </ng-container>\n</thy-action-menu>\n", components: [{ type: i5$2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5$2.ThyActionMenuDividerComponent, selector: "thy-action-menu-divider", inputs: ["thyTitle", "thyType"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5$2.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5$2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }, { type: i5$2.ThyActionMenuItemExtendIconDirective, selector: "[thyActionMenuItemExtendIcon]" }] });
|
|
8146
8371
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheContextMenuComponent, decorators: [{
|
|
8147
8372
|
type: Component,
|
|
8148
8373
|
args: [{
|
|
@@ -8514,7 +8739,7 @@ class TheInsertMarkComponent {
|
|
|
8514
8739
|
ngOnDestroy() { }
|
|
8515
8740
|
}
|
|
8516
8741
|
TheInsertMarkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheInsertMarkComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8517
|
-
TheInsertMarkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: { type: "type", at: "at", tableStore: "tableStore" }, ngImport: i0, template: "<div\n [thyTooltip]=\"!disabled && tooltipContent\"\n class=\"the-table-controls-insert-wrapper\"\n [ngClass]=\"{ disabled: disabled }\"\n contenteditable=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n>\n <div\n class=\"the-table-controls-insert-line\"\n *ngIf=\"dotWrapperHovered\"\n [attr.data-dot-type]=\"type\"\n [ngStyle]=\"{ height: type === 'column' && insertLength, width: type === 'row' && insertLength }\"\n ></div>\n</div>\n", directives: [{ type: i5
|
|
8742
|
+
TheInsertMarkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: { type: "type", at: "at", tableStore: "tableStore" }, ngImport: i0, template: "<div\n [thyTooltip]=\"!disabled && tooltipContent\"\n class=\"the-table-controls-insert-wrapper\"\n [ngClass]=\"{ disabled: disabled }\"\n contenteditable=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n>\n <div\n class=\"the-table-controls-insert-line\"\n *ngIf=\"dotWrapperHovered\"\n [attr.data-dot-type]=\"type\"\n [ngStyle]=\"{ height: type === 'column' && insertLength, width: type === 'row' && insertLength }\"\n ></div>\n</div>\n", directives: [{ type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
8518
8743
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheInsertMarkComponent, decorators: [{
|
|
8519
8744
|
type: Component,
|
|
8520
8745
|
args: [{
|
|
@@ -8995,7 +9220,7 @@ TheTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
|
|
|
8995
9220
|
provide: TheTableToken,
|
|
8996
9221
|
useExisting: TheTableComponent
|
|
8997
9222
|
}
|
|
8998
|
-
], viewQueries: [{ propertyName: "tableWrapper", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef, static: true }, { propertyName: "theTableElement", first: true, predicate: ["theTable"], descendants: true, read: ElementRef, static: true }, { propertyName: "tbodyElement", first: true, predicate: ["tbody"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"the-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-table-with-controls': isInTable,\n 'the-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div class=\"the-table-row-controls-wrapper\" *ngIf=\"!readonly && isInTable\">\n <div>\n <div\n class=\"the-table-corner-controls\"\n [ngClass]=\"{ active: isSelectedAllCell, dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0 }\"\n >\n <button type=\"button\" class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></button>\n <div class=\"the-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\">\n <div\n class=\"the-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowCotrols\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper>\n <table class=\"the-table\" #theTable [ngClass]=\"{ 'the-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper\">\n <th\n class=\"the-table-col-controls\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColCotrols\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n ></the-table-insert-mark>\n <div\n class=\"the-table-col-controls-inner\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n ></div>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n", components: [{ type: TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: ["type", "at", "tableStore"] }, { type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type: TheColumnResizeDirective, selector: "div[theColumnResize]" }, { type:
|
|
9223
|
+
], viewQueries: [{ propertyName: "tableWrapper", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef, static: true }, { propertyName: "theTableElement", first: true, predicate: ["theTable"], descendants: true, read: ElementRef, static: true }, { propertyName: "tbodyElement", first: true, predicate: ["tbody"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"the-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-table-with-controls': isInTable,\n 'the-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div class=\"the-table-row-controls-wrapper\" *ngIf=\"!readonly && isInTable\">\n <div>\n <div\n class=\"the-table-corner-controls\"\n [ngClass]=\"{ active: isSelectedAllCell, dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0 }\"\n >\n <button type=\"button\" class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></button>\n <div class=\"the-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\">\n <div\n class=\"the-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowCotrols\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper>\n <table class=\"the-table\" #theTable [ngClass]=\"{ 'the-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper\">\n <th\n class=\"the-table-col-controls\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColCotrols\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n ></the-table-insert-mark>\n <div\n class=\"the-table-col-controls-inner\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n ></div>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n", components: [{ type: TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: ["type", "at", "tableStore"] }, { type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type: TheColumnResizeDirective, selector: "div[theColumnResize]" }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
8999
9224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableComponent, decorators: [{
|
|
9000
9225
|
type: Component,
|
|
9001
9226
|
args: [{
|
|
@@ -10640,7 +10865,7 @@ class TheVerticalToolbarItemComponent extends TheToolbarBaseItemComponent {
|
|
|
10640
10865
|
}
|
|
10641
10866
|
}
|
|
10642
10867
|
TheVerticalToolbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheVerticalToolbarItemComponent, deps: [{ token: i0.ElementRef }, { token: i1$6.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10643
|
-
TheVerticalToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheVerticalToolbarItemComponent, selector: "the-toolbar-vertical-align-item", inputs: { item: "item", menus: "menus", editor: "editor", toolbarItem: "toolbarItem" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.hide": "!active" }, classAttribute: "the-toolbar-dropdown-container verticalAlign" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["VerticalAlignItems"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n thyIconNavLink\n class=\"icon-mode link-with-down\"\n [thyTooltip]=\"toolbarItem?.name\"\n [thyIconNavLinkActive]=\"isOpened\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu?.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span *ngIf=\"menu.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu?.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
10868
|
+
TheVerticalToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheVerticalToolbarItemComponent, selector: "the-toolbar-vertical-align-item", inputs: { item: "item", menus: "menus", editor: "editor", toolbarItem: "toolbarItem" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.hide": "!active" }, classAttribute: "the-toolbar-dropdown-container verticalAlign" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["VerticalAlignItems"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n thyIconNavLink\n class=\"icon-mode link-with-down\"\n [thyTooltip]=\"toolbarItem?.name\"\n [thyIconNavLinkActive]=\"isOpened\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu?.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span *ngIf=\"menu.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu?.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5$2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }], directives: [{ type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5$2.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$2.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5$2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }] });
|
|
10644
10869
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheVerticalToolbarItemComponent, decorators: [{
|
|
10645
10870
|
type: Component,
|
|
10646
10871
|
args: [{
|
|
@@ -10855,7 +11080,7 @@ class TheToolbarItemComponent extends TheToolbarBaseItemComponent {
|
|
|
10855
11080
|
}
|
|
10856
11081
|
}
|
|
10857
11082
|
TheToolbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarItemComponent, deps: [{ token: i0.NgZone }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
|
|
10858
|
-
TheToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarItemComponent, selector: "the-toolbar-item", inputs: {
|
|
11083
|
+
TheToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarItemComponent, selector: "the-toolbar-item", inputs: { editor: "editor", item: "item", itemMode: "itemMode" }, host: { listeners: { "mousedown": "toggleDropdown($event)" }, properties: { "class.disabled": "this.disabledState" }, classAttribute: "the-toolbar-item" }, viewQueries: [{ propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
10859
11084
|
<ng-container *ngIf="itemMode === ToolbarItemMode.horizontal; else selectionItem">
|
|
10860
11085
|
<a
|
|
10861
11086
|
thyIconNavLink
|
|
@@ -10875,7 +11100,7 @@ TheToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
10875
11100
|
</ng-template>
|
|
10876
11101
|
<ng-template #tooltip let-data> {{ data.name }} {{ data.shortcutKey }} </ng-template>
|
|
10877
11102
|
<ng-container #toolbarContainer></ng-container>
|
|
10878
|
-
`, isInline: true, components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
11103
|
+
`, isInline: true, components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
|
|
10879
11104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarItemComponent, decorators: [{
|
|
10880
11105
|
type: Component,
|
|
10881
11106
|
args: [{
|
|
@@ -10905,9 +11130,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
10905
11130
|
class: 'the-toolbar-item'
|
|
10906
11131
|
}
|
|
10907
11132
|
}]
|
|
10908
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: {
|
|
11133
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { editor: [{
|
|
10909
11134
|
type: Input
|
|
10910
|
-
}],
|
|
11135
|
+
}], item: [{
|
|
10911
11136
|
type: Input
|
|
10912
11137
|
}], itemMode: [{
|
|
10913
11138
|
type: Input
|
|
@@ -10968,7 +11193,7 @@ class TheQuickToolbarComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
10968
11193
|
}
|
|
10969
11194
|
}
|
|
10970
11195
|
TheQuickToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheQuickToolbarComponent, deps: [{ token: i1$3.ThyPopoverRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10971
|
-
TheQuickToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheQuickToolbarComponent, selector: "the-quick-toolbar", inputs: { editor: "editor", quickToolbarItems: "quickToolbarItems" }, host: { listeners: { "document: mousedown": "handleMouseDown($event)", "document: keydown.enter": "handleEnter()", "document: keydown.escape": "handleEsc()" } }, usesInheritance: true, ngImport: i0, template: "<thy-selection-list\n class=\"the-quick-toolbar\"\n [thyBindKeyEventContainer]=\"editorElement\"\n (thySelectionChange)=\"selectionChange($event)\"\n [thyMultiple]=\"false\"\n>\n <ng-container *ngFor=\"let item of quickToolbarItems\">\n <ng-container *ngIf=\"item.key !== ToolbarActionTypes.split; else splitLine\">\n <thy-list-option [thyValue]=\"item?.key\" (mousedown)=\"stopPropagation($event)\">\n <the-toolbar-item [editor]=\"editor\" [item]=\"item\" [itemMode]=\"ToolbarItemMode.vertical\"></the-toolbar-item>\n </thy-list-option>\n </ng-container>\n </ng-container>\n</thy-selection-list>\n\n<ng-template #splitLine>\n <nav-split-line [mode]=\"ToolbarItemMode.horizontal\"></nav-split-line>\n</ng-template>\n", components: [{ type: i2$2.ThySelectionListComponent, selector: "thy-selection-list,[thy-selection-list]", inputs: ["thyMultiple", "thyBindKeyEventContainer", "thyScrollContainer", "thyBeforeKeydown", "thyUniqueKey", "thyCompareWith", "thyLayout", "thyAutoActiveFirstItem", "thySize", "thySpaceKeyEnabled"], outputs: ["thySelectionChange"] }, { type: i5$3.ThyListOptionComponent, selector: "thy-list-option,[thy-list-option]", inputs: ["id", "thyValue", "thyDisabled"] }, { type: TheToolbarItemComponent, selector: "the-toolbar-item", inputs: ["
|
|
11196
|
+
TheQuickToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheQuickToolbarComponent, selector: "the-quick-toolbar", inputs: { editor: "editor", quickToolbarItems: "quickToolbarItems" }, host: { listeners: { "document: mousedown": "handleMouseDown($event)", "document: keydown.enter": "handleEnter()", "document: keydown.escape": "handleEsc()" } }, usesInheritance: true, ngImport: i0, template: "<thy-selection-list\n class=\"the-quick-toolbar\"\n [thyBindKeyEventContainer]=\"editorElement\"\n (thySelectionChange)=\"selectionChange($event)\"\n [thyMultiple]=\"false\"\n>\n <ng-container *ngFor=\"let item of quickToolbarItems\">\n <ng-container *ngIf=\"item.key !== ToolbarActionTypes.split; else splitLine\">\n <thy-list-option [thyValue]=\"item?.key\" (mousedown)=\"stopPropagation($event)\">\n <the-toolbar-item [editor]=\"editor\" [item]=\"item\" [itemMode]=\"ToolbarItemMode.vertical\"></the-toolbar-item>\n </thy-list-option>\n </ng-container>\n </ng-container>\n</thy-selection-list>\n\n<ng-template #splitLine>\n <nav-split-line [mode]=\"ToolbarItemMode.horizontal\"></nav-split-line>\n</ng-template>\n", components: [{ type: i2$2.ThySelectionListComponent, selector: "thy-selection-list,[thy-selection-list]", inputs: ["thyMultiple", "thyBindKeyEventContainer", "thyScrollContainer", "thyBeforeKeydown", "thyUniqueKey", "thyCompareWith", "thyLayout", "thyAutoActiveFirstItem", "thySize", "thySpaceKeyEnabled"], outputs: ["thySelectionChange"] }, { type: i5$3.ThyListOptionComponent, selector: "thy-list-option,[thy-list-option]", inputs: ["id", "thyValue", "thyDisabled"] }, { type: TheToolbarItemComponent, selector: "the-toolbar-item", inputs: ["editor", "item", "itemMode"] }, { type: NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
10972
11197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheQuickToolbarComponent, decorators: [{
|
|
10973
11198
|
type: Component,
|
|
10974
11199
|
args: [{
|
|
@@ -11330,7 +11555,7 @@ class TheIndentToolbarComponent extends TheToolbarBaseItemComponent {
|
|
|
11330
11555
|
}
|
|
11331
11556
|
}
|
|
11332
11557
|
TheIndentToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheIndentToolbarComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
11333
|
-
TheIndentToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheIndentToolbarComponent, selector: "the-indent-toolbar-item", inputs: { toolbarItem: "toolbarItem", menus: "menus", mode: "mode", item: "item" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.disabled": "this.disabledState" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyTooltip]=\"tooltip\"\n [thyTooltipTemplateContext]=\"{ name: menu.name, shortcutKey: menu.shortcutKey }\"\n thyTooltipPlacement=\"right\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n\n<ng-template #tooltip let-data>{{ data?.shortcutKey }}</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4
|
|
11558
|
+
TheIndentToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheIndentToolbarComponent, selector: "the-indent-toolbar-item", inputs: { toolbarItem: "toolbarItem", menus: "menus", mode: "mode", item: "item" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.disabled": "this.disabledState" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown-menu\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyTooltip]=\"tooltip\"\n [thyTooltipTemplateContext]=\"{ name: menu.name, shortcutKey: menu.shortcutKey }\"\n thyTooltipPlacement=\"right\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n\n<ng-template #tooltip let-data>{{ data?.shortcutKey }}</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5$2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }], directives: [{ type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5$2.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5$2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }] });
|
|
11334
11559
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheIndentToolbarComponent, decorators: [{
|
|
11335
11560
|
type: Component,
|
|
11336
11561
|
args: [{
|
|
@@ -11482,8 +11707,7 @@ const onKeydownTextIndent = (editor, event, kinds) => {
|
|
|
11482
11707
|
return false;
|
|
11483
11708
|
}
|
|
11484
11709
|
const [block, path] = startBlock;
|
|
11485
|
-
const
|
|
11486
|
-
const isStart = Editor.isStart(editor, selection.anchor, currentPath);
|
|
11710
|
+
const isStart = Editor.isStart(editor, selection.anchor, path);
|
|
11487
11711
|
const textIndentDisable = [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.checkItem];
|
|
11488
11712
|
if (isKeyHotkey('Tab', event)) {
|
|
11489
11713
|
event.preventDefault();
|
|
@@ -11719,8 +11943,9 @@ const autoScrollViewHandle = (editor, scrollContainer) => {
|
|
|
11719
11943
|
};
|
|
11720
11944
|
|
|
11721
11945
|
class TheToolbarComponent {
|
|
11722
|
-
constructor(cfr, elementRef, ngZone, toolbarGroupComponent) {
|
|
11946
|
+
constructor(cfr, cdr, elementRef, ngZone, toolbarGroupComponent) {
|
|
11723
11947
|
this.cfr = cfr;
|
|
11948
|
+
this.cdr = cdr;
|
|
11724
11949
|
this.elementRef = elementRef;
|
|
11725
11950
|
this.ngZone = ngZone;
|
|
11726
11951
|
this.toolbarGroupComponent = toolbarGroupComponent;
|
|
@@ -11795,6 +12020,7 @@ class TheToolbarComponent {
|
|
|
11795
12020
|
}
|
|
11796
12021
|
this.createMoreGroup(group);
|
|
11797
12022
|
});
|
|
12023
|
+
this.cdr.markForCheck();
|
|
11798
12024
|
}
|
|
11799
12025
|
/**
|
|
11800
12026
|
* calculation display toolbar and more grouped toolbars
|
|
@@ -11933,8 +12159,8 @@ class TheToolbarComponent {
|
|
|
11933
12159
|
return (_c = item === null || item === void 0 ? void 0 : item.includes) === null || _c === void 0 ? void 0 : _c.find((item) => item.key === dropdownKey);
|
|
11934
12160
|
}
|
|
11935
12161
|
}
|
|
11936
|
-
TheToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: TheToolbarGroupToken }], target: i0.ɵɵFactoryTarget.Component });
|
|
11937
|
-
TheToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarComponent, selector: "the-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems", align: "align", containerClass: "containerClass", isMore: "isMore", afterTemplate: "afterTemplate" }, host: { classAttribute: "the-toolbar-container" }, viewQueries: [{ propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<thy-icon-nav [style.justifyContent]=\"align\">\n <ng-container #toolbarContainer></ng-container>\n <ng-content></ng-content>\n <ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }], directives: [{ type:
|
|
12162
|
+
TheToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: TheToolbarGroupToken }], target: i0.ɵɵFactoryTarget.Component });
|
|
12163
|
+
TheToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarComponent, selector: "the-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems", align: "align", containerClass: "containerClass", isMore: "isMore", afterTemplate: "afterTemplate" }, host: { classAttribute: "the-toolbar-container" }, viewQueries: [{ propertyName: "toolbarContainer", first: true, predicate: ["toolbarContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<thy-icon-nav [style.justifyContent]=\"align\">\n <ng-container #toolbarContainer></ng-container>\n <ng-content></ng-content>\n <ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
11938
12164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarComponent, decorators: [{
|
|
11939
12165
|
type: Component,
|
|
11940
12166
|
args: [{
|
|
@@ -11944,7 +12170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
11944
12170
|
class: 'the-toolbar-container'
|
|
11945
12171
|
}
|
|
11946
12172
|
}]
|
|
11947
|
-
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
12173
|
+
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
11948
12174
|
type: Inject,
|
|
11949
12175
|
args: [TheToolbarGroupToken]
|
|
11950
12176
|
}] }]; }, propDecorators: { editor: [{
|
|
@@ -12110,7 +12336,7 @@ class TheQuickInsertComponent {
|
|
|
12110
12336
|
checkStatus() {
|
|
12111
12337
|
var _a;
|
|
12112
12338
|
const { editor } = this;
|
|
12113
|
-
if (this.isVisible && isCleanEmptyParagraph(editor) && !this.hasExcludeAttribute()) {
|
|
12339
|
+
if (this.isVisible && isCleanEmptyParagraph(editor) && !this.hasExcludeAttribute() && !this.isRichMediaScope()) {
|
|
12114
12340
|
const block = Node.ancestor(editor, [(_a = editor === null || editor === void 0 ? void 0 : editor.selection) === null || _a === void 0 ? void 0 : _a.anchor.path[0]]);
|
|
12115
12341
|
const rootNode = AngularEditor.toDOMNode(editor, block);
|
|
12116
12342
|
this.updatePosition(rootNode.offsetLeft, rootNode.offsetTop);
|
|
@@ -12118,6 +12344,17 @@ class TheQuickInsertComponent {
|
|
|
12118
12344
|
}
|
|
12119
12345
|
this.isHide = true;
|
|
12120
12346
|
}
|
|
12347
|
+
isRichMediaScope() {
|
|
12348
|
+
var _a;
|
|
12349
|
+
const { editor } = this;
|
|
12350
|
+
if (editor === null || editor === void 0 ? void 0 : editor.selection) {
|
|
12351
|
+
const block = Node.ancestor(editor, [(_a = editor === null || editor === void 0 ? void 0 : editor.selection) === null || _a === void 0 ? void 0 : _a.anchor.path[0]]);
|
|
12352
|
+
const rootNode = AngularEditor.toDOMNode(editor, block);
|
|
12353
|
+
const firstElementChild = rootNode.firstElementChild;
|
|
12354
|
+
return (firstElementChild === null || firstElementChild === void 0 ? void 0 : firstElementChild.offsetLeft) > 0;
|
|
12355
|
+
}
|
|
12356
|
+
return false;
|
|
12357
|
+
}
|
|
12121
12358
|
hasExcludeAttribute() {
|
|
12122
12359
|
const marks = getSelectionMarks(this.editor);
|
|
12123
12360
|
const fontSizeMark = marks[MarkTypes.fontSize];
|
|
@@ -12143,7 +12380,7 @@ class TheQuickInsertComponent {
|
|
|
12143
12380
|
}
|
|
12144
12381
|
}
|
|
12145
12382
|
TheQuickInsertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheQuickInsertComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12146
|
-
TheQuickInsertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: { editor: "editor", quickToolbarItems: "quickToolbarItems", isVisible: "isVisible" }, host: { listeners: { "mousedown": "handleMousedownNativeElement($event)" }, properties: { "class.hide": "isHide" }, classAttribute: "the-quick-insert" }, viewQueries: [{ propertyName: "iconElement", first: true, predicate: ["iconElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "<thy-icon\n #iconElement\n [thyIconName]=\"displayIconName\"\n class=\"quick-insert-icon text-desc font-size-xlg\"\n (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousedown)=\"handleClick($event)\"\n></thy-icon>\n", components: [{ type: i4
|
|
12383
|
+
TheQuickInsertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: { editor: "editor", quickToolbarItems: "quickToolbarItems", isVisible: "isVisible" }, host: { listeners: { "mousedown": "handleMousedownNativeElement($event)" }, properties: { "class.hide": "isHide" }, classAttribute: "the-quick-insert" }, viewQueries: [{ propertyName: "iconElement", first: true, predicate: ["iconElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "<thy-icon\n #iconElement\n [thyIconName]=\"displayIconName\"\n class=\"quick-insert-icon text-desc font-size-xlg\"\n (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousedown)=\"handleClick($event)\"\n></thy-icon>\n", components: [{ type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }] });
|
|
12147
12384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheQuickInsertComponent, decorators: [{
|
|
12148
12385
|
type: Component,
|
|
12149
12386
|
args: [{
|
|
@@ -12168,6 +12405,347 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
12168
12405
|
args: ['mousedown', ['$event']]
|
|
12169
12406
|
}] } });
|
|
12170
12407
|
|
|
12408
|
+
const getCurrentTarget = (editor, event) => {
|
|
12409
|
+
const editorElement = EDITOR_TO_ELEMENT.get(editor);
|
|
12410
|
+
const { left, right } = editorElement.getBoundingClientRect();
|
|
12411
|
+
let { paddingLeft, paddingRight } = window.getComputedStyle(editorElement, null);
|
|
12412
|
+
const paddingLeftPixels = coercePixelsFromCssValue(paddingLeft);
|
|
12413
|
+
const paddingRightPixels = coercePixelsFromCssValue(paddingRight);
|
|
12414
|
+
let x = event.x;
|
|
12415
|
+
if (event.x <= left + paddingLeftPixels || event.x >= right - paddingRightPixels) {
|
|
12416
|
+
x = left + paddingLeftPixels;
|
|
12417
|
+
}
|
|
12418
|
+
const nodeEntry = findNodeEntryByPoint(editor, x, event.y);
|
|
12419
|
+
if (nodeEntry) {
|
|
12420
|
+
return TheEditor.toDOMNode(editor, nodeEntry[0]);
|
|
12421
|
+
}
|
|
12422
|
+
};
|
|
12423
|
+
|
|
12424
|
+
const getHoverDirection = (editor, event) => {
|
|
12425
|
+
const rootNode = getCurrentTarget(editor, event);
|
|
12426
|
+
if (rootNode) {
|
|
12427
|
+
const { top, bottom } = rootNode.getBoundingClientRect();
|
|
12428
|
+
const middleHeight = (bottom - top) / 2;
|
|
12429
|
+
if (top + middleHeight > event.clientY) {
|
|
12430
|
+
return 'top';
|
|
12431
|
+
}
|
|
12432
|
+
return 'bottom';
|
|
12433
|
+
}
|
|
12434
|
+
};
|
|
12435
|
+
|
|
12436
|
+
const removeDropThumbLine = (editor) => {
|
|
12437
|
+
const element = EDITOR_TO_ELEMENT.get(editor);
|
|
12438
|
+
const dropThumbLine = element.querySelector('.' + DROP_THUMB_LINE);
|
|
12439
|
+
if (dropThumbLine) {
|
|
12440
|
+
dropThumbLine.remove();
|
|
12441
|
+
}
|
|
12442
|
+
};
|
|
12443
|
+
|
|
12444
|
+
const moveDragNode = (editor, dragNode, event) => {
|
|
12445
|
+
event.stopPropagation();
|
|
12446
|
+
const element = EDITOR_TO_ELEMENT.get(editor);
|
|
12447
|
+
const dropThumbLine = element.querySelector('.' + DROP_THUMB_LINE);
|
|
12448
|
+
const parentElement = dropThumbLine && dropThumbLine.parentNode;
|
|
12449
|
+
if (parentElement) {
|
|
12450
|
+
const node = TheEditor.toSlateNode(editor, parentElement);
|
|
12451
|
+
let dropPath = node && TheEditor.findPath(editor, node);
|
|
12452
|
+
if (dropPath.length) {
|
|
12453
|
+
const dragPath = dragNode.path;
|
|
12454
|
+
const before = Path.isBefore(dragPath, dropPath) && Path.isSibling(dragPath, dropPath);
|
|
12455
|
+
dropPath = before ? dropPath : Path.next(dropPath);
|
|
12456
|
+
if (dropPath.length) {
|
|
12457
|
+
Editor.withoutNormalizing(editor, () => {
|
|
12458
|
+
Transforms.moveNodes(editor, {
|
|
12459
|
+
at: dragPath,
|
|
12460
|
+
to: dropPath
|
|
12461
|
+
});
|
|
12462
|
+
});
|
|
12463
|
+
}
|
|
12464
|
+
}
|
|
12465
|
+
}
|
|
12466
|
+
removeDropThumbLine(editor);
|
|
12467
|
+
};
|
|
12468
|
+
|
|
12469
|
+
const isValidDrag = (editor, dragNode, currentTarget) => {
|
|
12470
|
+
var _a;
|
|
12471
|
+
const node = TheEditor.toSlateNode(editor, currentTarget);
|
|
12472
|
+
const dropPath = TheEditor.findPath(editor, node);
|
|
12473
|
+
const dragPath = TheEditor.findPath(editor, dragNode);
|
|
12474
|
+
if (dragPath[0] === dropPath[0] && dropPath.length > 1) {
|
|
12475
|
+
// 阻止list元素拖入自身
|
|
12476
|
+
return false;
|
|
12477
|
+
}
|
|
12478
|
+
let allElementOptions = DefaultElementOptions;
|
|
12479
|
+
if ((_a = editor.extraElementOptions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
12480
|
+
const extraInfo = mergeElementOptions(editor.extraElementOptions);
|
|
12481
|
+
allElementOptions = Object.values(extraInfo);
|
|
12482
|
+
}
|
|
12483
|
+
const types = allElementOptions.map(item => item.type);
|
|
12484
|
+
if (types.indexOf(node.type) > -1 && allElementOptions[types.indexOf(node.type)].isSecondaryContainer) {
|
|
12485
|
+
// 阻止向table-celld等二级容器中拖入
|
|
12486
|
+
return false;
|
|
12487
|
+
}
|
|
12488
|
+
let containerParent = Editor.above(editor, {
|
|
12489
|
+
at: dropPath,
|
|
12490
|
+
mode: 'lowest',
|
|
12491
|
+
match: (node) => {
|
|
12492
|
+
return node && node.type && types.includes(node.type);
|
|
12493
|
+
}
|
|
12494
|
+
});
|
|
12495
|
+
if (containerParent) {
|
|
12496
|
+
const { inValidChildrenTypes } = allElementOptions.find(item => item.type === containerParent[0].type);
|
|
12497
|
+
if (inValidChildrenTypes.includes(dragNode.type)) {
|
|
12498
|
+
return false;
|
|
12499
|
+
}
|
|
12500
|
+
}
|
|
12501
|
+
return true;
|
|
12502
|
+
};
|
|
12503
|
+
|
|
12504
|
+
const SNAPSHOT_PADDING_WIDTH = 5;
|
|
12505
|
+
const SNAPSHOT_LIMI_HEIGHT = 70;
|
|
12506
|
+
const DRAG_ICON_SIZE = 24;
|
|
12507
|
+
const DRAG_ICON_OFFSET = 5;
|
|
12508
|
+
class TheDndComponent {
|
|
12509
|
+
constructor(renderer, elementRef, ngZone, cdr) {
|
|
12510
|
+
this.renderer = renderer;
|
|
12511
|
+
this.elementRef = elementRef;
|
|
12512
|
+
this.ngZone = ngZone;
|
|
12513
|
+
this.cdr = cdr;
|
|
12514
|
+
this.isDraging = false;
|
|
12515
|
+
this.destroy$ = new Subject();
|
|
12516
|
+
this.dragChange = new EventEmitter();
|
|
12517
|
+
this.dropThumbLine = document.createElement('div');
|
|
12518
|
+
this.dropThumbLine.className = DROP_THUMB_LINE;
|
|
12519
|
+
}
|
|
12520
|
+
get nativeElement() {
|
|
12521
|
+
return this.elementRef.nativeElement;
|
|
12522
|
+
}
|
|
12523
|
+
get editableElement() {
|
|
12524
|
+
return this.editor && EDITOR_TO_ELEMENT.get(this.editor);
|
|
12525
|
+
}
|
|
12526
|
+
ngAfterViewInit() {
|
|
12527
|
+
const contextService = this.editor.injector.get(TheContextService);
|
|
12528
|
+
this.ngZone.runOutsideAngular(() => {
|
|
12529
|
+
merge(fromEvent(this.editableElement, `mousemove`), fromEvent(this.editableElement, `mouseleave`))
|
|
12530
|
+
.pipe(takeUntil(this.destroy$), filter(() => {
|
|
12531
|
+
return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
|
|
12532
|
+
}))
|
|
12533
|
+
.subscribe(e => this.setDragIcon(e));
|
|
12534
|
+
fromEvent(document, `drop`)
|
|
12535
|
+
.pipe(takeUntil(this.destroy$), filter(() => {
|
|
12536
|
+
return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
|
|
12537
|
+
}))
|
|
12538
|
+
.subscribe(e => this.onDrop(e));
|
|
12539
|
+
fromEvent(document, `dragover`)
|
|
12540
|
+
.pipe(takeUntil(this.destroy$), filter(() => {
|
|
12541
|
+
return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
|
|
12542
|
+
}))
|
|
12543
|
+
.subscribe(e => this.onDragover(e));
|
|
12544
|
+
fromEvent(document, `scroll`)
|
|
12545
|
+
.pipe(takeUntil(this.destroy$), filter(() => {
|
|
12546
|
+
return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
|
|
12547
|
+
}))
|
|
12548
|
+
.subscribe(e => {
|
|
12549
|
+
e.preventDefault();
|
|
12550
|
+
let scrollPosition = window.scrollY;
|
|
12551
|
+
if (!this.isScrolling && this.isDraging) {
|
|
12552
|
+
window.requestAnimationFrame(() => {
|
|
12553
|
+
if (this.editableTop) {
|
|
12554
|
+
// 滚动过程中,通过设置父级元素来设置snapshot位置
|
|
12555
|
+
this.updateDndContainerPosition(null, scrollPosition + this.editableTop + 'px');
|
|
12556
|
+
}
|
|
12557
|
+
this.isScrolling = false;
|
|
12558
|
+
});
|
|
12559
|
+
this.isScrolling = true;
|
|
12560
|
+
}
|
|
12561
|
+
});
|
|
12562
|
+
});
|
|
12563
|
+
this.setVisibility(false);
|
|
12564
|
+
this.valueChangeHandle();
|
|
12565
|
+
}
|
|
12566
|
+
valueChangeHandle() {
|
|
12567
|
+
const { onChange } = this.editor;
|
|
12568
|
+
this.editor.onChange = () => {
|
|
12569
|
+
const ops = this.editor.operations;
|
|
12570
|
+
const skip = ops.length === 1 && Operation.isSelectionOperation(ops[0]);
|
|
12571
|
+
if (!skip) {
|
|
12572
|
+
this.setVisibility(false);
|
|
12573
|
+
}
|
|
12574
|
+
onChange();
|
|
12575
|
+
};
|
|
12576
|
+
}
|
|
12577
|
+
updateDndContainerPosition(left, top) {
|
|
12578
|
+
const element = this.elementRef.nativeElement;
|
|
12579
|
+
const parentElement = element.parentElement;
|
|
12580
|
+
top && this.renderer.setStyle(parentElement, 'top', top);
|
|
12581
|
+
left && this.renderer.setStyle(parentElement, 'left', left);
|
|
12582
|
+
}
|
|
12583
|
+
getEditableTop(event) {
|
|
12584
|
+
const offsetHeight = document.documentElement.offsetHeight;
|
|
12585
|
+
const { height } = this.editableElement.getBoundingClientRect();
|
|
12586
|
+
if (event.clientY < this.dragElementHeight) {
|
|
12587
|
+
this.editableTop = -this.editableElement.offsetTop;
|
|
12588
|
+
return;
|
|
12589
|
+
}
|
|
12590
|
+
if (height > event.pageY && event.clientY + this.dragElementHeight >= offsetHeight) {
|
|
12591
|
+
this.editableTop = event.clientY - this.editableElement.offsetTop;
|
|
12592
|
+
return;
|
|
12593
|
+
}
|
|
12594
|
+
this.editableTop = null;
|
|
12595
|
+
}
|
|
12596
|
+
onDragStart(event) {
|
|
12597
|
+
this.isDraging = true;
|
|
12598
|
+
this.dragChange.emit(this.isDraging);
|
|
12599
|
+
this.dragSnapshotContent = document.querySelector('.drag-snapshot-container');
|
|
12600
|
+
this.dragSnapshotContent.className = 'the-editor-typo drag-snapshot-container';
|
|
12601
|
+
this.dragSnapshotContent.appendChild(this.dragElement.cloneNode(true));
|
|
12602
|
+
this.dragElement.style.opacity = '0.3';
|
|
12603
|
+
}
|
|
12604
|
+
onDragEnd(event) {
|
|
12605
|
+
this.dragElement.style.opacity = '';
|
|
12606
|
+
this.isDraging = false;
|
|
12607
|
+
this.setVisibility(false);
|
|
12608
|
+
this.resetDragSnapshotContent();
|
|
12609
|
+
this.dragChange.emit(this.isDraging);
|
|
12610
|
+
}
|
|
12611
|
+
onDrop(event) {
|
|
12612
|
+
event.preventDefault();
|
|
12613
|
+
if (this.isDraging) {
|
|
12614
|
+
moveDragNode(this.editor, this.dragNode, event);
|
|
12615
|
+
}
|
|
12616
|
+
}
|
|
12617
|
+
onDragover(event) {
|
|
12618
|
+
event.preventDefault();
|
|
12619
|
+
if (this.isDraging && !this.isScrolling) {
|
|
12620
|
+
this.getEditableTop(event);
|
|
12621
|
+
const offsetWidth = document.documentElement.offsetWidth;
|
|
12622
|
+
const { left: editorLeft, top: editorTop, height } = this.editableElement.getBoundingClientRect();
|
|
12623
|
+
let top = 0;
|
|
12624
|
+
let left = 0;
|
|
12625
|
+
if (editorLeft > 0) {
|
|
12626
|
+
if (event.clientX + this.dragElementWidth / 2 > offsetWidth) {
|
|
12627
|
+
left = event.pageX - editorLeft - this.elementRef.nativeElement.offsetWidth;
|
|
12628
|
+
}
|
|
12629
|
+
else {
|
|
12630
|
+
left = Math.max(event.pageX - editorLeft, -editorLeft) + 10;
|
|
12631
|
+
}
|
|
12632
|
+
}
|
|
12633
|
+
let paddingTop = 0; // paddingTop: 编辑器距离顶部的距离
|
|
12634
|
+
if (editorTop >= 0) {
|
|
12635
|
+
// 无滚动情况下
|
|
12636
|
+
top = event.clientY - this.editableElement.offsetTop;
|
|
12637
|
+
paddingTop = editorTop - this.editableElement.offsetTop;
|
|
12638
|
+
}
|
|
12639
|
+
else {
|
|
12640
|
+
// 有滚动距离
|
|
12641
|
+
top = Math.abs(editorTop) + event.clientY; // 滚动距离 + 鼠标clientY
|
|
12642
|
+
paddingTop = event.pageY - this.editableElement.offsetTop - top;
|
|
12643
|
+
// 防止底部出现滚动条
|
|
12644
|
+
if (paddingTop < height - top) {
|
|
12645
|
+
top = top + paddingTop;
|
|
12646
|
+
}
|
|
12647
|
+
}
|
|
12648
|
+
this.updateDndContainerPosition(left + 'px', top + 'px');
|
|
12649
|
+
this.setSnapshotStyle(event);
|
|
12650
|
+
this.setDropThumbLine(event);
|
|
12651
|
+
}
|
|
12652
|
+
}
|
|
12653
|
+
setDropThumbLine(event) {
|
|
12654
|
+
var _a;
|
|
12655
|
+
let element = getCurrentTarget(this.editor, event);
|
|
12656
|
+
const direction = getHoverDirection(this.editor, event);
|
|
12657
|
+
if (element) {
|
|
12658
|
+
if (direction && direction === 'top') {
|
|
12659
|
+
element = (_a = element.previousElementSibling) === null || _a === void 0 ? void 0 : _a.querySelector('[data-slate-node="element"]');
|
|
12660
|
+
}
|
|
12661
|
+
if (element && isValidDrag(this.editor, this.dragNode.node, element)) {
|
|
12662
|
+
element.appendChild(this.dropThumbLine);
|
|
12663
|
+
}
|
|
12664
|
+
}
|
|
12665
|
+
}
|
|
12666
|
+
setDragIcon(event) {
|
|
12667
|
+
if (!this.isDraging) {
|
|
12668
|
+
const nodeEntry = findNodeEntryByPoint(this.editor, event.x, event.y, 'highest');
|
|
12669
|
+
if (nodeEntry && !Editor.isEmpty(this.editor, nodeEntry[0])) {
|
|
12670
|
+
const rootNode = AngularEditor.toDOMNode(this.editor, nodeEntry[0]);
|
|
12671
|
+
this.dragNode = {
|
|
12672
|
+
node: nodeEntry[0],
|
|
12673
|
+
path: nodeEntry[1]
|
|
12674
|
+
};
|
|
12675
|
+
this.dragElement = rootNode;
|
|
12676
|
+
let lineHeight = coercePixelsFromCssValue(window.getComputedStyle(rootNode)['lineHeight']);
|
|
12677
|
+
const offsetTop = rootNode.offsetTop + rootNode.offsetParent.offsetTop + (lineHeight - DRAG_ICON_SIZE) / 2;
|
|
12678
|
+
const offsetLeft = rootNode.offsetLeft + rootNode.offsetParent.offsetLeft;
|
|
12679
|
+
this.updateDndContainerPosition(offsetLeft - DRAG_ICON_SIZE - DRAG_ICON_OFFSET + 'px', offsetTop + 'px');
|
|
12680
|
+
this.setVisibility(true);
|
|
12681
|
+
}
|
|
12682
|
+
else {
|
|
12683
|
+
this.setVisibility(false);
|
|
12684
|
+
}
|
|
12685
|
+
}
|
|
12686
|
+
}
|
|
12687
|
+
setSnapshotStyle(event) {
|
|
12688
|
+
const { width, height } = this.dragElement.getBoundingClientRect();
|
|
12689
|
+
this.dragElementHeight = height;
|
|
12690
|
+
this.dragElementWidth = width;
|
|
12691
|
+
let dragSnapshotContentStyle = `visibility: visible; width: ${width + SNAPSHOT_PADDING_WIDTH * 2}px;`;
|
|
12692
|
+
if (height > SNAPSHOT_LIMI_HEIGHT) {
|
|
12693
|
+
dragSnapshotContentStyle = dragSnapshotContentStyle + 'transform: scale(0.45);';
|
|
12694
|
+
this.dragElementHeight = this.dragElementHeight * 0.45;
|
|
12695
|
+
this.dragElementWidth = this.dragElementWidth * 0.45;
|
|
12696
|
+
}
|
|
12697
|
+
let snapshotTop = 0;
|
|
12698
|
+
let snapshotLeft = 0;
|
|
12699
|
+
// 上下移动:超出屏幕高度,重新设置snapshot的位置
|
|
12700
|
+
if (event.clientY + this.dragElementHeight > document.documentElement.offsetHeight) {
|
|
12701
|
+
snapshotTop = this.dragElementHeight;
|
|
12702
|
+
}
|
|
12703
|
+
else {
|
|
12704
|
+
snapshotTop = 0;
|
|
12705
|
+
}
|
|
12706
|
+
// 左右移动:超出屏幕宽度,重新设置snapshot的位置
|
|
12707
|
+
if (event.clientX + this.dragElementWidth / 2 > document.documentElement.offsetWidth) {
|
|
12708
|
+
snapshotLeft = this.dragElementWidth;
|
|
12709
|
+
}
|
|
12710
|
+
else {
|
|
12711
|
+
snapshotLeft = 0;
|
|
12712
|
+
}
|
|
12713
|
+
dragSnapshotContentStyle = dragSnapshotContentStyle + `top: ${-snapshotTop}px; left: ${-snapshotLeft}px;`;
|
|
12714
|
+
this.dragSnapshotContent.setAttribute('style', dragSnapshotContentStyle);
|
|
12715
|
+
}
|
|
12716
|
+
resetDragSnapshotContent() {
|
|
12717
|
+
this.dragSnapshotContent.className = 'drag-snapshot-container';
|
|
12718
|
+
this.dragSnapshotContent.setAttribute('style', '');
|
|
12719
|
+
this.dragSnapshotContent.innerHTML = '';
|
|
12720
|
+
}
|
|
12721
|
+
setVisibility(visible = true) {
|
|
12722
|
+
this.nativeElement.parentNode.style.visibility = visible ? 'visible' : 'hidden';
|
|
12723
|
+
}
|
|
12724
|
+
ngOnDestroy() {
|
|
12725
|
+
this.destroy$.next();
|
|
12726
|
+
this.destroy$.complete();
|
|
12727
|
+
}
|
|
12728
|
+
}
|
|
12729
|
+
TheDndComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheDndComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12730
|
+
TheDndComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheDndComponent, selector: "[theDnd]", inputs: { editor: "editor" }, outputs: { dragChange: "dragChange" }, host: { classAttribute: "the-drag-drop" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div\n draggable=\"true\"\n class=\"the-drag-drop-icon\"\n [ngStyle]=\"{ opacity: isDraging ? 0 : '' }\"\n (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\"\n>\n <thy-icon thyIconName=\"drag\"> </thy-icon>\n</div>\n", components: [{ type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
12731
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheDndComponent, decorators: [{
|
|
12732
|
+
type: Component,
|
|
12733
|
+
args: [{
|
|
12734
|
+
selector: '[theDnd]',
|
|
12735
|
+
templateUrl: './dnd.component.html',
|
|
12736
|
+
host: {
|
|
12737
|
+
class: 'the-drag-drop'
|
|
12738
|
+
}
|
|
12739
|
+
}]
|
|
12740
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { editor: [{
|
|
12741
|
+
type: Input
|
|
12742
|
+
}], dragChange: [{
|
|
12743
|
+
type: Output
|
|
12744
|
+
}], content: [{
|
|
12745
|
+
type: ViewChild,
|
|
12746
|
+
args: ['content', { static: false }]
|
|
12747
|
+
}] } });
|
|
12748
|
+
|
|
12171
12749
|
class ElementStylePipe {
|
|
12172
12750
|
transform(element, align) {
|
|
12173
12751
|
const style = {};
|
|
@@ -12236,7 +12814,7 @@ class TheTemplateComponent {
|
|
|
12236
12814
|
}
|
|
12237
12815
|
}
|
|
12238
12816
|
TheTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12239
|
-
TheTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTemplateComponent, selector: "the-template,[theTemplate]", viewQueries: [{ propertyName: "paragraphTemplate", first: true, predicate: ["paragraph"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingOneTemplate", first: true, predicate: ["headingOne"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingTwoTemplate", first: true, predicate: ["headingTwo"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingThreeTemplate", first: true, predicate: ["headingThree"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingFourTemplate", first: true, predicate: ["headingFour"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingFiveTemplate", first: true, predicate: ["headingFive"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingSixTemplate", first: true, predicate: ["headingSix"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\n</ng-template>\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\n <h1\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h1>\n</ng-template>\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\n <h2\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h2>\n</ng-template>\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\n <h3\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h3>\n</ng-template>\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\n <h4\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h4>\n</ng-template>\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\n <h5\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h5>\n</ng-template>\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\n <h6\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h6>\n</ng-template>\n", components: [{ type: TheDefaultElementComponent, selector: "[theDefaultElement]" }], directives: [{ type:
|
|
12817
|
+
TheTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTemplateComponent, selector: "the-template,[theTemplate]", viewQueries: [{ propertyName: "paragraphTemplate", first: true, predicate: ["paragraph"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingOneTemplate", first: true, predicate: ["headingOne"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingTwoTemplate", first: true, predicate: ["headingTwo"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingThreeTemplate", first: true, predicate: ["headingThree"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingFourTemplate", first: true, predicate: ["headingFour"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingFiveTemplate", first: true, predicate: ["headingFive"], descendants: true, read: TemplateRef, static: true }, { propertyName: "headingSixTemplate", first: true, predicate: ["headingSix"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\n</ng-template>\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\n <h1\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h1>\n</ng-template>\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\n <h2\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h2>\n</ng-template>\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\n <h3\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h3>\n</ng-template>\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\n <h4\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h4>\n</ng-template>\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\n <h5\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h5>\n</ng-template>\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\n <h6\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h6>\n</ng-template>\n", components: [{ type: TheDefaultElementComponent, selector: "[theDefaultElement]" }], directives: [{ type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "elementStyle": ElementStylePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12240
12818
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTemplateComponent, decorators: [{
|
|
12241
12819
|
type: Component,
|
|
12242
12820
|
args: [{
|
|
@@ -12372,11 +12950,16 @@ class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
12372
12950
|
this.onSlaDragStart = (event) => { };
|
|
12373
12951
|
this.onSlaDragOver = (event) => { };
|
|
12374
12952
|
this.onDrop = (event) => {
|
|
12375
|
-
|
|
12953
|
+
if (this.isDraging) {
|
|
12954
|
+
event.preventDefault();
|
|
12955
|
+
}
|
|
12376
12956
|
this.theOnDOMEvent.emit({
|
|
12377
12957
|
nativeEvent: event
|
|
12378
12958
|
});
|
|
12379
12959
|
};
|
|
12960
|
+
this.onDragChange = isDraging => {
|
|
12961
|
+
this.isDraging = isDraging;
|
|
12962
|
+
};
|
|
12380
12963
|
}
|
|
12381
12964
|
get theGlobalToolbarInstance() {
|
|
12382
12965
|
return this.theGlobalToolbar ? this.theGlobalToolbar : this.globalToolbarInstance;
|
|
@@ -12618,7 +13201,7 @@ TheEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
|
|
|
12618
13201
|
useExisting: forwardRef(() => TheEditorComponent),
|
|
12619
13202
|
multi: true
|
|
12620
13203
|
}
|
|
12621
|
-
], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }, { propertyName: "quickInsertInstance", first: true, predicate: ["quickInsert"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar\n *ngIf=\"!theOptions?.readonly && theOptions?.inlineToobarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div\n #quickInsert\n theQuickInsert\n [editor]=\"editor\"\n [quickToolbarItems]=\"quickToolbarItems\"\n [isVisible]=\"theOptions?.quickInsertVisible\"\n ></div>\n <the-template #templateInstance></the-template>\n</div>\n", components: [{ type: TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { type: i1.SlateEditableComponent, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { type: TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { type: TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: ["editor", "quickToolbarItems", "isVisible"] }, { type: TheTemplateComponent, selector: "the-template,[theTemplate]" }], directives: [{ type:
|
|
13204
|
+
], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }, { propertyName: "quickInsertInstance", first: true, predicate: ["quickInsert"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar\n *ngIf=\"!theOptions?.readonly && theOptions?.inlineToobarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div\n #quickInsert\n theQuickInsert\n [editor]=\"editor\"\n [quickToolbarItems]=\"quickToolbarItems\"\n [isVisible]=\"theOptions?.quickInsertVisible\"\n ></div>\n <div class=\"drag-container\">\n <div #drag theDnd [editor]=\"editor\" (dragChange)=\"onDragChange($event)\"></div>\n <div class=\"drag-snapshot-container\"></div>\n </div>\n <the-template #templateInstance></the-template>\n</div>\n", components: [{ type: TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { type: i1.SlateEditableComponent, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { type: TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { type: TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: ["editor", "quickToolbarItems", "isVisible"] }, { type: TheDndComponent, selector: "[theDnd]", inputs: ["editor"], outputs: ["dragChange"] }, { type: TheTemplateComponent, selector: "the-template,[theTemplate]" }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12622
13205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheEditorComponent, decorators: [{
|
|
12623
13206
|
type: Component,
|
|
12624
13207
|
args: [{
|
|
@@ -12780,7 +13363,7 @@ class TheToolbarGroupComponent {
|
|
|
12780
13363
|
}
|
|
12781
13364
|
}
|
|
12782
13365
|
TheToolbarGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarGroupComponent, deps: [{ token: i0.ElementRef }, { token: i1$3.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12783
|
-
TheToolbarGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarGroupComponent, selector: "the-toolbar-group", inputs: { menus: "menus", item: "item" }, host: { listeners: { "mousedown": "mousedownHandler($event)", "click": "clickHandle($event)" }, classAttribute: "the-toolbar-group" }, viewQueries: [{ propertyName: "groupTemplate", first: true, predicate: ["groupTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }], directives: [{ type: i5
|
|
13366
|
+
TheToolbarGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarGroupComponent, selector: "the-toolbar-group", inputs: { menus: "menus", item: "item" }, host: { listeners: { "mousedown": "mousedownHandler($event)", "click": "clickHandle($event)" }, classAttribute: "the-toolbar-group" }, viewQueries: [{ propertyName: "groupTemplate", first: true, predicate: ["groupTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }], directives: [{ type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
|
|
12784
13367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarGroupComponent, decorators: [{
|
|
12785
13368
|
type: Component,
|
|
12786
13369
|
args: [{
|
|
@@ -12863,7 +13446,8 @@ const PLUGIN_COMPONENTS = [
|
|
|
12863
13446
|
TheTableComponent,
|
|
12864
13447
|
TheTableRowComponent,
|
|
12865
13448
|
TheTdComponent,
|
|
12866
|
-
TheInlineCodeComponent
|
|
13449
|
+
TheInlineCodeComponent,
|
|
13450
|
+
TheDndComponent
|
|
12867
13451
|
];
|
|
12868
13452
|
const PIPES = [ElementStylePipe, ElementClassPipe];
|
|
12869
13453
|
class TheEditorModule {
|
|
@@ -12904,7 +13488,8 @@ TheEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
12904
13488
|
TheTableComponent,
|
|
12905
13489
|
TheTableRowComponent,
|
|
12906
13490
|
TheTdComponent,
|
|
12907
|
-
TheInlineCodeComponent
|
|
13491
|
+
TheInlineCodeComponent,
|
|
13492
|
+
TheDndComponent], imports: [CommonModule, SlateModule, FormsModule, ThyIconModule,
|
|
12908
13493
|
ThyAvatarModule,
|
|
12909
13494
|
ThyNavModule,
|
|
12910
13495
|
ThyFormModule,
|
|
@@ -12953,5 +13538,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
12953
13538
|
* Generated bundle index. Do not edit.
|
|
12954
13539
|
*/
|
|
12955
13540
|
|
|
12956
|
-
export { ALIGN_BLOCK_TYPES, A_TAG_REL_ATTR, AlignEditor, Alignment, BLOCK_DELETEBACKWARD_TYPES, BlockquoteEditor, CLIPBOARD_FORMAT_KEY, CODEMIRROR_PADDING_TOP, CODE_MODES, COMPONENTS, CONTAINER_BLOCKS, CONTROL_KEY, CodeEditor, CodeMode, ColorEditor, DEFAULT_LANGUAGE, DEFAULT_SCROLL_CONTAINER, DefaultElementOptions, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition, DefaultQuickToolbarDefinition, DropdownMode, ELEMENT_UNIQUE_ID, ElementKinds, ErrorCodes, FontSizeTypes, FontSizes, HEADING_TYPES, HeadingEditor, HrEditor, IS_MAC, ImageEditor, Indents, LINK_DEFAULT_TEXT, LIST_BLOCK_TYPES, LinkEditor, ListEditor, MarkEditor, MarkProps, MarkTypes, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE, PLUGIN_COMPONENTS, QUICK_TOOLBAR_HOTKEY, QuickInsertEditor, STANDARD_HEADING_TYPES, TAB_SPACE, THE_CODE_MODE_PROVIDER, THE_CODE_MODE_TOKEN, THE_EDITOR_CONVERSION_HINT_REF, THE_EDITOR_QUICK_TOOLBAR_REF, THE_EDITOR_UUID, THE_INLINE_TOOLBAR_TYPES, THE_UPLOAD_SERVICE_TOKEN, TableEditor, TheBaseElementComponent, TheCodeConfig, TheContextService, TheDataMode, TheDefaultElementComponent, TheEditor, TheEditorComponent, TheEditorModule, TheImageComponent, TheMode, index$1 as TheQueries, TheToolbarBaseItemComponent, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarGroupComponent, TheToolbarGroupToken, TheToolbarItemComponent, TheToolbarService, index as TheTransforms, TodoItemEditor, ToolbarActionTypes, ToolbarAlignment, ToolbarItemMode, ToolbarItemType, ToolbarMoreGroup, VOID_BLOCK_TYPES, VerticalAlignEditor, VerticalAlignment, ZERO_WIDTH_CHAR, createEmptyParagraph, dataDeserialize, dataSerializing, getToolbarClass, htmlToTheia, inValidTypes, isCleanEmptyParagraph, plainToTheia, toolbarCompose, withTheEditor };
|
|
13541
|
+
export { ALIGN_BLOCK_TYPES, A_TAG_REL_ATTR, AlignEditor, Alignment, BLOCK_DELETEBACKWARD_TYPES, BlockquoteEditor, CLIPBOARD_FORMAT_KEY, CODEMIRROR_PADDING_TOP, CODE_MODES, COMPONENTS, CONTAINER_BLOCKS, CONTROL_KEY, CodeEditor, CodeMode, ColorEditor, DEFAULT_LANGUAGE, DEFAULT_SCROLL_CONTAINER, DROP_THUMB_LINE, DefaultElementOptions, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition, DefaultQuickToolbarDefinition, DropdownMode, ELEMENT_UNIQUE_ID, ElementKinds, ErrorCodes, FontSizeTypes, FontSizes, HEADING_TYPES, HeadingEditor, HrEditor, IS_MAC, ImageEditor, Indents, LINK_DEFAULT_TEXT, LIST_BLOCK_TYPES, LayoutTypes, LinkEditor, ListEditor, MarkEditor, MarkProps, MarkTypes, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE, PLUGIN_COMPONENTS, QUICK_TOOLBAR_HOTKEY, QuickInsertEditor, STANDARD_HEADING_TYPES, TAB_SPACE, THE_CODE_MODE_PROVIDER, THE_CODE_MODE_TOKEN, THE_EDITOR_CONVERSION_HINT_REF, THE_EDITOR_QUICK_TOOLBAR_REF, THE_EDITOR_UUID, THE_INLINE_TOOLBAR_TYPES, THE_UPLOAD_SERVICE_TOKEN, TableEditor, TheBaseElementComponent, TheCodeConfig, TheContextService, TheDataMode, TheDefaultElementComponent, TheEditor, TheEditorComponent, TheEditorModule, TheImageComponent, TheMode, index$1 as TheQueries, TheToolbarBaseItemComponent, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarGroupComponent, TheToolbarGroupToken, TheToolbarItemComponent, TheToolbarService, index as TheTransforms, TodoItemEditor, ToolbarActionTypes, ToolbarAlignment, ToolbarItemMode, ToolbarItemType, ToolbarMoreGroup, VOID_BLOCK_TYPES, VerticalAlignEditor, VerticalAlignment, ZERO_WIDTH_CHAR, createEmptyParagraph, dataDeserialize, dataSerializing, getToolbarClass, htmlToTheia, inValidTypes, isCleanEmptyParagraph, plainToTheia, toolbarCompose, withTheEditor };
|
|
12957
13542
|
//# sourceMappingURL=worktile-theia.js.map
|