@vertexvis/viewer 0.18.2-testing.0 → 0.18.2-testing.1
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/dist/cjs/index-b99cd335.js +126 -1
- package/dist/esm/index-fd7d7b68.js +126 -1
- package/package.json +7 -7
- package/dist/components/_commonjsHelpers.js +0 -41
- package/dist/components/_commonjsHelpers.js.map +0 -1
- package/dist/components/browser.esm.js +0 -3173
- package/dist/components/browser.esm.js.map +0 -1
- package/dist/components/bundle.esm.js +0 -2250
- package/dist/components/bundle.esm.js.map +0 -1
- package/dist/components/bundle.esm2.js +0 -39740
- package/dist/components/bundle.esm2.js.map +0 -1
- package/dist/components/config.js +0 -81
- package/dist/components/config.js.map +0 -1
- package/dist/components/controller.js +0 -7627
- package/dist/components/controller.js.map +0 -1
- package/dist/components/controller2.js +0 -124
- package/dist/components/controller2.js.map +0 -1
- package/dist/components/controller3.js +0 -111
- package/dist/components/controller3.js.map +0 -1
- package/dist/components/cursors.js +0 -110
- package/dist/components/cursors.js.map +0 -1
- package/dist/components/dom.js +0 -43
- package/dist/components/dom.js.map +0 -1
- package/dist/components/dom2.js +0 -10
- package/dist/components/dom2.js.map +0 -1
- package/dist/components/elementRectObserver.js +0 -25
- package/dist/components/elementRectObserver.js.map +0 -1
- package/dist/components/entities.js +0 -179
- package/dist/components/entities.js.map +0 -1
- package/dist/components/errors.js +0 -80
- package/dist/components/errors.js.map +0 -1
- package/dist/components/events.js +0 -11
- package/dist/components/events.js.map +0 -1
- package/dist/components/index.d.ts +0 -26
- package/dist/components/index.js +0 -365
- package/dist/components/index.js.map +0 -1
- package/dist/components/index2.js +0 -63
- package/dist/components/index2.js.map +0 -1
- package/dist/components/interactions.js +0 -236
- package/dist/components/interactions.js.map +0 -1
- package/dist/components/mapper.js +0 -9811
- package/dist/components/mapper.js.map +0 -1
- package/dist/components/markup.js +0 -33
- package/dist/components/markup.js.map +0 -1
- package/dist/components/model.js +0 -134
- package/dist/components/model.js.map +0 -1
- package/dist/components/model2.js +0 -157
- package/dist/components/model2.js.map +0 -1
- package/dist/components/overlays.js +0 -76
- package/dist/components/overlays.js.map +0 -1
- package/dist/components/png-decoder.js +0 -2405
- package/dist/components/png-decoder.js.map +0 -1
- package/dist/components/regl-component.js +0 -12582
- package/dist/components/regl-component.js.map +0 -1
- package/dist/components/results.js +0 -24
- package/dist/components/results.js.map +0 -1
- package/dist/components/row.js +0 -32
- package/dist/components/row.js.map +0 -1
- package/dist/components/scene-tree-search.js +0 -146
- package/dist/components/scene-tree-search.js.map +0 -1
- package/dist/components/scene-tree-table-layout.js +0 -928
- package/dist/components/scene-tree-table-layout.js.map +0 -1
- package/dist/components/scene-tree-toolbar.js +0 -35
- package/dist/components/scene-tree-toolbar.js.map +0 -1
- package/dist/components/scene.js +0 -1508
- package/dist/components/scene.js.map +0 -1
- package/dist/components/stencil.js +0 -25
- package/dist/components/stencil.js.map +0 -1
- package/dist/components/streamAttributes.js +0 -40833
- package/dist/components/streamAttributes.js.map +0 -1
- package/dist/components/templates.js +0 -36
- package/dist/components/templates.js.map +0 -1
- package/dist/components/tslib.es6.js +0 -125
- package/dist/components/tslib.es6.js.map +0 -1
- package/dist/components/vertex-scene-tree-search.d.ts +0 -11
- package/dist/components/vertex-scene-tree-search.js +0 -11
- package/dist/components/vertex-scene-tree-search.js.map +0 -1
- package/dist/components/vertex-scene-tree-table-cell.d.ts +0 -11
- package/dist/components/vertex-scene-tree-table-cell.js +0 -209
- package/dist/components/vertex-scene-tree-table-cell.js.map +0 -1
- package/dist/components/vertex-scene-tree-table-column.d.ts +0 -11
- package/dist/components/vertex-scene-tree-table-column.js +0 -42
- package/dist/components/vertex-scene-tree-table-column.js.map +0 -1
- package/dist/components/vertex-scene-tree-table-header.d.ts +0 -11
- package/dist/components/vertex-scene-tree-table-header.js +0 -38
- package/dist/components/vertex-scene-tree-table-header.js.map +0 -1
- package/dist/components/vertex-scene-tree-table-layout.d.ts +0 -11
- package/dist/components/vertex-scene-tree-table-layout.js +0 -11
- package/dist/components/vertex-scene-tree-table-layout.js.map +0 -1
- package/dist/components/vertex-scene-tree-table-resize-divider.d.ts +0 -11
- package/dist/components/vertex-scene-tree-table-resize-divider.js +0 -57
- package/dist/components/vertex-scene-tree-table-resize-divider.js.map +0 -1
- package/dist/components/vertex-scene-tree-toolbar-group.d.ts +0 -11
- package/dist/components/vertex-scene-tree-toolbar-group.js +0 -38
- package/dist/components/vertex-scene-tree-toolbar-group.js.map +0 -1
- package/dist/components/vertex-scene-tree-toolbar.d.ts +0 -11
- package/dist/components/vertex-scene-tree-toolbar.js +0 -11
- package/dist/components/vertex-scene-tree-toolbar.js.map +0 -1
- package/dist/components/vertex-scene-tree.d.ts +0 -11
- package/dist/components/vertex-scene-tree.js +0 -803
- package/dist/components/vertex-scene-tree.js.map +0 -1
- package/dist/components/vertex-viewer-box-query-tool.d.ts +0 -11
- package/dist/components/vertex-viewer-box-query-tool.js +0 -352
- package/dist/components/vertex-viewer-box-query-tool.js.map +0 -1
- package/dist/components/vertex-viewer-button.d.ts +0 -11
- package/dist/components/vertex-viewer-button.js +0 -11
- package/dist/components/vertex-viewer-button.js.map +0 -1
- package/dist/components/vertex-viewer-default-toolbar.d.ts +0 -11
- package/dist/components/vertex-viewer-default-toolbar.js +0 -99
- package/dist/components/vertex-viewer-default-toolbar.js.map +0 -1
- package/dist/components/vertex-viewer-dom-element.d.ts +0 -11
- package/dist/components/vertex-viewer-dom-element.js +0 -11
- package/dist/components/vertex-viewer-dom-element.js.map +0 -1
- package/dist/components/vertex-viewer-dom-group.d.ts +0 -11
- package/dist/components/vertex-viewer-dom-group.js +0 -11
- package/dist/components/vertex-viewer-dom-group.js.map +0 -1
- package/dist/components/vertex-viewer-dom-renderer.d.ts +0 -11
- package/dist/components/vertex-viewer-dom-renderer.js +0 -11
- package/dist/components/vertex-viewer-dom-renderer.js.map +0 -1
- package/dist/components/vertex-viewer-hit-result-indicator.d.ts +0 -11
- package/dist/components/vertex-viewer-hit-result-indicator.js +0 -335
- package/dist/components/vertex-viewer-hit-result-indicator.js.map +0 -1
- package/dist/components/vertex-viewer-icon.d.ts +0 -11
- package/dist/components/vertex-viewer-icon.js +0 -11
- package/dist/components/vertex-viewer-icon.js.map +0 -1
- package/dist/components/vertex-viewer-layer.d.ts +0 -11
- package/dist/components/vertex-viewer-layer.js +0 -11
- package/dist/components/vertex-viewer-layer.js.map +0 -1
- package/dist/components/vertex-viewer-markup-arrow.d.ts +0 -11
- package/dist/components/vertex-viewer-markup-arrow.js +0 -11
- package/dist/components/vertex-viewer-markup-arrow.js.map +0 -1
- package/dist/components/vertex-viewer-markup-circle.d.ts +0 -11
- package/dist/components/vertex-viewer-markup-circle.js +0 -11
- package/dist/components/vertex-viewer-markup-circle.js.map +0 -1
- package/dist/components/vertex-viewer-markup-freeform.d.ts +0 -11
- package/dist/components/vertex-viewer-markup-freeform.js +0 -11
- package/dist/components/vertex-viewer-markup-freeform.js.map +0 -1
- package/dist/components/vertex-viewer-markup-tool.d.ts +0 -11
- package/dist/components/vertex-viewer-markup-tool.js +0 -257
- package/dist/components/vertex-viewer-markup-tool.js.map +0 -1
- package/dist/components/vertex-viewer-markup.d.ts +0 -11
- package/dist/components/vertex-viewer-markup.js +0 -362
- package/dist/components/vertex-viewer-markup.js.map +0 -1
- package/dist/components/vertex-viewer-measurement-details.d.ts +0 -11
- package/dist/components/vertex-viewer-measurement-details.js +0 -307
- package/dist/components/vertex-viewer-measurement-details.js.map +0 -1
- package/dist/components/vertex-viewer-measurement-distance.d.ts +0 -11
- package/dist/components/vertex-viewer-measurement-distance.js +0 -1067
- package/dist/components/vertex-viewer-measurement-distance.js.map +0 -1
- package/dist/components/vertex-viewer-measurement-line.d.ts +0 -11
- package/dist/components/vertex-viewer-measurement-line.js +0 -11
- package/dist/components/vertex-viewer-measurement-line.js.map +0 -1
- package/dist/components/vertex-viewer-measurement-overlays.d.ts +0 -11
- package/dist/components/vertex-viewer-measurement-overlays.js +0 -11
- package/dist/components/vertex-viewer-measurement-overlays.js.map +0 -1
- package/dist/components/vertex-viewer-measurement-precise.d.ts +0 -11
- package/dist/components/vertex-viewer-measurement-precise.js +0 -362
- package/dist/components/vertex-viewer-measurement-precise.js.map +0 -1
- package/dist/components/vertex-viewer-pin-group.d.ts +0 -11
- package/dist/components/vertex-viewer-pin-group.js +0 -11
- package/dist/components/vertex-viewer-pin-group.js.map +0 -1
- package/dist/components/vertex-viewer-pin-label-line.d.ts +0 -11
- package/dist/components/vertex-viewer-pin-label-line.js +0 -11
- package/dist/components/vertex-viewer-pin-label-line.js.map +0 -1
- package/dist/components/vertex-viewer-pin-label.d.ts +0 -11
- package/dist/components/vertex-viewer-pin-label.js +0 -11
- package/dist/components/vertex-viewer-pin-label.js.map +0 -1
- package/dist/components/vertex-viewer-pin-tool.d.ts +0 -11
- package/dist/components/vertex-viewer-pin-tool.js +0 -430
- package/dist/components/vertex-viewer-pin-tool.js.map +0 -1
- package/dist/components/vertex-viewer-spinner.d.ts +0 -11
- package/dist/components/vertex-viewer-spinner.js +0 -11
- package/dist/components/vertex-viewer-spinner.js.map +0 -1
- package/dist/components/vertex-viewer-toolbar-group.d.ts +0 -11
- package/dist/components/vertex-viewer-toolbar-group.js +0 -11
- package/dist/components/vertex-viewer-toolbar-group.js.map +0 -1
- package/dist/components/vertex-viewer-toolbar.d.ts +0 -11
- package/dist/components/vertex-viewer-toolbar.js +0 -11
- package/dist/components/vertex-viewer-toolbar.js.map +0 -1
- package/dist/components/vertex-viewer-transform-widget.d.ts +0 -11
- package/dist/components/vertex-viewer-transform-widget.js +0 -838
- package/dist/components/vertex-viewer-transform-widget.js.map +0 -1
- package/dist/components/vertex-viewer-view-cube.d.ts +0 -11
- package/dist/components/vertex-viewer-view-cube.js +0 -270
- package/dist/components/vertex-viewer-view-cube.js.map +0 -1
- package/dist/components/vertex-viewer.d.ts +0 -11
- package/dist/components/vertex-viewer.js +0 -3543
- package/dist/components/vertex-viewer.js.map +0 -1
- package/dist/components/viewer-button.js +0 -35
- package/dist/components/viewer-button.js.map +0 -1
- package/dist/components/viewer-dom-element.js +0 -250
- package/dist/components/viewer-dom-element.js.map +0 -1
- package/dist/components/viewer-dom-group.js +0 -214
- package/dist/components/viewer-dom-group.js.map +0 -1
- package/dist/components/viewer-dom-renderer.js +0 -295
- package/dist/components/viewer-dom-renderer.js.map +0 -1
- package/dist/components/viewer-icon.js +0 -87
- package/dist/components/viewer-icon.js.map +0 -1
- package/dist/components/viewer-layer.js +0 -46
- package/dist/components/viewer-layer.js.map +0 -1
- package/dist/components/viewer-markup-arrow.js +0 -235
- package/dist/components/viewer-markup-arrow.js.map +0 -1
- package/dist/components/viewer-markup-circle-components.js +0 -42
- package/dist/components/viewer-markup-circle-components.js.map +0 -1
- package/dist/components/viewer-markup-circle.js +0 -201
- package/dist/components/viewer-markup-circle.js.map +0 -1
- package/dist/components/viewer-markup-freeform.js +0 -251
- package/dist/components/viewer-markup-freeform.js.map +0 -1
- package/dist/components/viewer-measurement-line.js +0 -77
- package/dist/components/viewer-measurement-line.js.map +0 -1
- package/dist/components/viewer-measurement-overlays.js +0 -184
- package/dist/components/viewer-measurement-overlays.js.map +0 -1
- package/dist/components/viewer-pin-group.js +0 -207
- package/dist/components/viewer-pin-group.js.map +0 -1
- package/dist/components/viewer-pin-label-line.js +0 -43
- package/dist/components/viewer-pin-label-line.js.map +0 -1
- package/dist/components/viewer-pin-label.js +0 -427
- package/dist/components/viewer-pin-label.js.map +0 -1
- package/dist/components/viewer-spinner.js +0 -53
- package/dist/components/viewer-spinner.js.map +0 -1
- package/dist/components/viewer-toolbar-group.js +0 -42
- package/dist/components/viewer-toolbar-group.js.map +0 -1
- package/dist/components/viewer-toolbar.js +0 -61
- package/dist/components/viewer-toolbar.js.map +0 -1
- package/dist/components/viewport.js +0 -188
- package/dist/components/viewport.js.map +0 -1
- package/dist/components/wrappers_pb.js +0 -1926
- package/dist/components/wrappers_pb.js.map +0 -1
|
@@ -1,803 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023 Vertex Software LLC. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { h, Fragment, proxyCustomElement, HTMLElement, createEvent, forceUpdate, Host } from '@stencil/core/internal/client';
|
|
5
|
-
import { f as __rest } from './tslib.es6.js';
|
|
6
|
-
import { a as SceneTreeAPIClient_1, w as webSocketSubscriptionTransportFactory, S as SceneTreeController, b as SceneTreeErrorDetails, c as SceneTreeErrorCode } from './controller.js';
|
|
7
|
-
import { p as parseConfig } from './config.js';
|
|
8
|
-
import { g as getSceneTreeContainsElement, d as defineCustomElement$5 } from './scene-tree-table-layout.js';
|
|
9
|
-
import { i as isLoadedRow } from './row.js';
|
|
10
|
-
import { d as defineCustomElement$6 } from './scene-tree-search.js';
|
|
11
|
-
import { d as defineCustomElement$4 } from './scene-tree-toolbar.js';
|
|
12
|
-
import { d as defineCustomElement$3 } from './viewer-icon.js';
|
|
13
|
-
import { d as defineCustomElement$2 } from './viewer-spinner.js';
|
|
14
|
-
|
|
15
|
-
window.requestIdleCallback =
|
|
16
|
-
window.requestIdleCallback ||
|
|
17
|
-
function(cb) {
|
|
18
|
-
var start = Date.now();
|
|
19
|
-
return setTimeout(function() {
|
|
20
|
-
cb({
|
|
21
|
-
didTimeout: false,
|
|
22
|
-
timeRemaining: function() {
|
|
23
|
-
return Math.max(0, 50 - (Date.now() - start));
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
}, 1);
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
window.cancelIdleCallback =
|
|
30
|
-
window.cancelIdleCallback ||
|
|
31
|
-
function(id) {
|
|
32
|
-
clearTimeout(id);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
function isSceneTreeTableCellElement(el) {
|
|
36
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
-
return el != null && el.nodeName === 'VERTEX-SCENE-TREE-TABLE-CELL';
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
41
|
-
const SceneTreeError = ({ details }, children) => {
|
|
42
|
-
return (h("div", { class: "error" },
|
|
43
|
-
h("div", { class: "error-section error-message" },
|
|
44
|
-
h("span", null, details.message),
|
|
45
|
-
details.link && (h(Fragment, null,
|
|
46
|
-
h("span", null, " See our "),
|
|
47
|
-
h("a", { href: details.link, target: "_blank" }, "documentation"),
|
|
48
|
-
' ',
|
|
49
|
-
h("span", null, " for more information.")))),
|
|
50
|
-
h("div", { class: "error-section" }, children)));
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
async function showItem(viewer, id, { suppliedCorrelationId } = {}) {
|
|
54
|
-
const scene = await viewer.scene();
|
|
55
|
-
return scene
|
|
56
|
-
.items((op) => op.where((q) => q.withItemId(id)).show())
|
|
57
|
-
.execute({ suppliedCorrelationId });
|
|
58
|
-
}
|
|
59
|
-
async function hideItem(viewer, id, { suppliedCorrelationId } = {}) {
|
|
60
|
-
const scene = await viewer.scene();
|
|
61
|
-
return scene
|
|
62
|
-
.items((op) => op.where((q) => q.withItemId(id)).hide())
|
|
63
|
-
.execute({
|
|
64
|
-
suppliedCorrelationId,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
async function selectItem(viewer, id, { append = false, suppliedCorrelationId }) {
|
|
68
|
-
const scene = await viewer.scene();
|
|
69
|
-
return scene
|
|
70
|
-
.items((op) => [
|
|
71
|
-
...(append ? [] : [op.where((q) => q.all()).deselect()]),
|
|
72
|
-
op.where((q) => q.withItemId(id)).select(),
|
|
73
|
-
])
|
|
74
|
-
.execute({ suppliedCorrelationId });
|
|
75
|
-
}
|
|
76
|
-
async function selectRangeInSceneTree(viewer, start, end, { append = true, suppliedCorrelationId }) {
|
|
77
|
-
const scene = await viewer.scene();
|
|
78
|
-
return scene
|
|
79
|
-
.items((op) => [
|
|
80
|
-
...(append ? [] : [op.where((q) => q.all()).deselect()]),
|
|
81
|
-
op.where((q) => q.withSceneTreeRange({ start, end })).select(),
|
|
82
|
-
])
|
|
83
|
-
.execute({
|
|
84
|
-
suppliedCorrelationId,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
async function selectFilterResults(viewer, filter, keys, exactMatch, { append = false, suppliedCorrelationId }) {
|
|
88
|
-
const scene = await viewer.scene();
|
|
89
|
-
return scene
|
|
90
|
-
.items((op) => [
|
|
91
|
-
...(append ? [] : [op.where((q) => q.all()).deselect()]),
|
|
92
|
-
op.where((q) => q.withMetadata(filter, keys, exactMatch)).select(),
|
|
93
|
-
])
|
|
94
|
-
.execute({
|
|
95
|
-
suppliedCorrelationId,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
async function deselectItem(viewer, id, { suppliedCorrelationId } = {}) {
|
|
99
|
-
const scene = await viewer.scene();
|
|
100
|
-
return scene
|
|
101
|
-
.items((op) => op.where((q) => q.withItemId(id)).deselect())
|
|
102
|
-
.execute({
|
|
103
|
-
suppliedCorrelationId,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const sceneTreeCss = "button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}.button{padding:0.5rem;border-radius:0.25rem}.button-secondary{color:var(--neutral-800);background-color:var(--neutral-300)}.button-secondary:hover{color:var(--neutral-900)}.button-secondary:hover:enabled{box-shadow:0 2px 2px rgb(0 0 0 / 20%)}.button-secondary:disabled{opacity:0.8}.button-secondary:hover:disabled{cursor:not-allowed}:host{--scene-tree-toolbar-separator:1px solid var(--neutral-300);width:300px;height:100%;user-select:none;-webkit-user-select:none;cursor:default;display:flex;flex-direction:column}.rows-scroll{position:relative;height:var(--scene-tree-row-height, 0);flex-grow:1}.rows{position:relative}.row{position:absolute;display:flex;align-items:center;width:100%;height:var(--scene-tree-row-height);padding:var(--scene-tree-row-padding);box-sizing:border-box}.row:hover{background-color:var(--scene-tree-row-hover-color)}.row.is-selected{background-color:var(--scene-tree-row-selected-color)}.expand-toggle{cursor:pointer;width:16px}.row-text{margin-left:0.25rem;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.visibility-btn{display:flex;align-items:center;visibility:hidden;padding:4px}.visibility-btn.is-hidden{visibility:visible}.row:hover .visibility-btn{visibility:visible}.error,.empty-results{display:flex;flex-direction:column;align-items:center;font-size:0.875rem;width:100%;height:100%;padding:1rem;box-sizing:border-box;justify-content:center}.error-section{margin-top:1rem}.error-message{text-align:center}.search-toolbar,slot[name='header']::slotted(*){border-bottom:var(--scene-tree-toolbar-separator)}slot[name='footer']::slotted(:not(:last-child)){border-top:var(--scene-tree-toolbar-separator)}.header{display:flex;flex-direction:column}.footer{display:flex;flex-direction:column}.loading{position:absolute;top:150px;left:50%;transform:translate(-50%, -50%);text-align:center}";
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* The minimum amount of time provided by requestIdleCallback to clear purged
|
|
111
|
-
* data. A value too low may cause contention with browser rendering. A value
|
|
112
|
-
* too high will cause too many items to be accumulated.
|
|
113
|
-
*/
|
|
114
|
-
const MIN_CLEAR_UNUSED_DATA_MS = 25;
|
|
115
|
-
const SceneTree = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
116
|
-
constructor() {
|
|
117
|
-
super();
|
|
118
|
-
this.__registerHost();
|
|
119
|
-
this.__attachShadow();
|
|
120
|
-
this.connectionError = createEvent(this, "connectionError", 7);
|
|
121
|
-
this.firstRowRendered = createEvent(this, "firstRowRendered", 7);
|
|
122
|
-
/**
|
|
123
|
-
* The number of offscreen rows above and below the viewport to render. Having
|
|
124
|
-
* a higher number reduces the chance of the browser not displaying a row
|
|
125
|
-
* while scrolling.
|
|
126
|
-
*/
|
|
127
|
-
this.overScanCount = 25;
|
|
128
|
-
/**
|
|
129
|
-
* Sets the default environment for the viewer. This setting is used for
|
|
130
|
-
* auto-configuring network hosts.
|
|
131
|
-
*
|
|
132
|
-
* Use the `config` property for manually setting hosts.
|
|
133
|
-
*/
|
|
134
|
-
this.configEnv = 'platprod';
|
|
135
|
-
/**
|
|
136
|
-
* Indicates whether the metadata search should use an exact match.
|
|
137
|
-
*/
|
|
138
|
-
this.metadataSearchExactMatch = false;
|
|
139
|
-
/**
|
|
140
|
-
* A list of the metadata keys that a scene tree search should be performed on.
|
|
141
|
-
*/
|
|
142
|
-
this.metadataSearchKeys = [];
|
|
143
|
-
/**
|
|
144
|
-
* A list of part metadata keys that will be made available to each row. This
|
|
145
|
-
* metadata can be used for data binding inside the scene tree's template.
|
|
146
|
-
*/
|
|
147
|
-
this.metadataKeys = [];
|
|
148
|
-
this.rows = [];
|
|
149
|
-
this.totalRows = 0;
|
|
150
|
-
this.showLoader = false;
|
|
151
|
-
this.showEmptyResults = false;
|
|
152
|
-
/**
|
|
153
|
-
* This stores internal state that you want to preserve across live-reloads,
|
|
154
|
-
* but shouldn't trigger a refresh if the data changes. Marking this with
|
|
155
|
-
* @State to allow to preserve state across live-reloads.
|
|
156
|
-
*/
|
|
157
|
-
this.stateMap = {
|
|
158
|
-
componentLoaded: false,
|
|
159
|
-
};
|
|
160
|
-
this.attemptingRetry = false;
|
|
161
|
-
this.firstCellRendered = false;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Schedules a render of the rows in the scene tree. Useful if any custom
|
|
165
|
-
* data in your scene tree has changed, and you want to update the row's
|
|
166
|
-
* contents.
|
|
167
|
-
*
|
|
168
|
-
* **Note:** This is an asynchronous operation. The update may happen on the
|
|
169
|
-
* next frame.
|
|
170
|
-
*/
|
|
171
|
-
async invalidateRows() {
|
|
172
|
-
forceUpdate(this.getLayoutElement());
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Scrolls the tree to the given row index.
|
|
176
|
-
*
|
|
177
|
-
* @param index An index of the row to scroll to.
|
|
178
|
-
* @param options A set of options to configure the scrolling behavior.
|
|
179
|
-
*/
|
|
180
|
-
async scrollToIndex(index, options = {}) {
|
|
181
|
-
const { animate, position = 'middle' } = options;
|
|
182
|
-
const i = Math.max(0, Math.min(index, this.totalRows));
|
|
183
|
-
const top = this.getScrollToPosition(i, position);
|
|
184
|
-
this.getLayoutElement().scrollToPosition(top, {
|
|
185
|
-
behavior: animate ? 'smooth' : undefined,
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Scrolls the tree to an item with the given ID. If the node for the item is
|
|
190
|
-
* not expanded, the tree will expand each of its parent nodes.
|
|
191
|
-
*
|
|
192
|
-
* @param itemId An ID of an item to scroll to.
|
|
193
|
-
* @param options A set of options to configure the scrolling behavior.
|
|
194
|
-
* @returns A promise that resolves when the operation is finished.
|
|
195
|
-
*/
|
|
196
|
-
async scrollToItem(itemId, options = {}) {
|
|
197
|
-
var _a;
|
|
198
|
-
const rowsBeforeExpand = this.totalRows;
|
|
199
|
-
const index = await ((_a = this.controller) === null || _a === void 0 ? void 0 : _a.expandParentNodes(itemId));
|
|
200
|
-
if (index != null && rowsBeforeExpand !== this.totalRows) {
|
|
201
|
-
return new Promise((resolve) => {
|
|
202
|
-
const layoutEl = this.getLayoutElement();
|
|
203
|
-
const handleLayoutRendered = async () => {
|
|
204
|
-
layoutEl.removeEventListener('layoutRendered', handleLayoutRendered);
|
|
205
|
-
await this.scrollToIndex(index, options);
|
|
206
|
-
resolve();
|
|
207
|
-
};
|
|
208
|
-
layoutEl.addEventListener('layoutRendered', handleLayoutRendered);
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
else if (index != null) {
|
|
212
|
-
await this.scrollToIndex(index, options);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Performs an API call to expand all nodes in the tree.
|
|
217
|
-
*/
|
|
218
|
-
async expandAll() {
|
|
219
|
-
var _a;
|
|
220
|
-
await ((_a = this.controller) === null || _a === void 0 ? void 0 : _a.expandAll());
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Performs an API call to collapse all nodes in the tree.
|
|
224
|
-
*/
|
|
225
|
-
async collapseAll() {
|
|
226
|
-
var _a;
|
|
227
|
-
await ((_a = this.controller) === null || _a === void 0 ? void 0 : _a.collapseAll());
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Performs an API call that will expand the node associated to the specified
|
|
231
|
-
* row or row index.
|
|
232
|
-
*
|
|
233
|
-
* @param row A row, row index, or node to expand.
|
|
234
|
-
*/
|
|
235
|
-
async expandItem(row) {
|
|
236
|
-
await this.performRowOperation(row, async ({ id, node }) => {
|
|
237
|
-
var _a;
|
|
238
|
-
if (!node.expanded) {
|
|
239
|
-
await ((_a = this.controller) === null || _a === void 0 ? void 0 : _a.expandNode(id));
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Performs an API call that will collapse the node associated to the
|
|
245
|
-
* specified row or row index.
|
|
246
|
-
*
|
|
247
|
-
* @param row A row, row index, or node to collapse.
|
|
248
|
-
*/
|
|
249
|
-
async collapseItem(row) {
|
|
250
|
-
await this.performRowOperation(row, async ({ id, node }) => {
|
|
251
|
-
var _a;
|
|
252
|
-
if (node.expanded) {
|
|
253
|
-
await ((_a = this.controller) === null || _a === void 0 ? void 0 : _a.collapseNode(id));
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Performs an API call that will either expand or collapse the node
|
|
259
|
-
* associated to the given row or row index.
|
|
260
|
-
*
|
|
261
|
-
* @param row The row, row index, or node to collapse or expand.
|
|
262
|
-
*/
|
|
263
|
-
async toggleExpandItem(row) {
|
|
264
|
-
await this.performRowOperation(row, async ({ node }) => {
|
|
265
|
-
if (node.expanded) {
|
|
266
|
-
await this.collapseItem(node);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
await this.expandItem(node);
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Performs an API call that will either hide or show the item associated to
|
|
275
|
-
* the given row or row index.
|
|
276
|
-
*
|
|
277
|
-
* @param row The row, row index, or node to toggle visibility.
|
|
278
|
-
*/
|
|
279
|
-
async toggleItemVisibility(row) {
|
|
280
|
-
await this.performRowOperation(row, async ({ viewer, id, node }) => {
|
|
281
|
-
if (node.visible || node.partiallyVisible) {
|
|
282
|
-
await hideItem(viewer, id);
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
await showItem(viewer, id);
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Performs an API call that will hide the item associated to the given row
|
|
291
|
-
* or row index.
|
|
292
|
-
*
|
|
293
|
-
* @param row The row, row index, or node to hide.
|
|
294
|
-
*/
|
|
295
|
-
async hideItem(row) {
|
|
296
|
-
await this.performRowOperation(row, async ({ viewer, id, node }) => {
|
|
297
|
-
if (node.visible) {
|
|
298
|
-
await hideItem(viewer, id);
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Performs an API call that will show the item associated to the given row
|
|
304
|
-
* or row index.
|
|
305
|
-
*
|
|
306
|
-
* @param row The row, row index, or node to show.
|
|
307
|
-
*/
|
|
308
|
-
async showItem(row) {
|
|
309
|
-
await this.performRowOperation(row, async ({ viewer, id, node }) => {
|
|
310
|
-
if (!node.visible) {
|
|
311
|
-
await showItem(viewer, id);
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Performs an API call that will select the item associated to the given row
|
|
317
|
-
* or row index.
|
|
318
|
-
*
|
|
319
|
-
* This method supports a `recurseParent` option that allows for recursively
|
|
320
|
-
* selecting the next unselected parent node. This behavior is considered
|
|
321
|
-
* stateful. Each call to `selectItem` will track the ancestry of the passed
|
|
322
|
-
* in `rowArg`. If calling `selectItem` with a row not belonging to the
|
|
323
|
-
* ancestry of a previous selection, then this method will perform a standard
|
|
324
|
-
* selection.
|
|
325
|
-
*
|
|
326
|
-
* @param row The row, row index or node to select.
|
|
327
|
-
* @param options A set of options to configure selection behavior.
|
|
328
|
-
*/
|
|
329
|
-
async selectItem(row, _a = {}) {
|
|
330
|
-
var { recurseParent } = _a, options = __rest(_a, ["recurseParent"]);
|
|
331
|
-
await this.performRowOperation(row, async ({ viewer, id }) => {
|
|
332
|
-
var _a, _b, _c, _d;
|
|
333
|
-
const ancestors = (await ((_a = this.controller) === null || _a === void 0 ? void 0 : _a.fetchNodeAncestors(id))) || [];
|
|
334
|
-
const isInPath = (_b = this.stateMap.selectionPath) === null || _b === void 0 ? void 0 : _b.includes(id);
|
|
335
|
-
if (recurseParent && isInPath) {
|
|
336
|
-
const nextNode = ancestors.find(({ selected }) => !selected);
|
|
337
|
-
if (nextNode != null) {
|
|
338
|
-
await this.selectItem(nextNode, options);
|
|
339
|
-
this.lastSelectedItemId = id;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
else if (options.range && this.lastSelectedItemId != null) {
|
|
343
|
-
const currentRowIndex = await ((_c = this.controller) === null || _c === void 0 ? void 0 : _c.expandParentNodes(id));
|
|
344
|
-
const previouslySelectedIndex = await ((_d = this.controller) === null || _d === void 0 ? void 0 : _d.expandParentNodes(this.lastSelectedItemId));
|
|
345
|
-
if (previouslySelectedIndex && currentRowIndex) {
|
|
346
|
-
const start = Math.min(previouslySelectedIndex, currentRowIndex);
|
|
347
|
-
const end = Math.max(previouslySelectedIndex, currentRowIndex);
|
|
348
|
-
await selectRangeInSceneTree(viewer, start, end, options);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
else {
|
|
352
|
-
await selectItem(viewer, id, options);
|
|
353
|
-
this.lastSelectedItemId = id;
|
|
354
|
-
}
|
|
355
|
-
this.stateMap.selectionPath = [
|
|
356
|
-
...ancestors.map(({ id }) => (id === null || id === void 0 ? void 0 : id.hex) || ''),
|
|
357
|
-
id,
|
|
358
|
-
];
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Performs an API call that will deselect the item associated to the given
|
|
363
|
-
* row or row index.
|
|
364
|
-
*
|
|
365
|
-
* @param row The row, row index, or node to deselect.
|
|
366
|
-
*/
|
|
367
|
-
async deselectItem(row) {
|
|
368
|
-
await this.performRowOperation(row, async ({ viewer, id, node }) => {
|
|
369
|
-
if (node.selected) {
|
|
370
|
-
this.lastSelectedItemId = undefined;
|
|
371
|
-
await deselectItem(viewer, id);
|
|
372
|
-
}
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* Returns a row at the given index. If the row data has not been loaded,
|
|
377
|
-
* returns `undefined`.
|
|
378
|
-
*
|
|
379
|
-
* @param index The index of the row.
|
|
380
|
-
* @returns A row, or `undefined` if the row hasn't been loaded.
|
|
381
|
-
*/
|
|
382
|
-
async getRowAtIndex(index) {
|
|
383
|
-
return this.rows[index];
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Returns the row data from the given mouse or pointer event. The event must
|
|
387
|
-
* originate from a `vertex-scene-tree-table-cell` contained by this element,
|
|
388
|
-
* otherwise `undefined` is returned.
|
|
389
|
-
*
|
|
390
|
-
* @param event A mouse or pointer event that originated from this component.
|
|
391
|
-
* @returns A row, or `undefined` if the row hasn't been loaded.
|
|
392
|
-
*/
|
|
393
|
-
async getRowForEvent(event) {
|
|
394
|
-
const { clientY, target } = event;
|
|
395
|
-
if (target != null &&
|
|
396
|
-
this.errorDetails == null &&
|
|
397
|
-
getSceneTreeContainsElement(this.el, target) &&
|
|
398
|
-
isSceneTreeTableCellElement(target)) {
|
|
399
|
-
return this.getRowAtClientY(clientY);
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
return undefined;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Returns the row data from the given vertical client position.
|
|
407
|
-
*
|
|
408
|
-
* @param clientY The vertical client position.
|
|
409
|
-
* @returns A row or `undefined` if the row hasn't been loaded.
|
|
410
|
-
*/
|
|
411
|
-
getRowAtClientY(clientY) {
|
|
412
|
-
const layoutEl = this.getLayoutElement();
|
|
413
|
-
const top = layoutEl.layoutOffset;
|
|
414
|
-
const index = Math.floor((clientY - top + layoutEl.scrollOffset) / layoutEl.rowHeight);
|
|
415
|
-
return this.getRowAtIndex(index);
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Performs an async request that will filter the displayed items in the tree
|
|
419
|
-
* that match the given term and options.
|
|
420
|
-
*
|
|
421
|
-
* @param term The filter term.
|
|
422
|
-
* @param options The options to apply to the filter.
|
|
423
|
-
* @returns A promise that completes when the request has completed. Note,
|
|
424
|
-
* items are displayed asynchronously. So the displayed items may not reflect
|
|
425
|
-
* the result of this filter when the promise completes.
|
|
426
|
-
*/
|
|
427
|
-
async filterItems(term, options = {}) {
|
|
428
|
-
var _a;
|
|
429
|
-
return (_a = this.controller) === null || _a === void 0 ? void 0 : _a.filter(term, options);
|
|
430
|
-
}
|
|
431
|
-
/**
|
|
432
|
-
* Performs an async request that will select the filtered items in the tree
|
|
433
|
-
* that match the given term.
|
|
434
|
-
*
|
|
435
|
-
* @param term The filter term.
|
|
436
|
-
* @returns A promise that completes when the request has completed.
|
|
437
|
-
*/
|
|
438
|
-
async selectFilteredItems(term, options) {
|
|
439
|
-
if (this.viewer != null) {
|
|
440
|
-
const definedMetadataKeys = this.metadataSearchKeys.length > 0
|
|
441
|
-
? this.metadataSearchKeys
|
|
442
|
-
: this.metadataKeys;
|
|
443
|
-
if (definedMetadataKeys.length === 0) {
|
|
444
|
-
console.warn("No metadata keys were found to perform the selection. Defaulting to ['VERTEX_SCENE_ITEM_NAME']");
|
|
445
|
-
}
|
|
446
|
-
const columnsToSearch = definedMetadataKeys.length > 0
|
|
447
|
-
? definedMetadataKeys
|
|
448
|
-
: ['VERTEX_SCENE_ITEM_NAME'];
|
|
449
|
-
await selectFilterResults(this.viewer, term, columnsToSearch, this.metadataSearchExactMatch, Object.assign({ append: false }, options));
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
/**
|
|
453
|
-
* Fetches the metadata keys that are available to the scene tree. Metadata
|
|
454
|
-
* keys can be assigned to the scene tree using the `metadataKeys` property.
|
|
455
|
-
* The scene tree will fetch this metadata and make these values available
|
|
456
|
-
* for data binding.
|
|
457
|
-
*
|
|
458
|
-
* @returns A promise that resolves with the names of available keys.
|
|
459
|
-
*/
|
|
460
|
-
async fetchMetadataKeys() {
|
|
461
|
-
var _a, _b;
|
|
462
|
-
return (_b = (_a = this.controller) === null || _a === void 0 ? void 0 : _a.fetchMetadataKeys()) !== null && _b !== void 0 ? _b : [];
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* @ignore
|
|
466
|
-
*/
|
|
467
|
-
disconnectedCallback() {
|
|
468
|
-
var _a, _b;
|
|
469
|
-
(_a = this.stateMap.viewerDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
470
|
-
(_b = this.controller) === null || _b === void 0 ? void 0 : _b.cancel();
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* @ignore
|
|
474
|
-
*/
|
|
475
|
-
componentWillLoad() {
|
|
476
|
-
var _a;
|
|
477
|
-
if (this.controller == null) {
|
|
478
|
-
const { sceneTreeHost } = this.getConfig().network;
|
|
479
|
-
const client = new SceneTreeAPIClient_1(sceneTreeHost, this.getConfig().flags.grpcUseStreamingWebSocketTransport
|
|
480
|
-
? {
|
|
481
|
-
transport: webSocketSubscriptionTransportFactory,
|
|
482
|
-
}
|
|
483
|
-
: undefined);
|
|
484
|
-
this.controller = new SceneTreeController(client, 100);
|
|
485
|
-
(_a = this.controller) === null || _a === void 0 ? void 0 : _a.setMetadataKeys(this.metadataKeys);
|
|
486
|
-
}
|
|
487
|
-
this.stateMap.onStateChangeDisposable = this.controller.onStateChange.on((state) => this.handleControllerStateChange(state));
|
|
488
|
-
this.connectToViewer();
|
|
489
|
-
}
|
|
490
|
-
/**
|
|
491
|
-
* @ignore
|
|
492
|
-
*/
|
|
493
|
-
async componentDidLoad() {
|
|
494
|
-
var _a;
|
|
495
|
-
this.ensureLayoutDefined();
|
|
496
|
-
this.updateLayoutElement();
|
|
497
|
-
const layoutEl = this.getLayoutElement();
|
|
498
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
499
|
-
this.invalidateRows();
|
|
500
|
-
});
|
|
501
|
-
resizeObserver.observe(layoutEl);
|
|
502
|
-
this.stateMap.resizeObserver = resizeObserver;
|
|
503
|
-
this.stateMap.componentLoaded = true;
|
|
504
|
-
(_a = this.controller) === null || _a === void 0 ? void 0 : _a.setMetadataKeys(this.metadataKeys);
|
|
505
|
-
if (this.viewer == null) {
|
|
506
|
-
this.errorDetails = new SceneTreeErrorDetails('MISSING_VIEWER', SceneTreeErrorCode.MISSING_VIEWER);
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
componentWillRender() {
|
|
510
|
-
// The controller can load data prior to the first render
|
|
511
|
-
// ensure that this renders any time the state changes.
|
|
512
|
-
this.updateLayoutElement();
|
|
513
|
-
}
|
|
514
|
-
/**
|
|
515
|
-
* @ignore
|
|
516
|
-
*/
|
|
517
|
-
render() {
|
|
518
|
-
return (h(Host, null, h("div", { class: "header" }, h("slot", { name: "header" }, h("vertex-scene-tree-toolbar", { class: "search-toolbar" }, h("vertex-scene-tree-search", { controller: this.controller })))), this.errorDetails != null && this.renderError(this.errorDetails), this.errorDetails == null && (h("div", { class: "rows-scroll" }, this.showLoader && (h("slot", { name: "loading" }, h("vertex-viewer-spinner", { class: "loading", size: "md" }))), this.showEmptyResults && (h("slot", { name: "empty-results" }, h("div", { class: "empty-results" }, "No Results Found."))), h("slot", null))), h("div", { class: "footer" }, h("slot", { name: "footer" }))));
|
|
519
|
-
}
|
|
520
|
-
renderError(details) {
|
|
521
|
-
if (details.code !== SceneTreeErrorCode.SCENE_TREE_DISABLED) {
|
|
522
|
-
return (h(SceneTreeError, { details: details }, h("button", { class: "button button-secondary", onClick: () => this.retryConnectToViewer(), disabled: this.attemptingRetry }, "Retry")));
|
|
523
|
-
}
|
|
524
|
-
else {
|
|
525
|
-
return h(SceneTreeError, { details: details });
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
/**
|
|
529
|
-
* @ignore
|
|
530
|
-
*/
|
|
531
|
-
handleViewerChanged(newViewer, oldViewer) {
|
|
532
|
-
// StencilJS will invoke this callback even before the component has been
|
|
533
|
-
// loaded. According to their docs, this shouldn't happen. Return if the
|
|
534
|
-
// component hasn't been loaded.
|
|
535
|
-
// See https://stenciljs.com/docs/reactive-data#watch-decorator
|
|
536
|
-
if (!this.stateMap.componentLoaded) {
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
this.connectToViewer();
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* @ignore
|
|
543
|
-
*/
|
|
544
|
-
handleControllerChanged(newController) {
|
|
545
|
-
var _a;
|
|
546
|
-
// StencilJS will invoke this callback even before the component has been
|
|
547
|
-
// loaded. According to their docs, this shouldn't happen. Return if the
|
|
548
|
-
// component hasn't been loaded.
|
|
549
|
-
// See https://stenciljs.com/docs/reactive-data#watch-decorator
|
|
550
|
-
if (!this.stateMap.componentLoaded) {
|
|
551
|
-
return;
|
|
552
|
-
}
|
|
553
|
-
(_a = this.stateMap.onStateChangeDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
554
|
-
this.stateMap.onStateChangeDisposable = newController.onStateChange.on((state) => this.handleControllerStateChange(state));
|
|
555
|
-
newController.setMetadataKeys(this.metadataKeys);
|
|
556
|
-
}
|
|
557
|
-
/**
|
|
558
|
-
* @ignore
|
|
559
|
-
*/
|
|
560
|
-
handleMetadataKeysChanged() {
|
|
561
|
-
var _a;
|
|
562
|
-
(_a = this.controller) === null || _a === void 0 ? void 0 : _a.setMetadataKeys(this.metadataKeys);
|
|
563
|
-
}
|
|
564
|
-
retryConnectToViewer() {
|
|
565
|
-
this.attemptingRetry = true;
|
|
566
|
-
this.errorDetails = undefined;
|
|
567
|
-
this.connectToViewer();
|
|
568
|
-
}
|
|
569
|
-
connectToViewer() {
|
|
570
|
-
var _a, _b;
|
|
571
|
-
(_a = this.stateMap.viewerDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
572
|
-
if (this.viewer == null && this.viewerSelector != null) {
|
|
573
|
-
this.viewer = document.querySelector(this.viewerSelector);
|
|
574
|
-
}
|
|
575
|
-
if (this.viewer != null) {
|
|
576
|
-
this.stateMap.viewerDisposable = (_b = this.controller) === null || _b === void 0 ? void 0 : _b.connectToViewer(this.viewer);
|
|
577
|
-
}
|
|
578
|
-
else {
|
|
579
|
-
this.attemptingRetry = false;
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
scheduleClearUnusedData() {
|
|
583
|
-
if (this.stateMap.idleCallbackId != null) {
|
|
584
|
-
window.cancelIdleCallback(this.stateMap.idleCallbackId);
|
|
585
|
-
}
|
|
586
|
-
this.stateMap.idleCallbackId = window.requestIdleCallback((foo) => {
|
|
587
|
-
var _a, _b, _c;
|
|
588
|
-
const remaining = (_a = foo.timeRemaining) === null || _a === void 0 ? void 0 : _a.call(foo);
|
|
589
|
-
if (remaining == null || remaining >= MIN_CLEAR_UNUSED_DATA_MS) {
|
|
590
|
-
const layoutEl = this.getLayoutElement();
|
|
591
|
-
const startIndex = layoutEl.viewportStartIndex;
|
|
592
|
-
const endIndex = layoutEl.viewportEndIndex;
|
|
593
|
-
const [start, end] = ((_b = this.controller) === null || _b === void 0 ? void 0 : _b.getPageIndexesForRange(startIndex, endIndex)) || [];
|
|
594
|
-
if (start != null && end != null) {
|
|
595
|
-
(_c = this.controller) === null || _c === void 0 ? void 0 : _c.invalidatePagesOutsideRange(start, end, 50);
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
else {
|
|
599
|
-
this.scheduleClearUnusedData();
|
|
600
|
-
}
|
|
601
|
-
});
|
|
602
|
-
}
|
|
603
|
-
handleControllerStateChange(state) {
|
|
604
|
-
this.showLoader = !!state.shouldShowLoading;
|
|
605
|
-
this.showEmptyResults = !!state.shouldShowEmptyResults;
|
|
606
|
-
this.rows = state.rows;
|
|
607
|
-
this.totalRows = state.totalRows;
|
|
608
|
-
if (state.connection.type === 'failure') {
|
|
609
|
-
this.errorDetails = state.connection.details;
|
|
610
|
-
this.connectionError.emit(state.connection.details);
|
|
611
|
-
}
|
|
612
|
-
else if (state.connection.type === 'disconnected') {
|
|
613
|
-
this.errorDetails = new SceneTreeErrorDetails('DISCONNECTED', SceneTreeErrorCode.DISCONNECTED);
|
|
614
|
-
}
|
|
615
|
-
else {
|
|
616
|
-
this.errorDetails = undefined;
|
|
617
|
-
}
|
|
618
|
-
if (state.connection.type === 'connected' ||
|
|
619
|
-
state.connection.type === 'failure') {
|
|
620
|
-
this.attemptingRetry = false;
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
async performRowOperation(rowOrIndex, op) {
|
|
624
|
-
const row = typeof rowOrIndex === 'number' ? this.rows[rowOrIndex] : rowOrIndex;
|
|
625
|
-
if (row == null) {
|
|
626
|
-
throw new Error(`Cannot perform scene tree operation. Row not found.`);
|
|
627
|
-
}
|
|
628
|
-
const node = isLoadedRow(row) ? row.node : row;
|
|
629
|
-
if (node.id == null) {
|
|
630
|
-
throw new Error(`Cannot perform scene tree operation. ID is undefined.`);
|
|
631
|
-
}
|
|
632
|
-
if (this.viewer == null) {
|
|
633
|
-
throw new Error(`Cannot perform scene tree operation. Cannot get reference to viewer.`);
|
|
634
|
-
}
|
|
635
|
-
await op({ viewer: this.viewer, id: node.id.hex, node });
|
|
636
|
-
}
|
|
637
|
-
async handleSearch(event) {
|
|
638
|
-
const columnsToSearch = this.metadataSearchKeys.length > 0
|
|
639
|
-
? this.metadataSearchKeys
|
|
640
|
-
: this.metadataKeys;
|
|
641
|
-
try {
|
|
642
|
-
await this.filterItems(event.detail, {
|
|
643
|
-
columns: columnsToSearch,
|
|
644
|
-
exactMatch: this.metadataSearchExactMatch,
|
|
645
|
-
});
|
|
646
|
-
}
|
|
647
|
-
catch (e) {
|
|
648
|
-
console.error('Failed to filter tree with exception: ', e);
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
async handleCellLoaded() {
|
|
652
|
-
if (!this.firstCellRendered && this.rows.length > 0) {
|
|
653
|
-
this.firstCellRendered = true;
|
|
654
|
-
this.firstRowRendered.emit();
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
getScrollToPosition(index, position) {
|
|
658
|
-
var _a;
|
|
659
|
-
const layoutEl = this.getLayoutElement();
|
|
660
|
-
const constrainedIndex = Math.max(0, Math.min(index, this.totalRows - 1));
|
|
661
|
-
const viewportHeight = (_a = layoutEl.layoutHeight) !== null && _a !== void 0 ? _a : 0;
|
|
662
|
-
const rowHeight = layoutEl.rowHeight;
|
|
663
|
-
if (position === 'start') {
|
|
664
|
-
return constrainedIndex * rowHeight;
|
|
665
|
-
}
|
|
666
|
-
else if (position === 'middle') {
|
|
667
|
-
const rowCenterY = constrainedIndex * rowHeight + rowHeight / 2;
|
|
668
|
-
return rowCenterY - viewportHeight / 2;
|
|
669
|
-
}
|
|
670
|
-
else {
|
|
671
|
-
const rowBottomY = constrainedIndex * rowHeight + rowHeight;
|
|
672
|
-
return rowBottomY - viewportHeight;
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
getConfig() {
|
|
676
|
-
return parseConfig(this.configEnv, this.config);
|
|
677
|
-
}
|
|
678
|
-
ensureLayoutDefined() {
|
|
679
|
-
let layout = this.el.querySelector('vertex-scene-tree-table-layout');
|
|
680
|
-
if (layout == null) {
|
|
681
|
-
layout = document.createElement('vertex-scene-tree-table-layout');
|
|
682
|
-
layout.innerHTML = `
|
|
683
|
-
<vertex-scene-tree-table-column>
|
|
684
|
-
<template>
|
|
685
|
-
<vertex-scene-tree-table-cell prop:value="{{row.node.name}}" expand-toggle visibility-toggle></vertex-scene-tree-table-cell>
|
|
686
|
-
</template>
|
|
687
|
-
</vertex-scene-tree-table-column>
|
|
688
|
-
`;
|
|
689
|
-
this.el.appendChild(layout);
|
|
690
|
-
}
|
|
691
|
-
this.stateMap.layoutEl = layout;
|
|
692
|
-
}
|
|
693
|
-
updateLayoutElement() {
|
|
694
|
-
const layout = this.stateMap.layoutEl;
|
|
695
|
-
if (layout != null) {
|
|
696
|
-
layout.rows = this.rows;
|
|
697
|
-
layout.tree = this.el;
|
|
698
|
-
layout.totalRows = this.totalRows;
|
|
699
|
-
layout.controller = this.controller;
|
|
700
|
-
layout.rowData = this.rowData;
|
|
701
|
-
}
|
|
702
|
-
else if (!this.stateMap.componentLoaded && this.totalRows > 0) {
|
|
703
|
-
console.debug('Scene tree has rows, but the component has not yet rendered');
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
getLayoutElement() {
|
|
707
|
-
if (this.stateMap.layoutEl != null) {
|
|
708
|
-
return this.stateMap.layoutEl;
|
|
709
|
-
}
|
|
710
|
-
else {
|
|
711
|
-
throw new Error('Layout element is undefined');
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
get el() { return this; }
|
|
715
|
-
static get watchers() { return {
|
|
716
|
-
"viewer": ["handleViewerChanged"],
|
|
717
|
-
"controller": ["handleControllerChanged"],
|
|
718
|
-
"metadataKeys": ["handleMetadataKeysChanged"]
|
|
719
|
-
}; }
|
|
720
|
-
static get style() { return sceneTreeCss; }
|
|
721
|
-
}, [1, "vertex-scene-tree", {
|
|
722
|
-
"overScanCount": [2, "over-scan-count"],
|
|
723
|
-
"viewerSelector": [1, "viewer-selector"],
|
|
724
|
-
"viewer": [1040],
|
|
725
|
-
"rowData": [16],
|
|
726
|
-
"config": [1],
|
|
727
|
-
"configEnv": [1, "config-env"],
|
|
728
|
-
"controller": [1040],
|
|
729
|
-
"metadataSearchExactMatch": [1028, "metadata-search-exact-match"],
|
|
730
|
-
"metadataSearchKeys": [1040],
|
|
731
|
-
"metadataKeys": [16],
|
|
732
|
-
"rows": [32],
|
|
733
|
-
"totalRows": [32],
|
|
734
|
-
"showLoader": [32],
|
|
735
|
-
"showEmptyResults": [32],
|
|
736
|
-
"stateMap": [32],
|
|
737
|
-
"errorDetails": [32],
|
|
738
|
-
"attemptingRetry": [32],
|
|
739
|
-
"invalidateRows": [64],
|
|
740
|
-
"scrollToIndex": [64],
|
|
741
|
-
"scrollToItem": [64],
|
|
742
|
-
"expandAll": [64],
|
|
743
|
-
"collapseAll": [64],
|
|
744
|
-
"expandItem": [64],
|
|
745
|
-
"collapseItem": [64],
|
|
746
|
-
"toggleExpandItem": [64],
|
|
747
|
-
"toggleItemVisibility": [64],
|
|
748
|
-
"hideItem": [64],
|
|
749
|
-
"showItem": [64],
|
|
750
|
-
"selectItem": [64],
|
|
751
|
-
"deselectItem": [64],
|
|
752
|
-
"getRowAtIndex": [64],
|
|
753
|
-
"getRowForEvent": [64],
|
|
754
|
-
"getRowAtClientY": [64],
|
|
755
|
-
"filterItems": [64],
|
|
756
|
-
"selectFilteredItems": [64],
|
|
757
|
-
"fetchMetadataKeys": [64]
|
|
758
|
-
}, [[0, "search", "handleSearch"], [0, "cellLoaded", "handleCellLoaded"]]]);
|
|
759
|
-
function defineCustomElement$1() {
|
|
760
|
-
if (typeof customElements === "undefined") {
|
|
761
|
-
return;
|
|
762
|
-
}
|
|
763
|
-
const components = ["vertex-scene-tree", "vertex-scene-tree-search", "vertex-scene-tree-table-layout", "vertex-scene-tree-toolbar", "vertex-viewer-icon", "vertex-viewer-spinner"];
|
|
764
|
-
components.forEach(tagName => { switch (tagName) {
|
|
765
|
-
case "vertex-scene-tree":
|
|
766
|
-
if (!customElements.get(tagName)) {
|
|
767
|
-
customElements.define(tagName, SceneTree);
|
|
768
|
-
}
|
|
769
|
-
break;
|
|
770
|
-
case "vertex-scene-tree-search":
|
|
771
|
-
if (!customElements.get(tagName)) {
|
|
772
|
-
defineCustomElement$6();
|
|
773
|
-
}
|
|
774
|
-
break;
|
|
775
|
-
case "vertex-scene-tree-table-layout":
|
|
776
|
-
if (!customElements.get(tagName)) {
|
|
777
|
-
defineCustomElement$5();
|
|
778
|
-
}
|
|
779
|
-
break;
|
|
780
|
-
case "vertex-scene-tree-toolbar":
|
|
781
|
-
if (!customElements.get(tagName)) {
|
|
782
|
-
defineCustomElement$4();
|
|
783
|
-
}
|
|
784
|
-
break;
|
|
785
|
-
case "vertex-viewer-icon":
|
|
786
|
-
if (!customElements.get(tagName)) {
|
|
787
|
-
defineCustomElement$3();
|
|
788
|
-
}
|
|
789
|
-
break;
|
|
790
|
-
case "vertex-viewer-spinner":
|
|
791
|
-
if (!customElements.get(tagName)) {
|
|
792
|
-
defineCustomElement$2();
|
|
793
|
-
}
|
|
794
|
-
break;
|
|
795
|
-
} });
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
const VertexSceneTree = SceneTree;
|
|
799
|
-
const defineCustomElement = defineCustomElement$1;
|
|
800
|
-
|
|
801
|
-
export { VertexSceneTree, defineCustomElement };
|
|
802
|
-
|
|
803
|
-
//# sourceMappingURL=vertex-scene-tree.js.map
|