@linkurious/ogma-linkurious-parser 3.1.12 → 4.0.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.
@@ -1,28 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- var __assign = (this && this.__assign) || function () {
16
- __assign = Object.assign || function(t) {
17
- for (var s, i = 1, n = arguments.length; i < n; i++) {
18
- s = arguments[i];
19
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
20
- t[p] = s[p];
21
- }
22
- return t;
23
- };
24
- return __assign.apply(this, arguments);
25
- };
26
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
27
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
28
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -32,61 +8,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
33
9
  });
34
10
  };
35
- var __generator = (this && this.__generator) || function (thisArg, body) {
36
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
37
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
38
- function verb(n) { return function (v) { return step([n, v]); }; }
39
- function step(op) {
40
- if (f) throw new TypeError("Generator is already executing.");
41
- while (_) try {
42
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
43
- if (y = 0, t) op = [op[0] & 2, t.value];
44
- switch (op[0]) {
45
- case 0: case 1: t = op; break;
46
- case 4: _.label++; return { value: op[1], done: false };
47
- case 5: _.label++; y = op[1]; op = [0]; continue;
48
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
49
- default:
50
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
51
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
52
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
53
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
54
- if (t[2]) _.ops.pop();
55
- _.trys.pop(); continue;
56
- }
57
- op = body.call(thisArg, _);
58
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
59
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
60
- }
61
- };
62
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
63
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
64
13
  };
65
14
  Object.defineProperty(exports, "__esModule", { value: true });
66
- var rest_client_1 = require("@linkurious/rest-client");
67
- var ogma_1 = __importDefault(require("@linkurious/ogma"));
68
- var __1 = require("..");
69
- var tools_1 = require("../tools/tools");
70
- var styles_1 = require("./features/styles");
71
- var transformations_1 = require("./features/transformations");
72
- var captions_1 = require("./features/captions");
73
- var reactive_1 = require("./features/reactive");
15
+ const rest_client_1 = require("@linkurious/rest-client");
16
+ const ogma_1 = __importDefault(require("@linkurious/ogma"));
17
+ const __1 = require("..");
18
+ const tools_1 = require("../tools/tools");
19
+ const styles_1 = require("./features/styles");
20
+ const transformations_1 = require("./features/transformations");
21
+ const captions_1 = require("./features/captions");
22
+ const reactive_1 = require("./features/reactive");
74
23
  var ogma_2 = require("@linkurious/ogma");
75
24
  exports.Ogma = ogma_2.default;
76
25
  exports.ANIMATION_DURATION = 750;
77
- var LKOgma = /** @class */ (function (_super) {
78
- __extends(LKOgma, _super);
79
- function LKOgma(_configuration) {
80
- var _newTarget = this.constructor;
81
- var _this =
26
+ class LKOgma extends ogma_1.default {
27
+ constructor(_configuration) {
82
28
  // set Ogma global configuration
83
- _super.call(this, _configuration) || this;
84
- _this._configuration = _configuration;
85
- Object.setPrototypeOf(_this, _newTarget.prototype);
86
- _this.initOgmaLinkuriousParser(true);
87
- return _this;
29
+ super(_configuration);
30
+ this._configuration = _configuration;
31
+ Object.setPrototypeOf(this, new.target.prototype);
32
+ this.initOgmaLinkuriousParser(true);
88
33
  }
89
- LKOgma.prototype.initOgmaLinkuriousParser = function (init) {
34
+ initOgmaLinkuriousParser(init) {
90
35
  this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({
91
36
  path: 'categories',
92
37
  unwindArrays: true,
@@ -100,7 +45,7 @@ var LKOgma = /** @class */ (function (_super) {
100
45
  this.setOptions({
101
46
  interactions: {
102
47
  zoom: {
103
- maxValue: function (params) {
48
+ maxValue: (params) => {
104
49
  return 128 / params.smallestNodeSize;
105
50
  }
106
51
  },
@@ -125,22 +70,21 @@ var LKOgma = /** @class */ (function (_super) {
125
70
  this.LKStyles.setEdgesDefaultHalo();
126
71
  this.LKStyles.setBadgeRule();
127
72
  this.LKStyles.setFilterClass();
128
- };
73
+ }
129
74
  /**
130
75
  * Initialize selection behavior
131
76
  */
132
- LKOgma.prototype.initSelection = function () {
133
- var _this = this;
134
- this.events.onClick(function (e) {
77
+ initSelection() {
78
+ this.events.onClick((e) => {
135
79
  if (e !== undefined && e.button === 'left') {
136
80
  if (e.target !== null) {
137
- var multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';
138
- if (_this.keyboard.isKeyPressed(multiSelectionKey)) {
139
- if (e.target.isNode && _this.getSelectedEdges().size > 0) {
140
- _this.getSelectedEdges().setSelected(false);
81
+ const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';
82
+ if (this.keyboard.isKeyPressed(multiSelectionKey)) {
83
+ if (e.target.isNode && this.getSelectedEdges().size > 0) {
84
+ this.getSelectedEdges().setSelected(false);
141
85
  }
142
- if (!e.target.isNode && _this.getSelectedNodes().size > 0) {
143
- _this.getSelectedNodes().setSelected(false);
86
+ if (!e.target.isNode && this.getSelectedNodes().size > 0) {
87
+ this.getSelectedNodes().setSelected(false);
144
88
  }
145
89
  if (e.target.isSelected()) {
146
90
  e.target.setSelected(false);
@@ -150,19 +94,19 @@ var LKOgma = /** @class */ (function (_super) {
150
94
  }
151
95
  }
152
96
  else {
153
- _this.getSelectedNodes().setSelected(false);
154
- _this.getSelectedEdges().setSelected(false);
97
+ this.getSelectedNodes().setSelected(false);
98
+ this.getSelectedEdges().setSelected(false);
155
99
  e.target.setSelected(true);
156
100
  }
157
101
  }
158
102
  else {
159
- _this.getSelectedNodes().setSelected(false);
160
- _this.getSelectedEdges().setSelected(false);
103
+ this.getSelectedNodes().setSelected(false);
104
+ this.getSelectedEdges().setSelected(false);
161
105
  }
162
106
  }
163
107
  });
164
- };
165
- LKOgma.prototype.setStyles = function (configuration) {
108
+ }
109
+ setStyles(configuration) {
166
110
  var _a, _b, _c, _d, _e, _f;
167
111
  this.LKStyles = new styles_1.StylesViz(this, {
168
112
  node: ((_c = (_b = (_a = configuration) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.styles) === null || _c === void 0 ? void 0 : _c.node) || {},
@@ -170,19 +114,18 @@ var LKOgma = /** @class */ (function (_super) {
170
114
  });
171
115
  this.LKStyles.setNodesDefaultStyles();
172
116
  this.LKStyles.setEdgesDefaultStyles();
173
- };
174
- LKOgma.prototype.setCaptions = function (configuration) {
117
+ }
118
+ setCaptions(configuration) {
175
119
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
176
- var nodeMaxTextLength = (_e = (_d = (_c = (_b = (_a = configuration) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.styles) === null || _c === void 0 ? void 0 : _c.node) === null || _d === void 0 ? void 0 : _d.text) === null || _e === void 0 ? void 0 : _e.maxTextLength;
177
- var edgeMaxTextLength = (_k = (_j = (_h = (_g = (_f = configuration) === null || _f === void 0 ? void 0 : _f.options) === null || _g === void 0 ? void 0 : _g.styles) === null || _h === void 0 ? void 0 : _h.edge) === null || _j === void 0 ? void 0 : _j.text) === null || _k === void 0 ? void 0 : _k.maxTextLength;
120
+ const nodeMaxTextLength = (_e = (_d = (_c = (_b = (_a = configuration) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.styles) === null || _c === void 0 ? void 0 : _c.node) === null || _d === void 0 ? void 0 : _d.text) === null || _e === void 0 ? void 0 : _e.maxTextLength;
121
+ const edgeMaxTextLength = (_k = (_j = (_h = (_g = (_f = configuration) === null || _f === void 0 ? void 0 : _f.options) === null || _g === void 0 ? void 0 : _g.styles) === null || _h === void 0 ? void 0 : _h.edge) === null || _j === void 0 ? void 0 : _j.text) === null || _k === void 0 ? void 0 : _k.maxTextLength;
178
122
  this.LKCaptions = new captions_1.CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);
179
- };
123
+ }
180
124
  /**
181
125
  * Returns Ogma Layout parameters according to visualization layout settings
182
126
  * */
183
- LKOgma.prototype.getForceLayoutParams = function (mode, duration) {
184
- if (duration === void 0) { duration = 0; }
185
- var dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;
127
+ getForceLayoutParams(mode, duration = 0) {
128
+ let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;
186
129
  if (dynamicSteps < 40) {
187
130
  dynamicSteps = 40;
188
131
  }
@@ -194,9 +137,8 @@ var LKOgma = /** @class */ (function (_super) {
194
137
  gravity: 0.08,
195
138
  theta: this.getNodes().size > 100 ? 0.8 : 0.34
196
139
  };
197
- };
198
- LKOgma.prototype.getRadialLayoutParams = function (rootNode, duration) {
199
- if (duration === void 0) { duration = 0; }
140
+ }
141
+ getRadialLayoutParams(rootNode, duration = 0) {
200
142
  return {
201
143
  centralNode: rootNode,
202
144
  radiusDelta: 1,
@@ -204,194 +146,169 @@ var LKOgma = /** @class */ (function (_super) {
204
146
  repulsion: this.getNodes().size > 80 ? 1 : 6,
205
147
  duration: duration
206
148
  };
207
- };
208
- LKOgma.prototype.getHierarchicalLayoutParams = function (mode, rootNode, duration) {
209
- if (duration === void 0) { duration = 0; }
149
+ }
150
+ getHierarchicalLayoutParams(mode, rootNode, duration = 0) {
210
151
  return {
211
152
  direction: mode,
212
153
  roots: [rootNode],
213
154
  duration: duration
214
155
  };
215
- };
156
+ }
216
157
  /**
217
158
  * Initialize graph.
218
159
  * add nodes and edges to the viz and init the selection.
219
160
  */
220
- LKOgma.prototype.init = function (visualization) {
221
- return __awaiter(this, void 0, void 0, function () {
222
- var selectedEntityType, selectedElements, fixedNodes, fixedEdges;
223
- return __generator(this, function (_a) {
224
- switch (_a.label) {
225
- case 0:
226
- this.clearGraph();
227
- selectedEntityType = undefined;
228
- selectedElements = [];
229
- fixedNodes = visualization.nodes.map(function (node) {
230
- if (node.attributes.selected) {
231
- selectedEntityType = rest_client_1.EntityType.NODE;
232
- selectedElements.push(node.id);
233
- }
234
- delete node.attributes.selected;
235
- return node;
236
- });
237
- fixedEdges = visualization.edges.map(function (edge) {
238
- if (edge.attributes !== undefined) {
239
- if (edge.attributes.selected) {
240
- if (selectedEntityType === undefined || selectedEntityType === rest_client_1.EntityType.NODE) {
241
- selectedEntityType = rest_client_1.EntityType.EDGE;
242
- selectedElements = [];
243
- }
244
- selectedElements.push(edge.id);
245
- }
246
- delete edge.attributes.selected;
247
- }
248
- return edge;
249
- });
250
- return [4 /*yield*/, this.addGraphAfterValidation({
251
- nodes: fixedNodes,
252
- edges: fixedEdges
253
- })];
254
- case 1:
255
- _a.sent();
256
- if (selectedEntityType === rest_client_1.EntityType.NODE) {
257
- this.getNodes(selectedElements).setSelected(true);
258
- }
259
- else if (selectedEntityType === rest_client_1.EntityType.EDGE) {
260
- this.getEdges(selectedElements).setSelected(true);
161
+ init(visualization) {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ this.clearGraph();
164
+ let selectedEntityType = undefined;
165
+ let selectedElements = [];
166
+ // need to remove selected in every items before adding them to Ogma
167
+ const fixedNodes = visualization.nodes.map((node) => {
168
+ if (node.attributes.selected) {
169
+ selectedEntityType = rest_client_1.EntityType.NODE;
170
+ selectedElements.push(node.id);
171
+ }
172
+ delete node.attributes.selected;
173
+ return node;
174
+ });
175
+ const fixedEdges = visualization.edges.map((edge) => {
176
+ if (edge.attributes !== undefined) {
177
+ if (edge.attributes.selected) {
178
+ if (selectedEntityType === undefined || selectedEntityType === rest_client_1.EntityType.NODE) {
179
+ selectedEntityType = rest_client_1.EntityType.EDGE;
180
+ selectedElements = [];
261
181
  }
262
- return [2 /*return*/];
182
+ selectedElements.push(edge.id);
183
+ }
184
+ delete edge.attributes.selected;
263
185
  }
186
+ return edge;
187
+ });
188
+ yield this.addGraphAfterValidation({
189
+ nodes: fixedNodes,
190
+ edges: fixedEdges
264
191
  });
192
+ if (selectedEntityType === rest_client_1.EntityType.NODE) {
193
+ this.getNodes(selectedElements).setSelected(true);
194
+ }
195
+ else if (selectedEntityType === rest_client_1.EntityType.EDGE) {
196
+ this.getEdges(selectedElements).setSelected(true);
197
+ }
265
198
  });
266
- };
267
- LKOgma.prototype.initVisualization = function (visualization) {
268
- return __awaiter(this, void 0, void 0, function () {
269
- var styles;
270
- return __generator(this, function (_a) {
271
- this.init(visualization);
272
- styles = __1.StyleRules.sanitizeStylesIndex(visualization.design.styles);
273
- this.LKStyles.initNodeColors(styles.node);
274
- this.LKStyles.initNodesIcons(styles.node);
275
- this.LKStyles.initNodesSizes(styles.node);
276
- this.LKStyles.initNodesShapes(styles.node);
277
- this.LKStyles.initEdgesWidth(styles.edge);
278
- this.LKStyles.initEdgesShape(styles.edge);
279
- this.LKStyles.initEdgesColor(styles.edge);
280
- this.LKCaptions.initVizCaptions({
281
- node: visualization.nodeFields.captions || {},
282
- edge: visualization.edgeFields.captions || {}
283
- });
284
- this.LKTransformation.groupedEdges = visualization.edgeGrouping;
285
- this.LKTransformation.initTransformation();
286
- this.LKTransformation.initEdgeGroupingStyle();
287
- return [2 /*return*/];
199
+ }
200
+ initVisualization(visualization) {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ this.init(visualization);
203
+ const styles = __1.StyleRules.sanitizeStylesIndex(visualization.design.styles);
204
+ this.LKStyles.initNodeColors(styles.node);
205
+ this.LKStyles.initNodesIcons(styles.node);
206
+ this.LKStyles.initNodesSizes(styles.node);
207
+ this.LKStyles.initNodesShapes(styles.node);
208
+ this.LKStyles.initEdgesWidth(styles.edge);
209
+ this.LKStyles.initEdgesShape(styles.edge);
210
+ this.LKStyles.initEdgesColor(styles.edge);
211
+ this.LKCaptions.initVizCaptions({
212
+ node: visualization.nodeFields.captions || {},
213
+ edge: visualization.edgeFields.captions || {}
288
214
  });
215
+ this.LKTransformation.groupedEdges = visualization.edgeGrouping;
216
+ this.LKTransformation.initTransformation();
217
+ this.LKTransformation.initEdgeGroupingStyle();
289
218
  });
290
- };
219
+ }
291
220
  /**
292
221
  * Adding nodes then adding edges to the graph
293
222
  */
294
- LKOgma.prototype.addGraphAfterValidation = function (graph) {
295
- return __awaiter(this, void 0, void 0, function () {
296
- var addedNodes, addedEdges;
297
- return __generator(this, function (_a) {
298
- switch (_a.label) {
299
- case 0: return [4 /*yield*/, this.addNodes(graph.nodes)];
300
- case 1:
301
- addedNodes = _a.sent();
302
- return [4 /*yield*/, this.addEdges(graph.edges)];
303
- case 2:
304
- addedEdges = _a.sent();
305
- return [2 /*return*/, {
306
- nodes: addedNodes,
307
- edges: addedEdges
308
- }];
309
- }
310
- });
223
+ addGraphAfterValidation(graph) {
224
+ return __awaiter(this, void 0, void 0, function* () {
225
+ const addedNodes = yield this.addNodes(graph.nodes);
226
+ const addedEdges = yield this.addEdges(graph.edges);
227
+ return {
228
+ nodes: addedNodes,
229
+ edges: addedEdges
230
+ };
311
231
  });
312
- };
232
+ }
313
233
  /**
314
234
  * Adding edges to the graph after filtering disconnected ones
315
235
  */
316
- LKOgma.prototype.addEdges = function (edges, options) {
317
- return __awaiter(this, void 0, void 0, function () {
318
- var filteredEdges;
319
- var _this = this;
320
- return __generator(this, function (_a) {
321
- filteredEdges = edges.filter(function (edge) {
322
- return _this.getNode(edge.source) !== undefined && _this.getNode(edge.target) !== undefined;
323
- });
324
- return [2 /*return*/, _super.prototype.addEdges.call(this, filteredEdges, options)];
236
+ addEdges(edges, options) {
237
+ const _super = Object.create(null, {
238
+ addEdges: { get: () => super.addEdges }
239
+ });
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ const filteredEdges = edges.filter((edge) => {
242
+ return this.getNode(edge.source) !== undefined && this.getNode(edge.target) !== undefined;
325
243
  });
244
+ return _super.addEdges.call(this, filteredEdges, options);
326
245
  });
327
- };
246
+ }
328
247
  /**
329
248
  * Return the list of non filtered nodes
330
249
  */
331
- LKOgma.prototype.getNonFilteredNodes = function (items) {
250
+ getNonFilteredNodes(items) {
332
251
  return tools_1.Tools.isDefined(items)
333
- ? this.getNodes(items).filter(function (i) { return !i.hasClass('filtered'); })
334
- : this.getNodes().filter(function (i) { return !i.hasClass('filtered'); });
335
- };
252
+ ? this.getNodes(items).filter((i) => !i.hasClass('filtered'))
253
+ : this.getNodes().filter((i) => !i.hasClass('filtered'));
254
+ }
336
255
  /**
337
256
  * Return the list of filtered nodes
338
257
  */
339
- LKOgma.prototype.getFilteredNodes = function (items) {
258
+ getFilteredNodes(items) {
340
259
  return tools_1.Tools.isDefined(items)
341
- ? this.getNodes(items).filter(function (i) { return i.hasClass('filtered'); })
342
- : this.getNodes().filter(function (i) { return i.hasClass('filtered'); });
343
- };
260
+ ? this.getNodes(items).filter((i) => i.hasClass('filtered'))
261
+ : this.getNodes().filter((i) => i.hasClass('filtered'));
262
+ }
344
263
  /**
345
264
  * Return the list of non filtered edges
346
265
  */
347
- LKOgma.prototype.getNonFilteredEdges = function (items) {
266
+ getNonFilteredEdges(items) {
348
267
  return tools_1.Tools.isDefined(items)
349
- ? this.getEdges(items).filter(function (i) { return !i.hasClass('filtered'); })
350
- : this.getEdges('raw').filter(function (i) { return !i.hasClass('filtered'); });
351
- };
268
+ ? this.getEdges(items).filter((i) => !i.hasClass('filtered'))
269
+ : this.getEdges('raw').filter((i) => !i.hasClass('filtered'));
270
+ }
352
271
  /**
353
272
  * Return the list of filtered edges
354
273
  */
355
- LKOgma.prototype.getFilteredEdges = function (items, filter) {
356
- if (filter === void 0) { filter = 'raw'; }
274
+ getFilteredEdges(items, filter = 'raw') {
357
275
  return tools_1.Tools.isDefined(items)
358
- ? this.getEdges(items).filter(function (i) { return i.hasClass('filtered'); })
359
- : this.getEdges(filter).filter(function (i) { return i.hasClass('filtered'); });
360
- };
276
+ ? this.getEdges(items).filter((i) => i.hasClass('filtered'))
277
+ : this.getEdges(filter).filter((i) => i.hasClass('filtered'));
278
+ }
361
279
  /**
362
280
  * Do a full reset on ogma and streams of ogma
363
281
  */
364
- LKOgma.prototype.shutDown = function () {
282
+ shutDown() {
365
283
  this.destroy();
366
284
  if (this.store) {
367
285
  this.store.clear();
368
286
  }
369
- };
287
+ }
370
288
  /**
371
289
  * Reset the Ogma instance so that it can be used fresh in the next visulization
372
290
  */
373
- LKOgma.prototype.clearOgmaState = function () {
291
+ clearOgmaState() {
374
292
  this.reset();
375
293
  if (this.store) {
376
294
  this.store.clear();
377
295
  }
378
296
  this.initOgmaLinkuriousParser();
379
- };
297
+ }
380
298
  /**
381
299
  * Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()
382
300
  */
383
- LKOgma.prototype.setConfigOgma = function (configuration, init) {
301
+ setConfigOgma(configuration, init) {
384
302
  if (configuration) {
385
303
  // here we make sure that the internal config object is updated and we have the correct one when resetting
386
304
  this._configuration = configuration;
387
305
  }
388
306
  if (!init) {
389
- this.setOptions(__assign(__assign({}, this._configuration.options), { renderer: this._configuration.renderer }));
307
+ this.setOptions(Object.assign(Object.assign({}, this._configuration.options), { renderer: this._configuration.renderer }));
390
308
  }
391
309
  this.setStyles(this._configuration);
392
310
  this.setCaptions(this._configuration);
393
- };
394
- return LKOgma;
395
- }(ogma_1.default));
311
+ }
312
+ }
396
313
  exports.LKOgma = LKOgma;
397
314
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ogma/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EntityType,\n ForceLayoutMode,\n HierarchicalLayoutMode,\n IOgmaConfig,\n LkEdgeData,\n LkNodeData,\n PopulatedVisualization,\n VizEdge,\n VizNode\n} from '@linkurious/rest-client';\nimport Ogma, {\n EdgeList,\n ForceLayoutOptions,\n HierarchicalLayoutOptions,\n NodeList,\n NonObjectPropertyWatcher,\n RadialLayoutOptions,\n RawEdge,\n RawGraph,\n RawNode\n} from '@linkurious/ogma';\n\nimport {StyleRules} from '..';\nimport {Tools} from '../tools/tools';\n\nimport {StylesViz} from './features/styles';\nimport {TransformationsViz} from './features/transformations';\nimport {CaptionsViz} from './features/captions';\nimport {RxViz} from './features/reactive';\nimport {OgmaStore} from './features/OgmaStore';\n\nexport {default as Ogma} from '@linkurious/ogma';\nexport const ANIMATION_DURATION = 750;\n\ninterface AddItemOptions {\n batchSize?: number;\n virtual?: boolean;\n}\n\nexport class LKOgma extends Ogma<LkNodeData, LkEdgeData> {\n public LKStyles!: StylesViz;\n public LKCaptions!: CaptionsViz;\n public LKTransformation!: TransformationsViz;\n // Trigger an event with node category changes\n public nodeCategoriesWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n // Trigger an event with edge type changes\n public edgeTypeWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n public store!: OgmaStore;\n private _reactive!: RxViz;\n\n constructor(private _configuration: IOgmaConfig) {\n // set Ogma global configuration\n super(_configuration);\n Object.setPrototypeOf(this, new.target.prototype);\n this.initOgmaLinkuriousParser(true);\n }\n\n private initOgmaLinkuriousParser(init?: boolean): void {\n this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({\n path: 'categories',\n unwindArrays: true,\n filter: 'all'\n });\n this.edgeTypeWatcher = this.schema.watchEdgeNonObjectProperty({\n path: 'type',\n filter: 'all'\n });\n // set ogma max zoom value and selection with mouse option (false?)\n this.setOptions({\n interactions: {\n zoom: {\n maxValue: (params: any) => {\n return 128 / params.smallestNodeSize;\n }\n },\n selection: {\n enabled: false\n }\n }\n });\n\n // only instantiate the store once when app is starting\n if (this._reactive === undefined) {\n this._reactive = new RxViz(this);\n this.store = this._reactive.store;\n } else {\n // if store already exist, but ogma was reset, create new ogma event listener\n this._reactive.listenToSelectionEvents();\n }\n this.initSelection();\n this.setConfigOgma(this._configuration, init);\n this.LKTransformation = new TransformationsViz(this);\n\n this.LKStyles.setNodesDefaultHalo();\n this.LKStyles.setEdgesDefaultHalo();\n this.LKStyles.setBadgeRule();\n this.LKStyles.setFilterClass();\n }\n\n /**\n * Initialize selection behavior\n */\n public initSelection(): void {\n this.events.onClick((e) => {\n if (e !== undefined && e.button === 'left') {\n if (e.target !== null) {\n const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';\n if (this.keyboard.isKeyPressed(multiSelectionKey)) {\n if (e.target.isNode && this.getSelectedEdges().size > 0) {\n this.getSelectedEdges().setSelected(false);\n }\n if (!e.target.isNode && this.getSelectedNodes().size > 0) {\n this.getSelectedNodes().setSelected(false);\n }\n if (e.target.isSelected()) {\n e.target.setSelected(false);\n } else {\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n }\n }\n });\n }\n\n private setStyles(configuration: IOgmaConfig): void {\n this.LKStyles = new StylesViz(this, {\n node: configuration?.options?.styles?.node || {},\n edge: configuration?.options?.styles?.edge || {}\n });\n this.LKStyles.setNodesDefaultStyles();\n this.LKStyles.setEdgesDefaultStyles();\n }\n\n private setCaptions(configuration: IOgmaConfig): void {\n const nodeMaxTextLength = configuration?.options?.styles?.node?.text?.maxTextLength;\n const edgeMaxTextLength = configuration?.options?.styles?.edge?.text?.maxTextLength;\n this.LKCaptions = new CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);\n }\n\n /**\n * Returns Ogma Layout parameters according to visualization layout settings\n * */\n public getForceLayoutParams(mode: ForceLayoutMode, duration = 0): ForceLayoutOptions {\n let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;\n if (dynamicSteps < 40) {\n dynamicSteps = 40;\n }\n return {\n steps: mode === ForceLayoutMode.FAST ? dynamicSteps : 300,\n alignSiblings: this.getNodes().size > 3,\n duration: duration,\n charge: 20,\n gravity: 0.08,\n theta: this.getNodes().size > 100 ? 0.8 : 0.34\n };\n }\n\n public getRadialLayoutParams(\n rootNode: string,\n duration = 0\n ): RadialLayoutOptions<unknown, unknown> {\n return {\n centralNode: rootNode,\n radiusDelta: 1,\n nodeGap: 10,\n repulsion: this.getNodes().size > 80 ? 1 : 6,\n duration: duration\n };\n }\n\n public getHierarchicalLayoutParams(\n mode: HierarchicalLayoutMode,\n rootNode: string,\n duration = 0\n ): HierarchicalLayoutOptions {\n return {\n direction: mode,\n roots: [rootNode],\n duration: duration\n };\n }\n\n /**\n * Initialize graph.\n * add nodes and edges to the viz and init the selection.\n */\n public async init(visualization: {nodes: Array<VizNode>; edges: Array<VizEdge>}): Promise<void> {\n this.clearGraph();\n let selectedEntityType: EntityType | undefined = undefined;\n let selectedElements: Array<string> = [];\n // need to remove selected in every items before adding them to Ogma\n const fixedNodes = visualization.nodes.map((node) => {\n if (node.attributes.selected) {\n selectedEntityType = EntityType.NODE;\n selectedElements.push(node.id);\n }\n delete node.attributes.selected;\n return node;\n });\n const fixedEdges = visualization.edges.map((edge) => {\n if (edge.attributes !== undefined) {\n if (edge.attributes.selected) {\n if (selectedEntityType === undefined || selectedEntityType === EntityType.NODE) {\n selectedEntityType = EntityType.EDGE;\n selectedElements = [];\n }\n selectedElements.push(edge.id);\n }\n delete edge.attributes.selected;\n }\n return edge;\n });\n await this.addGraphAfterValidation({\n nodes: fixedNodes as Array<RawNode<LkNodeData>>,\n edges: fixedEdges as Array<RawEdge<LkEdgeData>>\n });\n if (selectedEntityType === EntityType.NODE) {\n this.getNodes(selectedElements).setSelected(true);\n } else if (selectedEntityType === EntityType.EDGE) {\n this.getEdges(selectedElements).setSelected(true);\n }\n }\n\n public async initVisualization(visualization: PopulatedVisualization) {\n this.init(visualization);\n const styles = StyleRules.sanitizeStylesIndex(visualization.design.styles);\n this.LKStyles.initNodeColors(styles.node);\n this.LKStyles.initNodesIcons(styles.node);\n this.LKStyles.initNodesSizes(styles.node);\n this.LKStyles.initNodesShapes(styles.node);\n this.LKStyles.initEdgesWidth(styles.edge);\n this.LKStyles.initEdgesShape(styles.edge);\n this.LKStyles.initEdgesColor(styles.edge);\n this.LKCaptions.initVizCaptions({\n node: visualization.nodeFields.captions || {},\n edge: visualization.edgeFields.captions || {}\n });\n this.LKTransformation.groupedEdges = visualization.edgeGrouping;\n this.LKTransformation.initTransformation();\n this.LKTransformation.initEdgeGroupingStyle();\n }\n\n /**\n * Adding nodes then adding edges to the graph\n */\n public async addGraphAfterValidation(\n graph: RawGraph<LkNodeData, LkEdgeData>\n ): Promise<{\n nodes: NodeList<LkNodeData>;\n edges: EdgeList<LkEdgeData>;\n }> {\n const addedNodes = await this.addNodes(graph.nodes);\n const addedEdges = await this.addEdges(graph.edges);\n return {\n nodes: addedNodes,\n edges: addedEdges\n };\n }\n\n /**\n * Adding edges to the graph after filtering disconnected ones\n */\n public async addEdges(\n edges: Array<RawEdge<LkEdgeData>>,\n options?: AddItemOptions\n ): Promise<EdgeList> {\n const filteredEdges = edges.filter((edge) => {\n return this.getNode(edge.source) !== undefined && this.getNode(edge.target) !== undefined;\n });\n return super.addEdges(filteredEdges, options);\n }\n\n /**\n * Return the list of non filtered nodes\n */\n public getNonFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => !i.hasClass('filtered'))\n : this.getNodes().filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered nodes\n */\n public getFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => i.hasClass('filtered'))\n : this.getNodes().filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Return the list of non filtered edges\n */\n public getNonFilteredEdges(items?: Array<any>): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => !i.hasClass('filtered'))\n : this.getEdges('raw').filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered edges\n */\n public getFilteredEdges(\n items?: Array<any>,\n filter: 'visible' | 'raw' | 'all' = 'raw'\n ): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => i.hasClass('filtered'))\n : this.getEdges(filter).filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Do a full reset on ogma and streams of ogma\n */\n public shutDown(): void {\n this.destroy();\n if (this.store) {\n this.store.clear();\n }\n }\n\n /**\n * Reset the Ogma instance so that it can be used fresh in the next visulization\n */\n public clearOgmaState(): void {\n this.reset();\n if (this.store) {\n this.store.clear();\n }\n this.initOgmaLinkuriousParser();\n }\n\n /**\n * Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()\n */\n public setConfigOgma(configuration?: IOgmaConfig, init?: boolean): void {\n if (configuration) {\n // here we make sure that the internal config object is updated and we have the correct one when resetting\n this._configuration = configuration;\n }\n if (!init) {\n this.setOptions({\n ...this._configuration.options,\n renderer: this._configuration.renderer\n });\n }\n this.setStyles(this._configuration);\n this.setCaptions(this._configuration);\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ogma/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,yDAUiC;AACjC,4DAU0B;AAE1B,0BAA8B;AAC9B,0CAAqC;AAErC,8CAA4C;AAC5C,gEAA8D;AAC9D,kDAAgD;AAChD,kDAA0C;AAG1C,yCAAiD;AAAzC,sBAAA,OAAO,CAAQ;AACV,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAOtC,MAAa,MAAO,SAAQ,cAA4B;IAWtD,YAAoB,cAA2B;QAC7C,gCAAgC;QAChC,KAAK,CAAC,cAAc,CAAC,CAAC;QAFJ,mBAAc,GAAd,cAAc,CAAa;QAG7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,wBAAwB,CAAC,IAAc;QAC7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;YAClE,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,oEAAoE;QACpE,IAAI,CAAC,UAAU,CAAC;YACd,YAAY,EAAE;gBACZ,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC,MAAW,EAAE,EAAE;wBACxB,OAAO,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;oBACvC,CAAC;iBACF;gBACD,SAAS,EAAE;oBACT,OAAO,EAAE,KAAK;iBACf;aACF;SACF,CAAC,CAAC;QAEH,uDAAuD;QACvD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAK,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACnC;aAAM;YACL,6EAA6E;YAC7E,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;SAC1C;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,oCAAkB,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE;oBACrB,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7E,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE;wBACjD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;4BACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;yBAC5C;wBACD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;4BACxD,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;yBAC5C;wBACD,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;4BACzB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;yBAC7B;6BAAM;4BACL,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;yBAC5B;qBACF;yBAAM;wBACL,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC3C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBAC5B;iBACF;qBAAM;oBACL,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBAC5C;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,aAA0B;;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAS,CAAC,IAAI,EAAE;YAClC,IAAI,EAAE,mBAAA,aAAa,0CAAE,OAAO,0CAAE,MAAM,0CAAE,IAAI,KAAI,EAAE;YAChD,IAAI,EAAE,mBAAA,aAAa,0CAAE,OAAO,0CAAE,MAAM,0CAAE,IAAI,KAAI,EAAE;SACjD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAEO,WAAW,CAAC,aAA0B;;QAC5C,MAAM,iBAAiB,iCAAG,aAAa,0CAAE,OAAO,0CAAE,MAAM,0CAAE,IAAI,0CAAE,IAAI,0CAAE,aAAa,CAAC;QACpF,MAAM,iBAAiB,iCAAG,aAAa,0CAAE,OAAO,0CAAE,MAAM,0CAAE,IAAI,0CAAE,IAAI,0CAAE,aAAa,CAAC;QACpF,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAChF,CAAC;IAED;;SAEK;IACE,oBAAoB,CAAC,IAAqB,EAAE,QAAQ,GAAG,CAAC;QAC7D,IAAI,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;QACpE,IAAI,YAAY,GAAG,EAAE,EAAE;YACrB,YAAY,GAAG,EAAE,CAAC;SACnB;QACD,OAAO;YACL,KAAK,EAAE,IAAI,KAAK,6BAAe,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG;YACzD,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC;YACvC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;SAC/C,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAC1B,QAAgB,EAChB,QAAQ,GAAG,CAAC;QAEZ,OAAO;YACL,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAEM,2BAA2B,CAChC,IAA4B,EAC5B,QAAgB,EAChB,QAAQ,GAAG,CAAC;QAEZ,OAAO;YACL,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACU,IAAI,CAAC,aAA6D;;YAC7E,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,kBAAkB,GAA2B,SAAS,CAAC;YAC3D,IAAI,gBAAgB,GAAkB,EAAE,CAAC;YACzC,oEAAoE;YACpE,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC5B,kBAAkB,GAAG,wBAAU,CAAC,IAAI,CAAC;oBACrC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;oBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC5B,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,KAAK,wBAAU,CAAC,IAAI,EAAE;4BAC9E,kBAAkB,GAAG,wBAAU,CAAC,IAAI,CAAC;4BACrC,gBAAgB,GAAG,EAAE,CAAC;yBACvB;wBACD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBAChC;oBACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACjC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,uBAAuB,CAAC;gBACjC,KAAK,EAAE,UAAwC;gBAC/C,KAAK,EAAE,UAAwC;aAChD,CAAC,CAAC;YACH,IAAI,kBAAkB,KAAK,wBAAU,CAAC,IAAI,EAAE;gBAC1C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACnD;iBAAM,IAAI,kBAAkB,KAAK,wBAAU,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACnD;QACH,CAAC;KAAA;IAEY,iBAAiB,CAAC,aAAqC;;YAClE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,cAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;gBAC9B,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE;gBAC7C,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE;aAC9C,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QAChD,CAAC;KAAA;IAED;;OAEG;IACU,uBAAuB,CAClC,KAAuC;;YAKvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,UAAU;aAClB,CAAC;QACJ,CAAC;KAAA;IAED;;OAEG;IACU,QAAQ,CACnB,KAAiC,EACjC,OAAwB;;;;;YAExB,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;YAC5F,CAAC,CAAC,CAAC;YACH,OAAO,OAAM,QAAQ,YAAC,aAAa,EAAE,OAAO,EAAE;QAChD,CAAC;KAAA;IAED;;OAEG;IACI,mBAAmB,CAAC,KAAkB;QAC3C,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7D,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,KAAkB;QACxC,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,KAAkB;QAC3C,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,gBAAgB,CACrB,KAAkB,EAClB,SAAoC,KAAK;QAEzC,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;IACH,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,aAA2B,EAAE,IAAc;QAC9D,IAAI,aAAa,EAAE;YACjB,0GAA0G;YAC1G,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;SACrC;QACD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,UAAU,iCACV,IAAI,CAAC,cAAc,CAAC,OAAO,KAC9B,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,IACtC,CAAC;SACJ;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF;AA9TD,wBA8TC","sourcesContent":["import {\n EntityType,\n ForceLayoutMode,\n HierarchicalLayoutMode,\n IOgmaConfig,\n LkEdgeData,\n LkNodeData,\n PopulatedVisualization,\n VizEdge,\n VizNode\n} from '@linkurious/rest-client';\nimport Ogma, {\n EdgeList,\n ForceLayoutOptions,\n HierarchicalLayoutOptions,\n NodeList,\n NonObjectPropertyWatcher,\n RadialLayoutOptions,\n RawEdge,\n RawGraph,\n RawNode\n} from '@linkurious/ogma';\n\nimport {StyleRules} from '..';\nimport {Tools} from '../tools/tools';\n\nimport {StylesViz} from './features/styles';\nimport {TransformationsViz} from './features/transformations';\nimport {CaptionsViz} from './features/captions';\nimport {RxViz} from './features/reactive';\nimport {OgmaStore} from './features/OgmaStore';\n\nexport {default as Ogma} from '@linkurious/ogma';\nexport const ANIMATION_DURATION = 750;\n\ninterface AddItemOptions {\n batchSize?: number;\n virtual?: boolean;\n}\n\nexport class LKOgma extends Ogma<LkNodeData, LkEdgeData> {\n public LKStyles!: StylesViz;\n public LKCaptions!: CaptionsViz;\n public LKTransformation!: TransformationsViz;\n // Trigger an event with node category changes\n public nodeCategoriesWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n // Trigger an event with edge type changes\n public edgeTypeWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n public store!: OgmaStore;\n private _reactive!: RxViz;\n\n constructor(private _configuration: IOgmaConfig) {\n // set Ogma global configuration\n super(_configuration);\n Object.setPrototypeOf(this, new.target.prototype);\n this.initOgmaLinkuriousParser(true);\n }\n\n private initOgmaLinkuriousParser(init?: boolean): void {\n this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({\n path: 'categories',\n unwindArrays: true,\n filter: 'all'\n });\n this.edgeTypeWatcher = this.schema.watchEdgeNonObjectProperty({\n path: 'type',\n filter: 'all'\n });\n // set ogma max zoom value and selection with mouse option (false?)\n this.setOptions({\n interactions: {\n zoom: {\n maxValue: (params: any) => {\n return 128 / params.smallestNodeSize;\n }\n },\n selection: {\n enabled: false\n }\n }\n });\n\n // only instantiate the store once when app is starting\n if (this._reactive === undefined) {\n this._reactive = new RxViz(this);\n this.store = this._reactive.store;\n } else {\n // if store already exist, but ogma was reset, create new ogma event listener\n this._reactive.listenToSelectionEvents();\n }\n this.initSelection();\n this.setConfigOgma(this._configuration, init);\n this.LKTransformation = new TransformationsViz(this);\n\n this.LKStyles.setNodesDefaultHalo();\n this.LKStyles.setEdgesDefaultHalo();\n this.LKStyles.setBadgeRule();\n this.LKStyles.setFilterClass();\n }\n\n /**\n * Initialize selection behavior\n */\n public initSelection(): void {\n this.events.onClick((e) => {\n if (e !== undefined && e.button === 'left') {\n if (e.target !== null) {\n const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';\n if (this.keyboard.isKeyPressed(multiSelectionKey)) {\n if (e.target.isNode && this.getSelectedEdges().size > 0) {\n this.getSelectedEdges().setSelected(false);\n }\n if (!e.target.isNode && this.getSelectedNodes().size > 0) {\n this.getSelectedNodes().setSelected(false);\n }\n if (e.target.isSelected()) {\n e.target.setSelected(false);\n } else {\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n }\n }\n });\n }\n\n private setStyles(configuration: IOgmaConfig): void {\n this.LKStyles = new StylesViz(this, {\n node: configuration?.options?.styles?.node || {},\n edge: configuration?.options?.styles?.edge || {}\n });\n this.LKStyles.setNodesDefaultStyles();\n this.LKStyles.setEdgesDefaultStyles();\n }\n\n private setCaptions(configuration: IOgmaConfig): void {\n const nodeMaxTextLength = configuration?.options?.styles?.node?.text?.maxTextLength;\n const edgeMaxTextLength = configuration?.options?.styles?.edge?.text?.maxTextLength;\n this.LKCaptions = new CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);\n }\n\n /**\n * Returns Ogma Layout parameters according to visualization layout settings\n * */\n public getForceLayoutParams(mode: ForceLayoutMode, duration = 0): ForceLayoutOptions {\n let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;\n if (dynamicSteps < 40) {\n dynamicSteps = 40;\n }\n return {\n steps: mode === ForceLayoutMode.FAST ? dynamicSteps : 300,\n alignSiblings: this.getNodes().size > 3,\n duration: duration,\n charge: 20,\n gravity: 0.08,\n theta: this.getNodes().size > 100 ? 0.8 : 0.34\n };\n }\n\n public getRadialLayoutParams(\n rootNode: string,\n duration = 0\n ): RadialLayoutOptions<unknown, unknown> {\n return {\n centralNode: rootNode,\n radiusDelta: 1,\n nodeGap: 10,\n repulsion: this.getNodes().size > 80 ? 1 : 6,\n duration: duration\n };\n }\n\n public getHierarchicalLayoutParams(\n mode: HierarchicalLayoutMode,\n rootNode: string,\n duration = 0\n ): HierarchicalLayoutOptions {\n return {\n direction: mode,\n roots: [rootNode],\n duration: duration\n };\n }\n\n /**\n * Initialize graph.\n * add nodes and edges to the viz and init the selection.\n */\n public async init(visualization: {nodes: Array<VizNode>; edges: Array<VizEdge>}): Promise<void> {\n this.clearGraph();\n let selectedEntityType: EntityType | undefined = undefined;\n let selectedElements: Array<string> = [];\n // need to remove selected in every items before adding them to Ogma\n const fixedNodes = visualization.nodes.map((node) => {\n if (node.attributes.selected) {\n selectedEntityType = EntityType.NODE;\n selectedElements.push(node.id);\n }\n delete node.attributes.selected;\n return node;\n });\n const fixedEdges = visualization.edges.map((edge) => {\n if (edge.attributes !== undefined) {\n if (edge.attributes.selected) {\n if (selectedEntityType === undefined || selectedEntityType === EntityType.NODE) {\n selectedEntityType = EntityType.EDGE;\n selectedElements = [];\n }\n selectedElements.push(edge.id);\n }\n delete edge.attributes.selected;\n }\n return edge;\n });\n await this.addGraphAfterValidation({\n nodes: fixedNodes as Array<RawNode<LkNodeData>>,\n edges: fixedEdges as Array<RawEdge<LkEdgeData>>\n });\n if (selectedEntityType === EntityType.NODE) {\n this.getNodes(selectedElements).setSelected(true);\n } else if (selectedEntityType === EntityType.EDGE) {\n this.getEdges(selectedElements).setSelected(true);\n }\n }\n\n public async initVisualization(visualization: PopulatedVisualization) {\n this.init(visualization);\n const styles = StyleRules.sanitizeStylesIndex(visualization.design.styles);\n this.LKStyles.initNodeColors(styles.node);\n this.LKStyles.initNodesIcons(styles.node);\n this.LKStyles.initNodesSizes(styles.node);\n this.LKStyles.initNodesShapes(styles.node);\n this.LKStyles.initEdgesWidth(styles.edge);\n this.LKStyles.initEdgesShape(styles.edge);\n this.LKStyles.initEdgesColor(styles.edge);\n this.LKCaptions.initVizCaptions({\n node: visualization.nodeFields.captions || {},\n edge: visualization.edgeFields.captions || {}\n });\n this.LKTransformation.groupedEdges = visualization.edgeGrouping;\n this.LKTransformation.initTransformation();\n this.LKTransformation.initEdgeGroupingStyle();\n }\n\n /**\n * Adding nodes then adding edges to the graph\n */\n public async addGraphAfterValidation(\n graph: RawGraph<LkNodeData, LkEdgeData>\n ): Promise<{\n nodes: NodeList<LkNodeData>;\n edges: EdgeList<LkEdgeData>;\n }> {\n const addedNodes = await this.addNodes(graph.nodes);\n const addedEdges = await this.addEdges(graph.edges);\n return {\n nodes: addedNodes,\n edges: addedEdges\n };\n }\n\n /**\n * Adding edges to the graph after filtering disconnected ones\n */\n public async addEdges(\n edges: Array<RawEdge<LkEdgeData>>,\n options?: AddItemOptions\n ): Promise<EdgeList> {\n const filteredEdges = edges.filter((edge) => {\n return this.getNode(edge.source) !== undefined && this.getNode(edge.target) !== undefined;\n });\n return super.addEdges(filteredEdges, options);\n }\n\n /**\n * Return the list of non filtered nodes\n */\n public getNonFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => !i.hasClass('filtered'))\n : this.getNodes().filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered nodes\n */\n public getFilteredNodes(items?: Array<any>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => i.hasClass('filtered'))\n : this.getNodes().filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Return the list of non filtered edges\n */\n public getNonFilteredEdges(items?: Array<any>): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => !i.hasClass('filtered'))\n : this.getEdges('raw').filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered edges\n */\n public getFilteredEdges(\n items?: Array<any>,\n filter: 'visible' | 'raw' | 'all' = 'raw'\n ): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => i.hasClass('filtered'))\n : this.getEdges(filter).filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Do a full reset on ogma and streams of ogma\n */\n public shutDown(): void {\n this.destroy();\n if (this.store) {\n this.store.clear();\n }\n }\n\n /**\n * Reset the Ogma instance so that it can be used fresh in the next visulization\n */\n public clearOgmaState(): void {\n this.reset();\n if (this.store) {\n this.store.clear();\n }\n this.initOgmaLinkuriousParser();\n }\n\n /**\n * Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()\n */\n public setConfigOgma(configuration?: IOgmaConfig, init?: boolean): void {\n if (configuration) {\n // here we make sure that the internal config object is updated and we have the correct one when resetting\n this._configuration = configuration;\n }\n if (!init) {\n this.setOptions({\n ...this._configuration.options,\n renderer: this._configuration.renderer\n });\n }\n this.setStyles(this._configuration);\n this.setCaptions(this._configuration);\n }\n}\n"]}