@deeksha2309/sunbird-collection-editor 8.0.7
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/README.md +24 -0
- package/esm2022/lib/collection-editor-cursor.service.mjs +3 -0
- package/esm2022/lib/collection-editor-library.component.mjs +16 -0
- package/esm2022/lib/collection-editor-library.module.mjs +137 -0
- package/esm2022/lib/components/answer/answer.component.mjs +43 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +325 -0
- package/esm2022/lib/components/asset-browser/asset-browser.data.mjs +53 -0
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +191 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +895 -0
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +43 -0
- package/esm2022/lib/components/contentplayer-page/contentplayer-page.component.mjs +351 -0
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +178 -0
- package/esm2022/lib/components/dialcode/dialcode.component.mjs +182 -0
- package/esm2022/lib/components/editor/editor.component.mjs +1125 -0
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +529 -0
- package/esm2022/lib/components/header/header.component.mjs +123 -0
- package/esm2022/lib/components/library/library.component.mjs +242 -0
- package/esm2022/lib/components/library-filter/library-filter.component.mjs +149 -0
- package/esm2022/lib/components/library-list/library-list.component.mjs +92 -0
- package/esm2022/lib/components/library-player/library-player.component.mjs +62 -0
- package/esm2022/lib/components/manage-collaborator/manage-collaborator.component.mjs +256 -0
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +377 -0
- package/esm2022/lib/components/options/options.component.mjs +144 -0
- package/esm2022/lib/components/plain-tree/plain-tree.component.mjs +125 -0
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +46 -0
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +67 -0
- package/esm2022/lib/components/quality-params-modal/quality-params-modal.component.mjs +52 -0
- package/esm2022/lib/components/question/question.component.mjs +1360 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +73 -0
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +84 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +143 -0
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +26 -0
- package/esm2022/lib/components/template/template.component.mjs +42 -0
- package/esm2022/lib/components/term-and-condition/term-and-condition.component.mjs +68 -0
- package/esm2022/lib/directives/telemetry-interact/telemetry-interact.directive.mjs +33 -0
- package/esm2022/lib/interfaces/McqForm.mjs +29 -0
- package/esm2022/lib/interfaces/editor.mjs +2 -0
- package/esm2022/lib/interfaces/framework.mjs +2 -0
- package/esm2022/lib/interfaces/httpOptions.mjs +2 -0
- package/esm2022/lib/interfaces/requestParam.mjs +2 -0
- package/esm2022/lib/interfaces/serverResponse.mjs +2 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
- package/esm2022/lib/services/config/category.config.json +8 -0
- package/esm2022/lib/services/config/config.service.mjs +27 -0
- package/esm2022/lib/services/config/editor.config.json +31 -0
- package/esm2022/lib/services/config/label.config.json +314 -0
- package/esm2022/lib/services/config/player.config.json +96 -0
- package/esm2022/lib/services/config/url.config.json +69 -0
- package/esm2022/lib/services/data/data.service.mjs +192 -0
- package/esm2022/lib/services/dialcode/dialcode.service.mjs +309 -0
- package/esm2022/lib/services/editor/editor.service.mjs +682 -0
- package/esm2022/lib/services/framework/framework.service.mjs +106 -0
- package/esm2022/lib/services/helper/helper.service.mjs +160 -0
- package/esm2022/lib/services/player/player.service.mjs +99 -0
- package/esm2022/lib/services/public-data/public-data.service.mjs +21 -0
- package/esm2022/lib/services/question/question.service.mjs +167 -0
- package/esm2022/lib/services/telemetry/telemetry.service.mjs +120 -0
- package/esm2022/lib/services/toaster/toaster.service.mjs +105 -0
- package/esm2022/lib/services/tree/tree.service.mjs +284 -0
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +5 -0
- package/esm2022/public-api.mjs +4 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs +10138 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/assets/.gitkeep +0 -0
- package/lib/assets/images/MCQ.png +0 -0
- package/lib/assets/images/Spin.gif +0 -0
- package/lib/assets/images/bulkuploadfile.png +0 -0
- package/lib/assets/images/cancel-sign copy.png +0 -0
- package/lib/assets/images/cancel-sign.png +0 -0
- package/lib/assets/images/emptyResult.svg +1 -0
- package/lib/assets/images/icons-rtl.gif +0 -0
- package/lib/assets/images/icons.gif +0 -0
- package/lib/assets/images/imageicon.svg +16 -0
- package/lib/assets/images/imageicon_blue.svg +16 -0
- package/lib/assets/images/layoutoneicon.svg +16 -0
- package/lib/assets/images/layoutoneicon_blue.svg +16 -0
- package/lib/assets/images/layoutthreeicon.svg +18 -0
- package/lib/assets/images/layoutthreeicon_blue.svg +18 -0
- package/lib/assets/images/layouttwoicon.svg +18 -0
- package/lib/assets/images/layouttwoicon_blue.svg +18 -0
- package/lib/assets/images/leftalignicon.svg +17 -0
- package/lib/assets/images/leftalignicon_blue.svg +17 -0
- package/lib/assets/images/loader.gif +0 -0
- package/lib/assets/images/loader.svg +1 -0
- package/lib/assets/images/loading.gif +0 -0
- package/lib/assets/images/middlealignicon.svg +17 -0
- package/lib/assets/images/middlealignicon_blue.svg +17 -0
- package/lib/assets/images/question_collection.svg +18 -0
- package/lib/assets/images/rightalignicon.svg +17 -0
- package/lib/assets/images/rightalignicon_blue.svg +17 -0
- package/lib/assets/images/vline-rtl.gif +0 -0
- package/lib/assets/images/vline.gif +0 -0
- package/lib/assets/images/writing.png +0 -0
- package/lib/collection-editor-cursor.service.d.ts +5 -0
- package/lib/collection-editor-cursor.service.d.ts.map +1 -0
- package/lib/collection-editor-library.component.d.ts +9 -0
- package/lib/collection-editor-library.component.d.ts.map +1 -0
- package/lib/collection-editor-library.module.d.ts +50 -0
- package/lib/collection-editor-library.module.d.ts.map +1 -0
- package/lib/components/answer/answer.component.d.ts +24 -0
- package/lib/components/answer/answer.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts +81 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts +52 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts.map +1 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts +38 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +161 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts +18 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts.map +1 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts +54 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts.map +1 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts +42 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts.map +1 -0
- package/lib/components/dialcode/dialcode.component.d.ts +48 -0
- package/lib/components/dialcode/dialcode.component.d.ts.map +1 -0
- package/lib/components/editor/editor.component.d.ts +146 -0
- package/lib/components/editor/editor.component.d.ts.map +1 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +77 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -0
- package/lib/components/header/header.component.d.ts +46 -0
- package/lib/components/header/header.component.d.ts.map +1 -0
- package/lib/components/library/library.component.d.ts +69 -0
- package/lib/components/library/library.component.d.ts.map +1 -0
- package/lib/components/library-filter/library-filter.component.d.ts +47 -0
- package/lib/components/library-filter/library-filter.component.d.ts.map +1 -0
- package/lib/components/library-list/library-list.component.d.ts +32 -0
- package/lib/components/library-list/library-list.component.d.ts.map +1 -0
- package/lib/components/library-player/library-player.component.d.ts +24 -0
- package/lib/components/library-player/library-player.component.d.ts.map +1 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts +75 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts.map +1 -0
- package/lib/components/meta-form/meta-form.component.d.ts +51 -0
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -0
- package/lib/components/options/options.component.d.ts +53 -0
- package/lib/components/options/options.component.d.ts.map +1 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts +20 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts.map +1 -0
- package/lib/components/progress-status/progress-status.component.d.ts +25 -0
- package/lib/components/progress-status/progress-status.component.d.ts.map +1 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +23 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts +24 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts.map +1 -0
- package/lib/components/question/question.component.d.ts +215 -0
- package/lib/components/question/question.component.d.ts.map +1 -0
- package/lib/components/quml-player/quml-player.component.d.ts +26 -0
- package/lib/components/quml-player/quml-player.component.d.ts.map +1 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts +31 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts.map +1 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts +45 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts.map +1 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +13 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/components/template/template.component.d.ts +21 -0
- package/lib/components/template/template.component.d.ts.map +1 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts +26 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts.map +1 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts +27 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts.map +1 -0
- package/lib/interfaces/McqForm.d.ts +32 -0
- package/lib/interfaces/McqForm.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +78 -0
- package/lib/interfaces/editor.d.ts.map +1 -0
- package/lib/interfaces/framework.d.ts +46 -0
- package/lib/interfaces/framework.d.ts.map +1 -0
- package/lib/interfaces/httpOptions.d.ts +35 -0
- package/lib/interfaces/httpOptions.d.ts.map +1 -0
- package/lib/interfaces/requestParam.d.ts +24 -0
- package/lib/interfaces/requestParam.d.ts.map +1 -0
- package/lib/interfaces/serverResponse.d.ts +38 -0
- package/lib/interfaces/serverResponse.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +11 -0
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
- package/lib/services/config/config.service.d.ts +13 -0
- package/lib/services/config/config.service.d.ts.map +1 -0
- package/lib/services/data/data.service.d.ts +85 -0
- package/lib/services/data/data.service.d.ts.map +1 -0
- package/lib/services/dialcode/dialcode.service.d.ts +36 -0
- package/lib/services/dialcode/dialcode.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +150 -0
- package/lib/services/editor/editor.service.d.ts.map +1 -0
- package/lib/services/framework/framework.service.d.ts +35 -0
- package/lib/services/framework/framework.service.d.ts.map +1 -0
- package/lib/services/helper/helper.service.d.ts +41 -0
- package/lib/services/helper/helper.service.d.ts.map +1 -0
- package/lib/services/player/player.service.d.ts +33 -0
- package/lib/services/player/player.service.d.ts.map +1 -0
- package/lib/services/public-data/public-data.service.d.ts +15 -0
- package/lib/services/public-data/public-data.service.d.ts.map +1 -0
- package/lib/services/question/question.service.d.ts +30 -0
- package/lib/services/question/question.service.d.ts.map +1 -0
- package/lib/services/telemetry/telemetry.service.d.ts +45 -0
- package/lib/services/telemetry/telemetry.service.d.ts.map +1 -0
- package/lib/services/toaster/toaster.service.d.ts +50 -0
- package/lib/services/toaster/toaster.service.d.ts.map +1 -0
- package/lib/services/tree/tree.service.d.ts +51 -0
- package/lib/services/tree/tree.service.d.ts.map +1 -0
- package/package.json +32 -0
- package/project-sunbird-sunbird-collection-editor.d.ts.map +1 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import 'jquery.fancytree';
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
+
import * as _ from 'lodash-es';
|
|
5
|
+
import { BehaviorSubject } from 'rxjs';
|
|
6
|
+
import { skipWhile } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../toaster/toaster.service";
|
|
9
|
+
import * as i2 from "../helper/helper.service";
|
|
10
|
+
import * as i3 from "../config/config.service";
|
|
11
|
+
export class TreeService {
|
|
12
|
+
constructor(toasterService, helperService, configService) {
|
|
13
|
+
this.toasterService = toasterService;
|
|
14
|
+
this.helperService = helperService;
|
|
15
|
+
this.configService = configService;
|
|
16
|
+
this.treeCache = {
|
|
17
|
+
nodesModified: {},
|
|
18
|
+
nodes: []
|
|
19
|
+
};
|
|
20
|
+
// tslint:disable-next-line:variable-name
|
|
21
|
+
this._treeStatus$ = new BehaviorSubject(undefined);
|
|
22
|
+
this.treeStatus$ = this._treeStatus$
|
|
23
|
+
.asObservable().pipe(skipWhile(status => status === undefined || status === null));
|
|
24
|
+
}
|
|
25
|
+
initialize(editorConfig) {
|
|
26
|
+
this.config = editorConfig.config;
|
|
27
|
+
this.omitFalseyProps = _.get(this.configService.editorConfig, 'omitFalseyProperties');
|
|
28
|
+
}
|
|
29
|
+
nextTreeStatus(status) {
|
|
30
|
+
this._treeStatus$.next(status);
|
|
31
|
+
}
|
|
32
|
+
setTreeElement(el) {
|
|
33
|
+
this.treeNativeElement = el;
|
|
34
|
+
}
|
|
35
|
+
updateNode(metadata, nodeToBeUpdated, primaryCategory) {
|
|
36
|
+
this.setNodeTitle(metadata.name);
|
|
37
|
+
this.updateTreeNodeMetadata(metadata, nodeToBeUpdated, primaryCategory);
|
|
38
|
+
}
|
|
39
|
+
updateAppIcon(appIconUrl) {
|
|
40
|
+
const activeNode = this.getActiveNode();
|
|
41
|
+
const nodeId = activeNode.data.id;
|
|
42
|
+
activeNode.data.metadata = { ...activeNode.data.metadata, appIcon: appIconUrl };
|
|
43
|
+
this.setTreeCache(nodeId, { appIcon: appIconUrl }, activeNode.data);
|
|
44
|
+
}
|
|
45
|
+
updateMetaDataProperty(key, value) {
|
|
46
|
+
const node = this.getFirstChild();
|
|
47
|
+
const nodeId = node.data.id;
|
|
48
|
+
node.data.metadata = { ...node.data.metadata, [key]: value };
|
|
49
|
+
this.setTreeCache(nodeId, _.merge({}, { [key]: value }, _.pick(node.data.metadata, ['objectType'])));
|
|
50
|
+
}
|
|
51
|
+
updateTreeNodeMetadata(newData, nodeToBeUpdated, primaryCategory, objectType) {
|
|
52
|
+
const activeNode = !_.isUndefined(nodeToBeUpdated) ? this.getNodeById(nodeToBeUpdated) : this.getActiveNode();
|
|
53
|
+
const nodeId = nodeToBeUpdated || activeNode.data.id;
|
|
54
|
+
if (newData.instructions) {
|
|
55
|
+
newData.instructions = { default: newData.instructions };
|
|
56
|
+
}
|
|
57
|
+
activeNode.data.metadata = { ...activeNode.data.metadata, ...newData };
|
|
58
|
+
activeNode.title = newData.name;
|
|
59
|
+
newData = _.omitBy(newData, (v, key) => _.isUndefined(v) || _.isNull(v) || (v === '' && _.includes(this.omitFalseyProps, key)));
|
|
60
|
+
newData = _.merge({}, newData, _.pick(activeNode.data.metadata, ['objectType', 'contentType', 'primaryCategory']));
|
|
61
|
+
const attributions = newData.attributions;
|
|
62
|
+
if (attributions && _.isString(attributions)) {
|
|
63
|
+
newData.attributions = attributions.split(',');
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
newData.attributions = [];
|
|
67
|
+
}
|
|
68
|
+
const { maxTime, warningTime, copyrightYear } = newData;
|
|
69
|
+
if (copyrightYear) {
|
|
70
|
+
newData.copyrightYear = _.toNumber(copyrightYear);
|
|
71
|
+
}
|
|
72
|
+
if (objectType) {
|
|
73
|
+
newData.objectType = objectType;
|
|
74
|
+
}
|
|
75
|
+
const timeLimits = {};
|
|
76
|
+
if (maxTime) {
|
|
77
|
+
timeLimits.maxTime = this.helperService.hmsToSeconds(maxTime);
|
|
78
|
+
}
|
|
79
|
+
if (warningTime) {
|
|
80
|
+
timeLimits.warningTime = this.helperService.hmsToSeconds(warningTime);
|
|
81
|
+
}
|
|
82
|
+
if (!_.isEmpty(timeLimits)) {
|
|
83
|
+
newData.timeLimits = timeLimits;
|
|
84
|
+
}
|
|
85
|
+
delete newData.maxTime;
|
|
86
|
+
delete newData.warningTime;
|
|
87
|
+
this.setTreeCache(nodeId, newData, activeNode.data);
|
|
88
|
+
}
|
|
89
|
+
addNode(createType) {
|
|
90
|
+
let newNode;
|
|
91
|
+
const selectedNode = this.getActiveNode();
|
|
92
|
+
// tslint:disable-next-line:max-line-length
|
|
93
|
+
const nodeConfig = (createType === 'sibling') ? this.config.hierarchy[`level${selectedNode.getLevel() - 1}`] : this.config.hierarchy[`level${selectedNode.getLevel()}`];
|
|
94
|
+
const uniqueId = uuidv4();
|
|
95
|
+
const nodeTitle = _.get(nodeConfig, 'name');
|
|
96
|
+
const node = {
|
|
97
|
+
id: uniqueId,
|
|
98
|
+
title: nodeTitle,
|
|
99
|
+
tooltip: nodeTitle,
|
|
100
|
+
...(nodeConfig.contentType && { contentType: nodeConfig.contentType }),
|
|
101
|
+
primaryCategory: _.get(nodeConfig, 'primaryCategory'),
|
|
102
|
+
objectType: _.get(this.config, 'objectType'),
|
|
103
|
+
root: false,
|
|
104
|
+
folder: true,
|
|
105
|
+
icon: _.get(nodeConfig, 'iconClass'),
|
|
106
|
+
metadata: {
|
|
107
|
+
mimeType: _.get(nodeConfig, 'mimeType'),
|
|
108
|
+
code: uniqueId,
|
|
109
|
+
name: nodeTitle,
|
|
110
|
+
visibility: 'Parent'
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
node.metadata = _.merge({}, node.metadata, _.pick(node, ['contentType', 'objectType', 'primaryCategory']));
|
|
114
|
+
newNode = (createType === 'sibling') ? selectedNode.appendSibling(node) : selectedNode.addChildren(node);
|
|
115
|
+
this.setTreeCache(node.id, node.metadata);
|
|
116
|
+
newNode.setActive();
|
|
117
|
+
selectedNode.setExpanded();
|
|
118
|
+
$('span.fancytree-title').attr('style', 'width:11em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden');
|
|
119
|
+
$(this.treeNativeElement).scrollLeft($('.fancytree-lastsib').width());
|
|
120
|
+
$(this.treeNativeElement).scrollTop($('.fancytree-lastsib').height());
|
|
121
|
+
this.nextTreeStatus('added');
|
|
122
|
+
}
|
|
123
|
+
removeNode() {
|
|
124
|
+
const selectedNode = this.getActiveNode();
|
|
125
|
+
const afterDeleteNode = selectedNode.getPrevSibling() ? selectedNode.getPrevSibling() : selectedNode.getParent();
|
|
126
|
+
this.setActiveNode(afterDeleteNode);
|
|
127
|
+
selectedNode.remove();
|
|
128
|
+
this.clearTreeCache(selectedNode.data);
|
|
129
|
+
$('span.fancytree-title').attr('style', 'width:11em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden');
|
|
130
|
+
$(this.treeNativeElement).scrollLeft($('.fancytree-lastsib').width());
|
|
131
|
+
$(this.treeNativeElement).scrollTop($('.fancytree-lastsib').height());
|
|
132
|
+
this.nextTreeStatus('removed');
|
|
133
|
+
}
|
|
134
|
+
getTreeObject() {
|
|
135
|
+
return $(this.treeNativeElement).fancytree('getTree');
|
|
136
|
+
}
|
|
137
|
+
getActiveNode() {
|
|
138
|
+
let activeNode;
|
|
139
|
+
try {
|
|
140
|
+
activeNode = this.getTreeObject().getActiveNode();
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
activeNode = {};
|
|
144
|
+
}
|
|
145
|
+
return activeNode;
|
|
146
|
+
}
|
|
147
|
+
getParent() {
|
|
148
|
+
const activeNode = this.getActiveNode();
|
|
149
|
+
return activeNode?.getParent ? activeNode.getParent() : null;
|
|
150
|
+
}
|
|
151
|
+
setActiveNode(node) {
|
|
152
|
+
const rootFirstChildNode = this.getFirstChild();
|
|
153
|
+
if (node) {
|
|
154
|
+
node.setActive(true);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
rootFirstChildNode.setActive(true);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
getFirstChild() {
|
|
161
|
+
let treeData;
|
|
162
|
+
try {
|
|
163
|
+
treeData = $(this.treeNativeElement).fancytree('getRootNode').getFirstChild();
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
treeData = {};
|
|
167
|
+
}
|
|
168
|
+
return treeData;
|
|
169
|
+
}
|
|
170
|
+
findNode(nodeId) {
|
|
171
|
+
return this.getTreeObject().findFirst((node) => node.data.id === nodeId);
|
|
172
|
+
}
|
|
173
|
+
expandNode(nodeId) {
|
|
174
|
+
this.findNode(nodeId).setExpanded(true);
|
|
175
|
+
}
|
|
176
|
+
replaceNodeId(identifiers) {
|
|
177
|
+
this.getTreeObject().visit((node) => {
|
|
178
|
+
if (identifiers[node.data.id]) {
|
|
179
|
+
node.data.id = identifiers[node.data.id];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
getNodeById(id) {
|
|
184
|
+
// tslint:disable-next-line:variable-name
|
|
185
|
+
let _node;
|
|
186
|
+
this.getTreeObject().visit((node) => {
|
|
187
|
+
if (node.data.id === id) {
|
|
188
|
+
_node = node;
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return _node;
|
|
192
|
+
}
|
|
193
|
+
// Generate a flat list of node children and sub children
|
|
194
|
+
getChildren() {
|
|
195
|
+
const nodes = [];
|
|
196
|
+
this.getActiveNode().visit((node) => {
|
|
197
|
+
nodes.push(node);
|
|
198
|
+
});
|
|
199
|
+
return nodes;
|
|
200
|
+
}
|
|
201
|
+
highlightNode(nodeId, action) {
|
|
202
|
+
const nodeElem = this.getNodeById(nodeId);
|
|
203
|
+
if (!nodeElem) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (action === 'add') {
|
|
207
|
+
nodeElem.span.childNodes[1].classList.add('highlightNode');
|
|
208
|
+
nodeElem.span.childNodes[2].classList.add('highlightNode');
|
|
209
|
+
}
|
|
210
|
+
else if (action === 'remove') {
|
|
211
|
+
nodeElem.span.childNodes[1].classList.remove('highlightNode');
|
|
212
|
+
nodeElem.span.childNodes[2].classList.remove('highlightNode');
|
|
213
|
+
}
|
|
214
|
+
else { }
|
|
215
|
+
}
|
|
216
|
+
setTreeCache(nodeId, metadata, activeNode) {
|
|
217
|
+
if (this.treeCache.nodesModified[nodeId]) {
|
|
218
|
+
// tslint:disable-next-line:max-line-length
|
|
219
|
+
this.treeCache.nodesModified[nodeId].metadata = _.assign(this.treeCache.nodesModified[nodeId].metadata, _.omit(metadata, 'objectType'));
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
this.treeCache.nodesModified[nodeId] = {
|
|
223
|
+
root: activeNode && activeNode.root ? true : false,
|
|
224
|
+
objectType: metadata.objectType,
|
|
225
|
+
metadata: { ..._.omit(metadata, ['objectType']) },
|
|
226
|
+
...(nodeId.includes('do_') ? { isNew: false } : { isNew: true })
|
|
227
|
+
};
|
|
228
|
+
this.treeCache.nodes.push(nodeId); // To track sequence of modifiation
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
clearTreeCache(node) {
|
|
232
|
+
if (node) {
|
|
233
|
+
delete this.treeCache.nodesModified[node.id];
|
|
234
|
+
_.remove(this.treeCache.nodes, val => val === node.id);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
this.treeCache.nodesModified = {};
|
|
238
|
+
this.treeCache.nodes = [];
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
setNodeTitle(title) {
|
|
242
|
+
if (!title) {
|
|
243
|
+
title = 'Untitled';
|
|
244
|
+
}
|
|
245
|
+
title = this.removeSpecialChars(title);
|
|
246
|
+
this.getActiveNode().applyPatch({ title }).done((a, b) => { });
|
|
247
|
+
$('span.fancytree-title').attr('style', 'width:11em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden');
|
|
248
|
+
}
|
|
249
|
+
removeSpecialChars(text) {
|
|
250
|
+
if (text) {
|
|
251
|
+
// tslint:disable-next-line:quotemark
|
|
252
|
+
const iChars = "!`~@#$^*+=[]\\\'{}|\"<>%/";
|
|
253
|
+
for (let i = 0; i < text.length; i++) {
|
|
254
|
+
if (iChars.indexOf(text.charAt(i)) !== -1) {
|
|
255
|
+
this.toasterService.error('Special character "' + text.charAt(i) + '" is not allowed');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// tslint:disable-next-line:max-line-length
|
|
259
|
+
text = text.replace(/[^\u0600-\u06FF\uFB50-\uFDFF\uFE70-\uFEFF\uFB50-\uFDFF\u0980-\u09FF\u0900-\u097F\u0D00-\u0D7F\u0A80-\u0AFF\u0C80-\u0CFF\u0B00-\u0B7F\u0A00-\u0A7F\u0B80-\u0BFF\u0C00-\u0C7F\w:&_\-.(\),\/\s]|[/]/g, '');
|
|
260
|
+
return text;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
closePrevOpenedDropDown() {
|
|
264
|
+
this.getTreeObject().visit((node) => {
|
|
265
|
+
const nSpan = $(node.span);
|
|
266
|
+
const dropDownElement = $(nSpan[0]).find(`#contextMenuDropDown`);
|
|
267
|
+
dropDownElement.addClass('hidden');
|
|
268
|
+
dropDownElement.removeClass('visible');
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
reloadTree(nodes) {
|
|
272
|
+
this.getTreeObject().reload(nodes);
|
|
273
|
+
$('span.fancytree-title').attr('style', 'width:15em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden');
|
|
274
|
+
}
|
|
275
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, deps: [{ token: i1.ToasterService }, { token: i2.HelperService }, { token: i3.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
276
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, providedIn: 'root' }); }
|
|
277
|
+
}
|
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, decorators: [{
|
|
279
|
+
type: Injectable,
|
|
280
|
+
args: [{
|
|
281
|
+
providedIn: 'root'
|
|
282
|
+
}]
|
|
283
|
+
}], ctorParameters: function () { return [{ type: i1.ToasterService }, { type: i2.HelperService }, { type: i3.ConfigService }]; } });
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL3NlcnZpY2VzL3RyZWUvdHJlZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUkvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFhdEIsWUFBb0IsY0FBOEIsRUFBVSxhQUE0QixFQUFTLGFBQTRCO1FBQXpHLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFYN0gsY0FBUyxHQUFHO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBR0YseUNBQXlDO1FBQ2pDLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQU0sU0FBUyxDQUFDLENBQUM7UUFDM0MsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDLFlBQVk7YUFDN0QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFNEMsQ0FBQztJQUUzSCxVQUFVLENBQUMsWUFBMkI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMs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QUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHNFQUFzRSxDQUFDLENBQUM7SUFDbEgsQ0FBQzsrR0F0UlUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgJ2pxdWVyeS5mYW5jeXRyZWUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5kZWNsYXJlIHZhciAkOiBhbnk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lZGl0b3InO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi90b2FzdGVyL3RvYXN0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVscGVyL2hlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmVlU2VydmljZSB7XG4gIHB1YmxpYyBjb25maWc6IGFueTtcbiAgdHJlZUNhY2hlID0ge1xuICAgIG5vZGVzTW9kaWZpZWQ6IHt9LFxuICAgIG5vZGVzOiBbXVxuICB9O1xuICB0cmVlTmF0aXZlRWxlbWVudDogYW55O1xuICBvbWl0RmFsc2V5UHJvcHM6IGFueTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBfdHJlZVN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyZWVTdGF0dXMkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl90cmVlU3RhdHVzJFxuICAgIC5hc09ic2VydmFibGUoKS5waXBlKHNraXBXaGlsZShzdGF0dXMgPT4gc3RhdHVzID09PSB1bmRlZmluZWQgfHwgc3RhdHVzID09PSBudWxsKSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsIHByaXZhdGUgaGVscGVyU2VydmljZTogSGVscGVyU2VydmljZSwgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKGVkaXRvckNvbmZpZzogSUVkaXRvckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gZWRpdG9yQ29uZmlnLmNvbmZpZztcbiAgICB0aGlzLm9taXRGYWxzZXlQcm9wcyA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5lZGl0b3JDb25maWcsICdvbWl0RmFsc2V5UHJvcGVydGllcycpO1xuICB9XG5cbiAgbmV4dFRyZWVTdGF0dXMoc3RhdHVzKSB7XG4gICAgdGhpcy5fdHJlZVN0YXR1cyQubmV4dChzdGF0dXMpO1xuICB9XG5cbiAgc2V0VHJlZUVsZW1lbnQoZWwpIHtcbiAgICB0aGlzLnRyZWVOYXRpdmVFbGVtZW50ID0gZWw7XG4gIH1cblxuICB1cGRhdGVOb2RlKG1ldGFkYXRhLCBub2RlVG9CZVVwZGF0ZWQ/LCBwcmltYXJ5Q2F0ZWdvcnk/KSB7XG4gICAgdGhpcy5zZXROb2RlVGl0bGUobWV0YWRhdGEubmFtZSk7XG4gICAgdGhpcy51cGRhdGVUcmVlTm9kZU1ldGFkYXRhKG1ldGFkYXRhLCBub2RlVG9CZVVwZGF0ZWQsIHByaW1hcnlDYXRlZ29yeSk7XG4gIH1cblxuICB1cGRhdGVBcHBJY29uKGFwcEljb25VcmwpIHtcbiAgICBjb25zdCBhY3RpdmVOb2RlID0gdGhpcy5nZXRBY3RpdmVOb2RlKCk7XG4gICAgY29uc3Qgbm9kZUlkID0gYWN0aXZlTm9kZS5kYXRhLmlkO1xuICAgIGFjdGl2ZU5vZGUuZGF0YS5tZXRhZGF0YSA9IHsgLi4uYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhLCBhcHBJY29uOiBhcHBJY29uVXJsIH07XG4gICAgdGhpcy5zZXRUcmVlQ2FjaGUobm9kZUlkLCB7IGFwcEljb246IGFwcEljb25VcmwgfSwgYWN0aXZlTm9kZS5kYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZU1ldGFEYXRhUHJvcGVydHkoa2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldEZpcnN0Q2hpbGQoKTtcbiAgICBjb25zdCBub2RlSWQgPSBub2RlLmRhdGEuaWQ7XG4gICAgbm9kZS5kYXRhLm1ldGFkYXRhID0geyAuLi5ub2RlLmRhdGEubWV0YWRhdGEsIFtrZXldOiB2YWx1ZSB9O1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGVJZCwgXy5tZXJnZSh7fSwgeyBba2V5XTogdmFsdWUgfSwgXy5waWNrKG5vZGUuZGF0YS5tZXRhZGF0YSwgWydvYmplY3RUeXBlJ10pKSk7XG4gIH1cblxuICB1cGRhdGVUcmVlTm9kZU1ldGFkYXRhKG5ld0RhdGE6IGFueSwgbm9kZVRvQmVVcGRhdGVkPzogYW55LCBwcmltYXJ5Q2F0ZWdvcnk/OiBhbnksIG9iamVjdFR5cGU/OiBhbnkpIHtcbiAgICBjb25zdCBhY3RpdmVOb2RlID0gIV8uaXNVbmRlZmluZWQobm9kZVRvQmVVcGRhdGVkKSA/IHRoaXMuZ2V0Tm9kZUJ5SWQobm9kZVRvQmVVcGRhdGVkKSA6IHRoaXMuZ2V0QWN0aXZlTm9kZSgpO1xuICAgIGNvbnN0IG5vZGVJZCA9IG5vZGVUb0JlVXBkYXRlZCB8fCBhY3RpdmVOb2RlLmRhdGEuaWQ7XG4gICAgaWYgKG5ld0RhdGEuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBuZXdEYXRhLmluc3RydWN0aW9ucyA9IHsgZGVmYXVsdDogbmV3RGF0YS5pbnN0cnVjdGlvbnMgfTtcbiAgICB9XG4gICAgYWN0aXZlTm9kZS5kYXRhLm1ldGFkYXRhID0geyAuLi5hY3RpdmVOb2RlLmRhdGEubWV0YWRhdGEsIC4uLm5ld0RhdGEgfTtcbiAgICBhY3RpdmVOb2RlLnRpdGxlID0gbmV3RGF0YS5uYW1lO1xuICAgIG5ld0RhdGEgPSBfLm9taXRCeShuZXdEYXRhLCAodiwga2V5KSA9PiBfLmlzVW5kZWZpbmVkKHYpIHx8IF8uaXNOdWxsKHYpIHx8ICh2ID09PSAnJyAmJiBfLmluY2x1ZGVzKHRoaXMub21pdEZhbHNleVByb3BzLCBrZXkpKSk7XG4gICAgbmV3RGF0YSA9IF8ubWVyZ2Uoe30sIG5ld0RhdGEsIF8ucGljayhhY3RpdmVOb2RlLmRhdGEubWV0YWRhdGEsIFsnb2JqZWN0VHlwZScsICdjb250ZW50VHlwZScsICdwcmltYXJ5Q2F0ZWdvcnknXSkpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG5ld0RhdGEuYXR0cmlidXRpb25zO1xuICAgIGlmIChhdHRyaWJ1dGlvbnMgJiYgXy5pc1N0cmluZyhhdHRyaWJ1dGlvbnMpKSB7XG4gICAgICBuZXdEYXRhLmF0dHJpYnV0aW9ucyA9IGF0dHJpYnV0aW9ucy5zcGxpdCgnLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdEYXRhLmF0dHJpYnV0aW9ucyA9IFtdO1xuICAgIH1cbiAgICBjb25zdCB7IG1heFRpbWUsIHdhcm5pbmdUaW1lLCBjb3B5cmlnaHRZZWFyIH0gPSBuZXdEYXRhO1xuXG4gICAgaWYgKGNvcHlyaWdodFllYXIpIHtcbiAgICAgIG5ld0RhdGEuY29weXJpZ2h0WWVhciA9IF8udG9OdW1iZXIoY29weXJpZ2h0WWVhcik7XG4gICAgfVxuICAgIGlmIChvYmplY3RUeXBlKSB7XG4gICAgICBuZXdEYXRhLm9iamVjdFR5cGUgPSBvYmplY3RUeXBlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lTGltaXRzOiBhbnkgPSB7fTtcbiAgICBpZiAobWF4VGltZSkge1xuICAgICAgdGltZUxpbWl0cy5tYXhUaW1lID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmhtc1RvU2Vjb25kcyhtYXhUaW1lKTtcbiAgICB9XG4gICAgaWYgKHdhcm5pbmdUaW1lKSB7XG4gICAgICB0aW1lTGltaXRzLndhcm5pbmdUaW1lID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmhtc1RvU2Vjb25kcyh3YXJuaW5nVGltZSk7XG4gICAgfVxuICAgIGlmICghXy5pc0VtcHR5KHRpbWVMaW1pdHMpKSB7XG4gICAgICBuZXdEYXRhLnRpbWVMaW1pdHMgPSB0aW1lTGltaXRzO1xuICAgIH1cbiAgICBkZWxldGUgbmV3RGF0YS5tYXhUaW1lO1xuICAgIGRlbGV0ZSBuZXdEYXRhLndhcm5pbmdUaW1lO1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGVJZCwgbmV3RGF0YSwgYWN0aXZlTm9kZS5kYXRhKTtcbiAgfVxuXG4gIGFkZE5vZGUoY3JlYXRlVHlwZSkge1xuICAgIGxldCBuZXdOb2RlO1xuICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHRoaXMuZ2V0QWN0aXZlTm9kZSgpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBjb25zdCBub2RlQ29uZmlnID0gKGNyZWF0ZVR5cGUgPT09ICdzaWJsaW5nJykgPyB0aGlzLmNvbmZpZy5oaWVyYXJjaHlbYGxldmVsJHtzZWxlY3RlZE5vZGUuZ2V0TGV2ZWwoKSAtIDF9YF0gOiB0aGlzLmNvbmZpZy5oaWVyYXJjaHlbYGxldmVsJHtzZWxlY3RlZE5vZGUuZ2V0TGV2ZWwoKX1gXTtcbiAgICBjb25zdCB1bmlxdWVJZCA9IHV1aWR2NCgpO1xuICAgIGNvbnN0IG5vZGVUaXRsZSA9IF8uZ2V0KG5vZGVDb25maWcsICduYW1lJyk7XG4gICAgY29uc3Qgbm9kZTogYW55ID0ge1xuICAgICAgaWQ6IHVuaXF1ZUlkLFxuICAgICAgdGl0bGU6IG5vZGVUaXRsZSxcbiAgICAgIHRvb2x0aXA6IG5vZGVUaXRsZSxcbiAgICAgIC4uLihub2RlQ29uZmlnLmNvbnRlbnRUeXBlICYmIHsgY29udGVudFR5cGU6IG5vZGVDb25maWcuY29udGVudFR5cGUgfSksXG4gICAgICBwcmltYXJ5Q2F0ZWdvcnk6IF8uZ2V0KG5vZGVDb25maWcsICdwcmltYXJ5Q2F0ZWdvcnknKSxcbiAgICAgIG9iamVjdFR5cGU6IF8uZ2V0KHRoaXMuY29uZmlnLCAnb2JqZWN0VHlwZScpLFxuICAgICAgcm9vdDogZmFsc2UsXG4gICAgICBmb2xkZXI6IHRydWUsXG4gICAgICBpY29uOiBfLmdldChub2RlQ29uZmlnLCAnaWNvbkNsYXNzJyksXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBtaW1lVHlwZTogXy5nZXQobm9kZUNvbmZpZywgJ21pbWVUeXBlJyksXG4gICAgICAgIGNvZGU6IHVuaXF1ZUlkLFxuICAgICAgICBuYW1lOiBub2RlVGl0bGUsXG4gICAgICAgIHZpc2liaWxpdHk6ICdQYXJlbnQnXG4gICAgICB9XG4gICAgfTtcbiAgICBub2RlLm1ldGFkYXRhID0gXy5tZXJnZSh7fSwgbm9kZS5tZXRhZGF0YSwgXy5waWNrKG5vZGUsIFsnY29udGVudFR5cGUnLCAnb2JqZWN0VHlwZScsICdwcmltYXJ5Q2F0ZWdvcnknXSkpO1xuICAgIG5ld05vZGUgPSAoY3JlYXRlVHlwZSA9PT0gJ3NpYmxpbmcnKSA/IHNlbGVjdGVkTm9kZS5hcHBlbmRTaWJsaW5nKG5vZGUpIDogc2VsZWN0ZWROb2RlLmFkZENoaWxkcmVuKG5vZGUpO1xuICAgIHRoaXMuc2V0VHJlZUNhY2hlKG5vZGUuaWQsIG5vZGUubWV0YWRhdGEpO1xuICAgIG5ld05vZGUuc2V0QWN0aXZlKCk7XG4gICAgc2VsZWN0ZWROb2RlLnNldEV4cGFuZGVkKCk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICAgICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuc2Nyb2xsTGVmdCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS53aWR0aCgpKTtcbiAgICAkKHRoaXMudHJlZU5hdGl2ZUVsZW1lbnQpLnNjcm9sbFRvcCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS5oZWlnaHQoKSk7XG4gICAgdGhpcy5uZXh0VHJlZVN0YXR1cygnYWRkZWQnKTtcbiAgfVxuXG4gIHJlbW92ZU5vZGUoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5nZXRBY3RpdmVOb2RlKCk7XG4gICAgY29uc3QgYWZ0ZXJEZWxldGVOb2RlID0gc2VsZWN0ZWROb2RlLmdldFByZXZTaWJsaW5nKCkgPyBzZWxlY3RlZE5vZGUuZ2V0UHJldlNpYmxpbmcoKSA6IHNlbGVjdGVkTm9kZS5nZXRQYXJlbnQoKTtcbiAgICB0aGlzLnNldEFjdGl2ZU5vZGUoYWZ0ZXJEZWxldGVOb2RlKTtcbiAgICBzZWxlY3RlZE5vZGUucmVtb3ZlKCk7XG4gICAgdGhpcy5jbGVhclRyZWVDYWNoZShzZWxlY3RlZE5vZGUuZGF0YSk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICAgICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuc2Nyb2xsTGVmdCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS53aWR0aCgpKTtcbiAgICAkKHRoaXMudHJlZU5hdGl2ZUVsZW1lbnQpLnNjcm9sbFRvcCgkKCcuZmFuY3l0cmVlLWxhc3RzaWInKS5oZWlnaHQoKSk7XG4gICAgdGhpcy5uZXh0VHJlZVN0YXR1cygncmVtb3ZlZCcpO1xuICB9XG5cbiAgZ2V0VHJlZU9iamVjdCgpIHtcbiAgICByZXR1cm4gJCh0aGlzLnRyZWVOYXRpdmVFbGVtZW50KS5mYW5jeXRyZWUoJ2dldFRyZWUnKTtcbiAgfVxuXG4gIGdldEFjdGl2ZU5vZGUoKSB7XG4gICAgbGV0IGFjdGl2ZU5vZGU7XG4gICAgdHJ5IHtcbiAgICAgIGFjdGl2ZU5vZGUgPSB0aGlzLmdldFRyZWVPYmplY3QoKS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBhY3RpdmVOb2RlID0ge307XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVOb2RlO1xuICB9XG5cbiAgZ2V0UGFyZW50KCkge1xuICAgIGNvbnN0IGFjdGl2ZU5vZGUgPSB0aGlzLmdldEFjdGl2ZU5vZGUoKTtcbiAgICByZXR1cm4gYWN0aXZlTm9kZT8uZ2V0UGFyZW50ID8gYWN0aXZlTm9kZS5nZXRQYXJlbnQoKSA6IG51bGw7XG4gIH1cblxuICBzZXRBY3RpdmVOb2RlKG5vZGU/KSB7XG4gICAgY29uc3Qgcm9vdEZpcnN0Q2hpbGROb2RlID0gdGhpcy5nZXRGaXJzdENoaWxkKCk7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIG5vZGUuc2V0QWN0aXZlKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290Rmlyc3RDaGlsZE5vZGUuc2V0QWN0aXZlKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0Q2hpbGQoKSB7XG4gICAgbGV0IHRyZWVEYXRhO1xuICAgIHRyeSB7XG4gICAgICB0cmVlRGF0YSA9ICQodGhpcy50cmVlTmF0aXZlRWxlbWVudCkuZmFuY3l0cmVlKCdnZXRSb290Tm9kZScpLmdldEZpcnN0Q2hpbGQoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRyZWVEYXRhID0ge307XG4gICAgfVxuICAgIHJldHVybiB0cmVlRGF0YTtcbiAgfVxuXG4gIGZpbmROb2RlKG5vZGVJZCkge1xuICAgIHJldHVybiB0aGlzLmdldFRyZWVPYmplY3QoKS5maW5kRmlyc3QoKG5vZGUpID0+IG5vZGUuZGF0YS5pZCA9PT0gbm9kZUlkKTtcbiAgfVxuXG4gIGV4cGFuZE5vZGUobm9kZUlkKSB7XG4gICAgdGhpcy5maW5kTm9kZShub2RlSWQpLnNldEV4cGFuZGVkKHRydWUpO1xuICB9XG5cbiAgcmVwbGFjZU5vZGVJZChpZGVudGlmaWVycykge1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBpZiAoaWRlbnRpZmllcnNbbm9kZS5kYXRhLmlkXSkge1xuICAgICAgICBub2RlLmRhdGEuaWQgPSBpZGVudGlmaWVyc1tub2RlLmRhdGEuaWRdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Tm9kZUJ5SWQoaWQpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGxldCBfbm9kZTogYW55O1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnZpc2l0KChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5kYXRhLmlkID09PSBpZCkgeyBfbm9kZSA9IG5vZGU7IH1cbiAgICB9KTtcbiAgICByZXR1cm4gX25vZGU7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBhIGZsYXQgbGlzdCBvZiBub2RlIGNoaWxkcmVuIGFuZCBzdWIgY2hpbGRyZW5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICB0aGlzLmdldEFjdGl2ZU5vZGUoKS52aXNpdCgobm9kZSkgPT4ge1xuICAgICAgbm9kZXMucHVzaChub2RlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBoaWdobGlnaHROb2RlKG5vZGVJZDogc3RyaW5nLCBhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IG5vZGVFbGVtID0gdGhpcy5nZXROb2RlQnlJZChub2RlSWQpO1xuICAgIGlmICghbm9kZUVsZW0pIHsgcmV0dXJuOyB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgIG5vZGVFbGVtLnNwYW4uY2hpbGROb2Rlc1sxXS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHROb2RlJyk7XG4gICAgICBub2RlRWxlbS5zcGFuLmNoaWxkTm9kZXNbMl0uY2xhc3NMaXN0LmFkZCgnaGlnaGxpZ2h0Tm9kZScpO1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgbm9kZUVsZW0uc3Bhbi5jaGlsZE5vZGVzWzFdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodE5vZGUnKTtcbiAgICAgIG5vZGVFbGVtLnNwYW4uY2hpbGROb2Rlc1syXS5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHROb2RlJyk7XG4gICAgfSBlbHNlIHsgfVxuICB9XG5cbiAgc2V0VHJlZUNhY2hlKG5vZGVJZCwgbWV0YWRhdGEsIGFjdGl2ZU5vZGU/KSB7XG4gICAgaWYgKHRoaXMudHJlZUNhY2hlLm5vZGVzTW9kaWZpZWRbbm9kZUlkXSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlSWRdLm1ldGFkYXRhID0gXy5hc3NpZ24odGhpcy50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlSWRdLm1ldGFkYXRhLCBfLm9taXQobWV0YWRhdGEsICdvYmplY3RUeXBlJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW25vZGVJZF0gPSB7XG4gICAgICAgIHJvb3Q6IGFjdGl2ZU5vZGUgJiYgYWN0aXZlTm9kZS5yb290ID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICBvYmplY3RUeXBlOiBtZXRhZGF0YS5vYmplY3RUeXBlLFxuICAgICAgICBtZXRhZGF0YTogeyAuLi5fLm9taXQobWV0YWRhdGEsIFsnb2JqZWN0VHlwZSddKSB9LFxuICAgICAgICAuLi4obm9kZUlkLmluY2x1ZGVzKCdkb18nKSA/IHsgaXNOZXc6IGZhbHNlIH0gOiB7IGlzTmV3OiB0cnVlIH0pXG4gICAgICB9O1xuICAgICAgdGhpcy50cmVlQ2FjaGUubm9kZXMucHVzaChub2RlSWQpOyAvLyBUbyB0cmFjayBzZXF1ZW5jZSBvZiBtb2RpZmlhdGlvblxuICAgIH1cbiAgfVxuXG4gIGNsZWFyVHJlZUNhY2hlKG5vZGU/KSB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW25vZGUuaWRdO1xuICAgICAgXy5yZW1vdmUodGhpcy50cmVlQ2FjaGUubm9kZXMsIHZhbCA9PiB2YWwgPT09IG5vZGUuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkID0ge307XG4gICAgICB0aGlzLnRyZWVDYWNoZS5ub2RlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNldE5vZGVUaXRsZSh0aXRsZSkge1xuICAgIGlmICghdGl0bGUpIHtcbiAgICAgIHRpdGxlID0gJ1VudGl0bGVkJztcbiAgICB9XG4gICAgdGl0bGUgPSB0aGlzLnJlbW92ZVNwZWNpYWxDaGFycyh0aXRsZSk7XG4gICAgdGhpcy5nZXRBY3RpdmVOb2RlKCkuYXBwbHlQYXRjaCh7IHRpdGxlIH0pLmRvbmUoKGEsIGIpID0+IHsgfSk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxMWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICB9XG5cbiAgcmVtb3ZlU3BlY2lhbENoYXJzKHRleHQpIHtcbiAgICBpZiAodGV4dCkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnF1b3RlbWFya1xuICAgICAgY29uc3QgaUNoYXJzID0gXCIhYH5AIyReKis9W11cXFxcXFwne318XFxcIjw+JS9cIjtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaUNoYXJzLmluZGV4T2YodGV4dC5jaGFyQXQoaSkpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ1NwZWNpYWwgY2hhcmFjdGVyIFwiJyArIHRleHQuY2hhckF0KGkpICsgJ1wiIGlzIG5vdCBhbGxvd2VkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1teXFx1MDYwMC1cXHUwNkZGXFx1RkI1MC1cXHVGREZGXFx1RkU3MC1cXHVGRUZGXFx1RkI1MC1cXHVGREZGXFx1MDk4MC1cXHUwOUZGXFx1MDkwMC1cXHUwOTdGXFx1MEQwMC1cXHUwRDdGXFx1MEE4MC1cXHUwQUZGXFx1MEM4MC1cXHUwQ0ZGXFx1MEIwMC1cXHUwQjdGXFx1MEEwMC1cXHUwQTdGXFx1MEI4MC1cXHUwQkZGXFx1MEMwMC1cXHUwQzdGXFx3OiZfXFwtLihcXCksXFwvXFxzXXxbL10vZywgJycpO1xuICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VQcmV2T3BlbmVkRHJvcERvd24oKSB7XG4gICAgdGhpcy5nZXRUcmVlT2JqZWN0KCkudmlzaXQoKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5TcGFuID0gJChub2RlLnNwYW4pO1xuICAgICAgY29uc3QgZHJvcERvd25FbGVtZW50ID0gJChuU3BhblswXSkuZmluZChgI2NvbnRleHRNZW51RHJvcERvd25gKTtcbiAgICAgIGRyb3BEb3duRWxlbWVudC5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICBkcm9wRG93bkVsZW1lbnQucmVtb3ZlQ2xhc3MoJ3Zpc2libGUnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbG9hZFRyZWUobm9kZXM6IGFueSkge1xuICAgIHRoaXMuZ2V0VHJlZU9iamVjdCgpLnJlbG9hZChub2Rlcyk7XG4gICAgJCgnc3Bhbi5mYW5jeXRyZWUtdGl0bGUnKS5hdHRyKCdzdHlsZScsICd3aWR0aDoxNWVtO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbicpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zdW5iaXJkLXN1bmJpcmQtY29sbGVjdGlvbi1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9wcm9qZWN0LXN1bmJpcmQtc3VuYmlyZC1jb2xsZWN0aW9uLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './lib/collection-editor-library.module';
|
|
2
|
+
export * from './lib/collection-editor-cursor.service';
|
|
3
|
+
export * from './lib/components/editor/editor.component';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xsZWN0aW9uLWVkaXRvci1jdXJzb3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50JzsiXX0=
|