@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,427 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023 Vertex Software LLC. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
5
|
-
import { p as point, d as dimensions } from './bundle.esm.js';
|
|
6
|
-
import { c as classnames } from './index2.js';
|
|
7
|
-
import { g as getMouseClientPosition } from './dom.js';
|
|
8
|
-
import { P as PinModel, g as getPinColors, i as isTextPin } from './model2.js';
|
|
9
|
-
import { r as readDOM } from './stencil.js';
|
|
10
|
-
import { r as range } from './browser.esm.js';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* The `PinController` is responsible for adding pin entities to the viewer canvas
|
|
14
|
-
*/
|
|
15
|
-
class PinController {
|
|
16
|
-
constructor(model, mode = 'view', type = 'pin-icon', styleAttributes = undefined) {
|
|
17
|
-
this.model = model;
|
|
18
|
-
this.mode = mode;
|
|
19
|
-
this.type = type;
|
|
20
|
-
this.styleAttributes = styleAttributes;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Registers an entity to place on the canvas and places the pin on the associated part.
|
|
24
|
-
*
|
|
25
|
-
* @param pin The pin entity
|
|
26
|
-
* @returns A void promise
|
|
27
|
-
*/
|
|
28
|
-
addPin(pin) {
|
|
29
|
-
this.model.addPin(pin);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Clears all entities and returns a promise that resolves with an empty list
|
|
33
|
-
* of pin results.
|
|
34
|
-
*/
|
|
35
|
-
clearPins() {
|
|
36
|
-
this.model.clearPins();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Deregisters an entity and performs a pin if this entity was
|
|
40
|
-
* removed.
|
|
41
|
-
*
|
|
42
|
-
* @param entity The entity to remove.
|
|
43
|
-
* @returns A promise that resolves with the results after removing this
|
|
44
|
-
* entity.
|
|
45
|
-
*/
|
|
46
|
-
removePin(pin) {
|
|
47
|
-
this.model.removePin(pin);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Registers a set of entities and adds a pin
|
|
51
|
-
*
|
|
52
|
-
* @param entities The pin entities to draw.
|
|
53
|
-
* @returns A promise that resolves with the results after registering these
|
|
54
|
-
* entities.
|
|
55
|
-
*/
|
|
56
|
-
setPins(pins) {
|
|
57
|
-
this.model.setPins(pins);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Sets the set of entities to be placed with the model.
|
|
61
|
-
*
|
|
62
|
-
* @param pin A pin to set
|
|
63
|
-
* @returns `true` if the entity has been added.
|
|
64
|
-
*/
|
|
65
|
-
setPin(pin) {
|
|
66
|
-
this.model.setPin(pin);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Updates an existing pin
|
|
70
|
-
* @param pin A pin to set
|
|
71
|
-
* @returns `true` if the entity has been updated, false otherwise
|
|
72
|
-
*/
|
|
73
|
-
updatePin(pin) {
|
|
74
|
-
this.model.updatePin(pin);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Tells the controller which pin is selected in the model
|
|
78
|
-
* @param pinId
|
|
79
|
-
*/
|
|
80
|
-
setSelectedPinId(pinId) {
|
|
81
|
-
this.model.setSelectedPin(pinId);
|
|
82
|
-
}
|
|
83
|
-
getToolMode() {
|
|
84
|
-
return this.mode;
|
|
85
|
-
}
|
|
86
|
-
getToolType() {
|
|
87
|
-
return this.type;
|
|
88
|
-
}
|
|
89
|
-
setToolMode(mode) {
|
|
90
|
-
this.mode = mode;
|
|
91
|
-
}
|
|
92
|
-
setToolType(type) {
|
|
93
|
-
this.type = type;
|
|
94
|
-
}
|
|
95
|
-
getDraggable() {
|
|
96
|
-
return this.draggable;
|
|
97
|
-
}
|
|
98
|
-
setDraggable(draggable) {
|
|
99
|
-
this.draggable = draggable;
|
|
100
|
-
}
|
|
101
|
-
setPrimaryColor(color) {
|
|
102
|
-
this.styleAttributes = Object.assign(Object.assign({}, this.styleAttributes), { primaryColor: color });
|
|
103
|
-
}
|
|
104
|
-
setAccentColor(color) {
|
|
105
|
-
this.styleAttributes = Object.assign(Object.assign({}, this.styleAttributes), { accentColor: color });
|
|
106
|
-
}
|
|
107
|
-
getStyleAttributes() {
|
|
108
|
-
return this.styleAttributes;
|
|
109
|
-
}
|
|
110
|
-
updateDraggable(draggable, worldPosition, partId) {
|
|
111
|
-
if (this.draggable != null) {
|
|
112
|
-
this.draggable = draggable;
|
|
113
|
-
}
|
|
114
|
-
const pin = this.model.getPinById(draggable.id);
|
|
115
|
-
if (pin != null) {
|
|
116
|
-
this.updatePin(Object.assign(Object.assign({}, pin), { worldPosition,
|
|
117
|
-
partId }));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function constrainRelativePoint(pt, range) {
|
|
123
|
-
const constrainedX = Math.max(range.start, Math.min(range.end, pt.x));
|
|
124
|
-
const constrainedY = Math.max(range.start, Math.min(range.end, pt.y));
|
|
125
|
-
return point.create(constrainedX, constrainedY);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Translates a point in relative units to a point in screen units.
|
|
129
|
-
*/
|
|
130
|
-
function translatePointToScreen(pt, canvasDimensions) {
|
|
131
|
-
return point.add(point.scale(pt, canvasDimensions.width, canvasDimensions.height), dimensions.center(canvasDimensions));
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Translates a point in screen units to a point in relative units.
|
|
135
|
-
*/
|
|
136
|
-
function translatePointToRelative(pt, canvasDimensions, includeOffset, xOffset, yOffset) {
|
|
137
|
-
const verticalScaleFactor = 1 / canvasDimensions.height;
|
|
138
|
-
const horizontalScaleFactor = 1 / canvasDimensions.width;
|
|
139
|
-
const canvasCenterPoint = dimensions.center(canvasDimensions);
|
|
140
|
-
const point$1 = point.scale(point.subtract(pt, canvasCenterPoint), horizontalScaleFactor, verticalScaleFactor);
|
|
141
|
-
if (includeOffset) {
|
|
142
|
-
const offset = point.scale(point.create(xOffset, yOffset), horizontalScaleFactor, verticalScaleFactor);
|
|
143
|
-
// We want to place the label towards the center of the screen.
|
|
144
|
-
// The given point corresponds to the upper left corner of the label, so increase the offset
|
|
145
|
-
// when placing it to the left or above to ensure that part of the label line is visible
|
|
146
|
-
const centerIsToTheRightInXDirection = canvasCenterPoint.x > pt.x;
|
|
147
|
-
const xOffsetCalculated = centerIsToTheRightInXDirection
|
|
148
|
-
? offset.x
|
|
149
|
-
: -3 * offset.x;
|
|
150
|
-
const centerIsBelowInYDirection = canvasCenterPoint.y > pt.y;
|
|
151
|
-
const yOffsetCalculated = centerIsBelowInYDirection
|
|
152
|
-
? offset.y
|
|
153
|
-
: -3 * offset.y;
|
|
154
|
-
const offsetPoint = point.add(point$1, point.create(xOffsetCalculated, yOffsetCalculated));
|
|
155
|
-
return constrainRelativePoint(offsetPoint, range.create(-0.5, 0.5));
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return constrainRelativePoint(point$1, range.create(-0.5, 0.5));
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
function getComputedStyle(el) {
|
|
163
|
-
return window.getComputedStyle(el);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const viewerPinLabelCss = ":host{--viewer-annotations-pin-label-background-color:var(--viewer-annotations-pin-accent-color);--viewer-annotations-pin-label-border-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-label-focused-border-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-label-color:var(--white);--viewer-annotations-pin-label-padding-y:0.375em;--viewer-annotations-pin-label-padding-x:0.5em;--viewer-annotations-pin-label-border-width:2px;--viewer-annotations-pin-label-border-style:solid;--viewer-annotations-pin-label-border-radius:0.25em;--viewer-annotations-pin-label-min-width:2rem;--viewer-annotations-pin-label-max-width:25rem;--viewer-annotations-pin-label-max-height:50rem;overflow:hidden;pointer-events:none}:host([mode='']) .pin-label{color:var(--viewer-annotations-pin-label-color);background:var(--viewer-annotations-pin-label-background-color)}.pin-label-text{font-family:Arial, Helvetica, sans-serif;font-size:0.875rem;line-height:1rem;word-break:break-word;white-space:pre-wrap}.pin-label-input-wrapper{display:flex;position:absolute;pointer-events:auto;box-sizing:border-box;min-width:var(--viewer-annotations-pin-label-min-width);max-width:var(--viewer-annotations-pin-label-max-width);max-height:var(--viewer-annotations-pin-label-max-height);background:var(--viewer-annotations-pin-label-background-color);border-width:var(--viewer-annotations-pin-label-border-width);border-style:var(--viewer-annotations-pin-label-border-style);border-color:var(--viewer-annotations-pin-label-border-color);border-radius:var(--viewer-annotations-pin-label-border-radius)}.pin-label-input-wrapper.focused{min-width:var(--viewer-annotations-pin-label-max-width);border-color:var(--viewer-annotations-pin-label-focused-border-color)}.pin-input-drag-target{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.pin-label-input{resize:none;position:relative;outline:none;border:none;word-break:break-word;padding:0 0 0 0;background-color:transparent;margin:var(--viewer-annotations-pin-label-padding-y) var(--viewer-annotations-pin-label-padding-x);width:var(--viewer-annotations-pin-label-min-width);flex-grow:1;overflow:hidden;max-width:calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)))}.pin-label-input.readonly{pointer-events:auto;color:black;cursor:pointer}.pin-label-hidden{position:absolute;visibility:hidden;pointer-events:none;width:auto;height:auto;box-sizing:border-box;border-width:var(--viewer-annotations-pin-label-border-width);border-style:var(--viewer-annotations-pin-label-border-style);border-color:var(--viewer-annotations-pin-label-border-color);margin:var(--viewer-annotations-pin-label-padding-y) 0;padding:0 var(--viewer-annotations-pin-label-padding-x);max-width:calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)))}";
|
|
167
|
-
|
|
168
|
-
const VertexPinLabel = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
169
|
-
constructor() {
|
|
170
|
-
super();
|
|
171
|
-
this.__registerHost();
|
|
172
|
-
this.labelChanged = createEvent(this, "labelChanged", 7);
|
|
173
|
-
this.labelFocused = createEvent(this, "labelFocused", 7);
|
|
174
|
-
this.labelBlurred = createEvent(this, "labelBlurred", 7);
|
|
175
|
-
this.focused = false;
|
|
176
|
-
this.textareaRows = 1;
|
|
177
|
-
this.computeContentSize = () => {
|
|
178
|
-
readDOM(() => {
|
|
179
|
-
if (this.contentEl != null) {
|
|
180
|
-
this.contentElBounds = this.contentEl.getBoundingClientRect();
|
|
181
|
-
const computedStyles = getComputedStyle(this.contentEl);
|
|
182
|
-
this.textareaRows = Math.max(1, Math.ceil((parseFloat(computedStyles.height) -
|
|
183
|
-
parseFloat(computedStyles.borderWidth) * 2) /
|
|
184
|
-
parseFloat(computedStyles.lineHeight)));
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
};
|
|
188
|
-
this.handleInputKeyDown = (event) => {
|
|
189
|
-
event.stopPropagation();
|
|
190
|
-
if (event.key === 'Enter' &&
|
|
191
|
-
(event.ctrlKey || event.metaKey || event.shiftKey)) {
|
|
192
|
-
this.textareaRows += 1;
|
|
193
|
-
this.value += '\n';
|
|
194
|
-
}
|
|
195
|
-
else if (event.key === 'Enter') {
|
|
196
|
-
event.preventDefault();
|
|
197
|
-
this.submit();
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
this.handlePointerDown = (event) => {
|
|
201
|
-
var _a;
|
|
202
|
-
if (!this.focused) {
|
|
203
|
-
if (this.elementBounds != null) {
|
|
204
|
-
this.relativePointerDownPosition = translatePointToRelative(getMouseClientPosition(event, this.elementBounds), this.elementBounds);
|
|
205
|
-
this.pinPointerDownPosition = (_a = this.pin) === null || _a === void 0 ? void 0 : _a.label.point;
|
|
206
|
-
window.addEventListener('pointermove', this.handlePointerMove);
|
|
207
|
-
window.addEventListener('pointerup', this.handlePointerUp);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
this.handlePointerMove = (event) => {
|
|
212
|
-
var _a;
|
|
213
|
-
if (this.elementBounds != null &&
|
|
214
|
-
this.relativePointerDownPosition &&
|
|
215
|
-
this.pinPointerDownPosition != null) {
|
|
216
|
-
// Prevent selection of any text while interacting with the label
|
|
217
|
-
event.preventDefault();
|
|
218
|
-
const point$1 = getMouseClientPosition(event, this.elementBounds);
|
|
219
|
-
const relative = translatePointToRelative(point$1, this.elementBounds);
|
|
220
|
-
const relativeDelta = point.subtract(relative, this.relativePointerDownPosition);
|
|
221
|
-
const myUpdatedPin = this.pin != null
|
|
222
|
-
? Object.assign(Object.assign({}, this.pin), { label: Object.assign(Object.assign({}, this.pin.label), { point: point.add(this.pinPointerDownPosition, relativeDelta) }) }) : undefined;
|
|
223
|
-
if (myUpdatedPin) {
|
|
224
|
-
(_a = this.pinController) === null || _a === void 0 ? void 0 : _a.updatePin(myUpdatedPin);
|
|
225
|
-
this.computeScreenPosition();
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
this.handlePointerUp = (event) => {
|
|
230
|
-
var _a, _b;
|
|
231
|
-
if (((_a = this.pinController) === null || _a === void 0 ? void 0 : _a.getToolMode()) === 'edit' &&
|
|
232
|
-
this.relativePointerDownPosition != null &&
|
|
233
|
-
this.elementBounds != null) {
|
|
234
|
-
const pointerDownScreen = translatePointToScreen(this.relativePointerDownPosition, this.elementBounds);
|
|
235
|
-
const distanceBetweenStartAndEndPoint = point.distance(pointerDownScreen, getMouseClientPosition(event, this.elementBounds));
|
|
236
|
-
if (distanceBetweenStartAndEndPoint <= 2) {
|
|
237
|
-
this.focused = true;
|
|
238
|
-
this.labelFocused.emit((_b = this.pin) === null || _b === void 0 ? void 0 : _b.id);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
this.relativePointerDownPosition = undefined;
|
|
242
|
-
this.pinPointerDownPosition = undefined;
|
|
243
|
-
window.removeEventListener('pointermove', this.handlePointerMove);
|
|
244
|
-
window.removeEventListener('pointerup', this.handlePointerUp);
|
|
245
|
-
};
|
|
246
|
-
this.handleTextBlur = () => {
|
|
247
|
-
this.submit();
|
|
248
|
-
};
|
|
249
|
-
this.handleTextInput = (event) => {
|
|
250
|
-
const input = event.target;
|
|
251
|
-
this.value = input.value;
|
|
252
|
-
};
|
|
253
|
-
this.value = this.getPinText();
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Gives focus to the the component's internal text input.
|
|
257
|
-
*/
|
|
258
|
-
async setFocus() {
|
|
259
|
-
var _a, _b, _c;
|
|
260
|
-
// HTMLInputElement.focus() doesn't exist in tests.
|
|
261
|
-
if (typeof ((_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.focus) === 'function') {
|
|
262
|
-
this.focused = true;
|
|
263
|
-
this.labelFocused.emit((_b = this.pin) === null || _b === void 0 ? void 0 : _b.id);
|
|
264
|
-
(_c = this.inputEl) === null || _c === void 0 ? void 0 : _c.focus();
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
watchFocusChange() {
|
|
268
|
-
var _a, _b;
|
|
269
|
-
this.labelChanged.emit();
|
|
270
|
-
if (this.focused) {
|
|
271
|
-
(_a = this.pinController) === null || _a === void 0 ? void 0 : _a.setSelectedPinId((_b = this.pin) === null || _b === void 0 ? void 0 : _b.id);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
watchPinChange() {
|
|
275
|
-
this.value = this.getPinText();
|
|
276
|
-
this.computeScreenPosition();
|
|
277
|
-
}
|
|
278
|
-
watchElementBoundsChange() {
|
|
279
|
-
this.computeScreenPosition();
|
|
280
|
-
}
|
|
281
|
-
componentWillLoad() {
|
|
282
|
-
this.computeScreenPosition();
|
|
283
|
-
}
|
|
284
|
-
componentDidLoad() {
|
|
285
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
286
|
-
this.labelChanged.emit();
|
|
287
|
-
});
|
|
288
|
-
this.contentResizeObserver = new ResizeObserver(this.computeContentSize);
|
|
289
|
-
if (this.hostEl != null) {
|
|
290
|
-
this.resizeObserver.observe(this.hostEl);
|
|
291
|
-
}
|
|
292
|
-
if (this.contentEl != null) {
|
|
293
|
-
this.contentResizeObserver.observe(this.contentEl);
|
|
294
|
-
}
|
|
295
|
-
if (this.pinController == null) {
|
|
296
|
-
this.pinController = new PinController(new PinModel());
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
disconnectedCallback() {
|
|
300
|
-
var _a, _b;
|
|
301
|
-
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
302
|
-
(_b = this.contentResizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
|
303
|
-
}
|
|
304
|
-
componentDidRender() {
|
|
305
|
-
if (this.focused && this.inputEl != null) {
|
|
306
|
-
this.setFocus();
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
render() {
|
|
310
|
-
var _a, _b, _c;
|
|
311
|
-
const { primaryColor, accentColor } = getPinColors(this.pin);
|
|
312
|
-
return (h(Host, null, h("div", { class: classnames('pin-label-input-wrapper', {
|
|
313
|
-
focused: this.focused,
|
|
314
|
-
}), onPointerDown: this.handlePointerDown, style: {
|
|
315
|
-
top: `${((_a = this.computedScreenPosition) === null || _a === void 0 ? void 0 : _a.y.toString()) || 0}px`,
|
|
316
|
-
left: `${((_b = this.computedScreenPosition) === null || _b === void 0 ? void 0 : _b.x.toString()) || 0}px`,
|
|
317
|
-
minWidth: this.computeMinWidth(),
|
|
318
|
-
maxWidth: this.computeMaxWidth(),
|
|
319
|
-
maxHeight: this.computeMaxHeight(),
|
|
320
|
-
borderColor: primaryColor,
|
|
321
|
-
background: accentColor,
|
|
322
|
-
} }, h("textarea", { id: `pin-label-input-${(_c = this.pin) === null || _c === void 0 ? void 0 : _c.id}`, class: classnames('pin-label-input', 'pin-label-text', {
|
|
323
|
-
['readonly']: !this.focused,
|
|
324
|
-
}), disabled: !this.focused, ref: (ref) => (this.inputEl = ref), value: this.value, rows: this.textareaRows, onKeyDown: this.handleInputKeyDown, onInput: this.handleTextInput, onBlur: this.handleTextBlur }), !this.focused && (h("div", { class: "pin-input-drag-target", onPointerDown: this.handlePointerDown }))), h("div", { ref: (el) => (this.contentEl = el), class: classnames('pin-label-text', 'pin-label-hidden'), style: {
|
|
325
|
-
maxWidth: this.computeMaxWidth(),
|
|
326
|
-
maxHeight: this.computeMaxHeight(),
|
|
327
|
-
} }, this.hiddenContent())));
|
|
328
|
-
}
|
|
329
|
-
hiddenContent() {
|
|
330
|
-
// This corrects some inconsistencies in how a newline character
|
|
331
|
-
// is represented in a div. Leveraging `<br>`s results in a more
|
|
332
|
-
// consistent representation of the newlines in a textarea.
|
|
333
|
-
return this.value.includes('\n')
|
|
334
|
-
? this.value
|
|
335
|
-
.split('\n')
|
|
336
|
-
.reduce((res, str) => [...res, str, h("br", null)], [])
|
|
337
|
-
: [this.value];
|
|
338
|
-
}
|
|
339
|
-
computeMinWidth() {
|
|
340
|
-
if (this.contentElBounds != null) {
|
|
341
|
-
const expected = `${this.contentElBounds.width + 8}px`;
|
|
342
|
-
return `min(${expected}, ${this.computeMaxWidth()})`;
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
return `var(--viewer-annotations-pin-label-min-width)`;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
computeMaxWidth() {
|
|
349
|
-
const expected = `var(--viewer-annotations-pin-label-max-width)`;
|
|
350
|
-
return `min(${expected}, ${this.computeRemainingWidth()})`;
|
|
351
|
-
}
|
|
352
|
-
computeMaxHeight() {
|
|
353
|
-
const expected = `var(--viewer-annotations-pin-label-max-height)`;
|
|
354
|
-
return `min(${expected}, ${this.computeRemainingHeight()})`;
|
|
355
|
-
}
|
|
356
|
-
computeRemainingWidth() {
|
|
357
|
-
var _a, _b;
|
|
358
|
-
return `calc(${((_a = this.elementBounds) === null || _a === void 0 ? void 0 : _a.width.toString()) || 0}px - ${((_b = this.computedScreenPosition) === null || _b === void 0 ? void 0 : _b.x.toString()) || 0}px)`;
|
|
359
|
-
}
|
|
360
|
-
computeRemainingHeight() {
|
|
361
|
-
var _a, _b;
|
|
362
|
-
return `calc(${((_a = this.elementBounds) === null || _a === void 0 ? void 0 : _a.height.toString()) || 0}px - ${((_b = this.computedScreenPosition) === null || _b === void 0 ? void 0 : _b.y.toString()) || 0}px)`;
|
|
363
|
-
}
|
|
364
|
-
getPinText() {
|
|
365
|
-
var _a;
|
|
366
|
-
if (((_a = this.pin) === null || _a === void 0 ? void 0 : _a.label.text) != null) {
|
|
367
|
-
this.value = this.pin.label.text;
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
this.value = '';
|
|
371
|
-
}
|
|
372
|
-
return this.value;
|
|
373
|
-
}
|
|
374
|
-
computeScreenPosition() {
|
|
375
|
-
this.computedScreenPosition =
|
|
376
|
-
isTextPin(this.pin) &&
|
|
377
|
-
this.elementBounds != null &&
|
|
378
|
-
this.pin.label.point != null
|
|
379
|
-
? translatePointToScreen(this.pin.label.point, this.elementBounds)
|
|
380
|
-
: undefined;
|
|
381
|
-
}
|
|
382
|
-
submit() {
|
|
383
|
-
var _a, _b;
|
|
384
|
-
this.focused = false;
|
|
385
|
-
this.labelBlurred.emit((_a = this.pin) === null || _a === void 0 ? void 0 : _a.id);
|
|
386
|
-
if (this.pin != null) {
|
|
387
|
-
(_b = this.pinController) === null || _b === void 0 ? void 0 : _b.updatePin(Object.assign(Object.assign({}, this.pin), { label: {
|
|
388
|
-
point: this.pin.label.point,
|
|
389
|
-
text: this.value,
|
|
390
|
-
} }));
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
get hostEl() { return this; }
|
|
394
|
-
static get watchers() { return {
|
|
395
|
-
"focused": ["watchFocusChange"],
|
|
396
|
-
"pin": ["watchPinChange"],
|
|
397
|
-
"elementBounds": ["watchElementBoundsChange"]
|
|
398
|
-
}; }
|
|
399
|
-
static get style() { return viewerPinLabelCss; }
|
|
400
|
-
}, [0, "vertex-viewer-pin-label", {
|
|
401
|
-
"pin": [16],
|
|
402
|
-
"elementBounds": [16],
|
|
403
|
-
"value": [1025],
|
|
404
|
-
"pinController": [16],
|
|
405
|
-
"focused": [32],
|
|
406
|
-
"computedScreenPosition": [32],
|
|
407
|
-
"textareaRows": [32],
|
|
408
|
-
"contentElBounds": [32],
|
|
409
|
-
"setFocus": [64]
|
|
410
|
-
}]);
|
|
411
|
-
function defineCustomElement() {
|
|
412
|
-
if (typeof customElements === "undefined") {
|
|
413
|
-
return;
|
|
414
|
-
}
|
|
415
|
-
const components = ["vertex-viewer-pin-label"];
|
|
416
|
-
components.forEach(tagName => { switch (tagName) {
|
|
417
|
-
case "vertex-viewer-pin-label":
|
|
418
|
-
if (!customElements.get(tagName)) {
|
|
419
|
-
customElements.define(tagName, VertexPinLabel);
|
|
420
|
-
}
|
|
421
|
-
break;
|
|
422
|
-
} });
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
export { PinController as P, VertexPinLabel as V, translatePointToRelative as a, defineCustomElement as d, translatePointToScreen as t };
|
|
426
|
-
|
|
427
|
-
//# sourceMappingURL=viewer-pin-label.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"viewer-pin-label.js","mappings":";;;;;;;;;;;AAgBA;;;MAGa,aAAa;EAGxB,YACU,KAAe,EACf,OAA0B,MAAM,EAChC,OAA0B,UAAU,EACpC,kBAAkD,SAAS;IAH3D,UAAK,GAAL,KAAK,CAAU;IACf,SAAI,GAAJ,IAAI,CAA4B;IAChC,SAAI,GAAJ,IAAI,CAAgC;IACpC,oBAAe,GAAf,eAAe,CAA4C;GACjE;;;;;;;EAQG,MAAM,CAAC,GAAQ;IACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;GACxB;;;;;EAMM,SAAS;IACd,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;GACxB;;;;;;;;;EAUM,SAAS,CAAC,GAAQ;IACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;GAC3B;;;;;;;;EASM,OAAO,CAAC,IAAc;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;GAC1B;;;;;;;EAQM,MAAM,CAAC,GAAQ;IACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;GACxB;;;;;;EAOM,SAAS,CAAC,GAAQ;IACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;GAC3B;;;;;EAMM,gBAAgB,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;GAClC;EAEM,WAAW;IAChB,OAAO,IAAI,CAAC,IAAI,CAAC;GAClB;EAEM,WAAW;IAChB,OAAO,IAAI,CAAC,IAAI,CAAC;GAClB;EAEM,WAAW,CAAC,IAAuB;IACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GAClB;EAEM,WAAW,CAAC,IAAuB;IACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GAClB;EAEM,YAAY;IACjB,OAAO,IAAI,CAAC,SAAS,CAAC;GACvB;EAEM,YAAY,CAAC,SAAgC;IAClD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;GAC5B;EAEM,eAAe,CAAC,KAA4B;IACjD,IAAI,CAAC,eAAe,mCACf,IAAI,CAAC,eAAe,KACvB,YAAY,EAAE,KAAK,GACpB,CAAC;GACH;EAEM,cAAc,CAAC,KAA4B;IAChD,IAAI,CAAC,eAAe,mCACf,IAAI,CAAC,eAAe,KACvB,WAAW,EAAE,KAAK,GACnB,CAAC;GACH;EAEM,kBAAkB;IACvB,OAAO,IAAI,CAAC,eAAe,CAAC;GAC7B;EAEM,eAAe,CACpB,SAAoB,EACpB,aAA8B,EAC9B,MAAe;IAEf,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;MAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChD,IAAI,GAAG,IAAI,IAAI,EAAE;MACf,IAAI,CAAC,SAAS,iCACT,GAAG,KACN,aAAa;QACb,MAAM,IACN,CAAC;KACJ;GACF;;;SCxJa,sBAAsB,CACpC,EAAe,EACf,KAAkB;EAElB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACtE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAEtE,OAAOA,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AAED;;;SAGgB,sBAAsB,CACpC,EAAe,EACf,gBAAuC;EAEvC,OAAOA,KAAK,CAAC,GAAG,CACdA,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAChEC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACpC,CAAC;AACJ,CAAC;AAED;;;SAGgB,wBAAwB,CACtC,EAAe,EACf,gBAAuC,EACvC,aAAuB,EACvB,OAAgB,EAChB,OAAgB;EAEhB,MAAM,mBAAmB,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;EACxD,MAAM,qBAAqB,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;EACzD,MAAM,iBAAiB,GAAGA,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;EAE9D,MAAMC,OAAK,GAAGF,KAAK,CAAC,KAAK,CACvBA,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC,EACrC,qBAAqB,EACrB,mBAAmB,CACpB,CAAC;EAEF,IAAI,aAAa,EAAE;IACjB,MAAM,MAAM,GAAGA,KAAK,CAAC,KAAK,CACxBA,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAC9B,qBAAqB,EACrB,mBAAmB,CACpB,CAAC;;;;IAKF,MAAM,8BAA8B,GAAG,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,8BAA8B;QACpD,MAAM,CAAC,CAAC;QACR,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAElB,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,yBAAyB;QAC/C,MAAM,CAAC,CAAC;QACR,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAElB,MAAM,WAAW,GAAGA,KAAK,CAAC,GAAG,CAC3BE,OAAK,EACLF,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CACnD,CAAC;IAEF,OAAO,sBAAsB,CAAC,WAAW,EAAEG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;GACrE;OAAM;IACL,OAAO,sBAAsB,CAACD,OAAK,EAAEC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;GAC/D;AACH;;SC3EgB,gBAAgB,CAAC,EAAe;EAC9C,OAAO,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrC;;ACFA,MAAM,iBAAiB,GAAG,g2FAAg2F;;MCoC72F,cAAc;EAsEzB;;;;;;IApBQ,YAAO,GAAG,KAAK,CAAC;IAMhB,iBAAY,GAAG,CAAC,CAAC;IAgNjB,uBAAkB,GAAG;MAC3B,OAAO,CAAC;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;UAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;UAC9D,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;UACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAC1B,CAAC,EACD,IAAI,CAAC,IAAI,CACP,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;YAChC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC;YAC1C,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CACxC,CACF,CAAC;SACH;OACF,CAAC,CAAC;KACJ,CAAC;IAEM,uBAAkB,GAAG,CAAC,KAAoB;MAChD,KAAK,CAAC,eAAe,EAAE,CAAC;MACxB,IACE,KAAK,CAAC,GAAG,KAAK,OAAO;SACpB,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,EAClD;QACA,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;OACpB;WAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;QAChC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;OACf;KACF,CAAC;IAEM,sBAAiB,GAAG,CAAC,KAAmB;;MAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QACjB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;UAC9B,IAAI,CAAC,2BAA2B,GAAG,wBAAwB,CACzD,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EACjD,IAAI,CAAC,aAAa,CACnB,CAAC;UACF,IAAI,CAAC,sBAAsB,GAAG,MAAA,IAAI,CAAC,GAAG,0CAAE,KAAK,CAAC,KAAK,CAAC;UAEpD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;UAC/D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC5D;OACF;KACF,CAAC;IAEM,sBAAiB,GAAG,CAAC,KAAmB;;MAC9C,IACE,IAAI,CAAC,aAAa,IAAI,IAAI;QAC1B,IAAI,CAAC,2BAA2B;QAChC,IAAI,CAAC,sBAAsB,IAAI,IAAI,EACnC;;QAEA,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,MAAMD,OAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,wBAAwB,CAACA,OAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAErE,MAAM,aAAa,GAAGF,KAAK,CAAC,QAAQ,CAClC,QAAQ,EACR,IAAI,CAAC,2BAA2B,CACjC,CAAC;QAEF,MAAM,YAAY,GAChB,IAAI,CAAC,GAAG,IAAI,IAAI;4CAEP,IAAI,CAAC,GAAG,KACX,KAAK,kCACA,IAAI,CAAC,GAAG,CAAC,KAAK,KACjB,KAAK,EAAEA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,SAGhE,SAAS,CAAC;QAEhB,IAAI,YAAY,EAAE;UAChB,MAAA,IAAI,CAAC,aAAa,0CAAE,SAAS,CAAC,YAAY,CAAC,CAAC;UAC5C,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;OACF;KACF,CAAC;IAEM,oBAAe,GAAG,CAAC,KAAmB;;MAC5C,IACE,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,WAAW,EAAE,MAAK,MAAM;QAC5C,IAAI,CAAC,2BAA2B,IAAI,IAAI;QACxC,IAAI,CAAC,aAAa,IAAI,IAAI,EAC1B;QACA,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,MAAM,+BAA+B,GAAGA,KAAK,CAAC,QAAQ,CACpD,iBAAiB,EACjB,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAClD,CAAC;QAEF,IAAI,+BAA+B,IAAI,CAAC,EAAE;UACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;UACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,CAAC;SACtC;OACF;MAED,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAC;MAC7C,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;MAExC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;MAClE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;KAC/D,CAAC;IAEM,mBAAc,GAAG;MACvB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf,CAAC;IAgBM,oBAAe,GAAG,CAAC,KAAY;MACrC,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;MAC/C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;KAC1B,CAAC;IAnUA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;GAChC;;;;EAMM,MAAM,QAAQ;;;IAEnB,IAAI,QAAO,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAA,KAAK,UAAU,EAAE;MAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;MACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,CAAC;MACrC,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;KACvB;GACF;EAGS,gBAAgB;;IACxB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAEzB,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,MAAA,IAAI,CAAC,aAAa,0CAAE,gBAAgB,CAAC,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,CAAC;KACpD;GACF;EAGS,cAAc;IACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;GAC9B;EAGS,wBAAwB;IAChC,IAAI,CAAC,qBAAqB,EAAE,CAAC;GAC9B;EAES,iBAAiB;IACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;GAC9B;EAES,gBAAgB;IACxB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;MACvC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEzE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;MACvB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1C;IAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;MAC1B,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACpD;IAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;MAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;KACxD;GACF;EAES,oBAAoB;;IAC5B,MAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,EAAE,CAAC;IAClC,MAAA,IAAI,CAAC,qBAAqB,0CAAE,UAAU,EAAE,CAAC;GAC1C;EAES,kBAAkB;IAC1B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;MACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;GACF;EAES,MAAM;;IACd,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,QACE,EAAC,IAAI,QACH,WACE,KAAK,EAAEI,UAAU,CAAC,yBAAyB,EAAE;QAC3C,OAAO,EAAE,IAAI,CAAC,OAAO;OACtB,CAAC,EACF,aAAa,EAAE,IAAI,CAAC,iBAAiB,EACrC,KAAK,EAAE;QACL,GAAG,EAAE,GAAG,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,CAAC,CAAC,QAAQ,EAAE,KAAI,CAAC,IAAI;QAC1D,IAAI,EAAE,GAAG,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,CAAC,CAAC,QAAQ,EAAE,KAAI,CAAC,IAAI;QAC3D,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE;QAChC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE;QAChC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;QAClC,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,WAAW;OACxB,IAED,gBACE,EAAE,EAAE,mBAAmB,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,EAAE,EACrC,KAAK,EAAEA,UAAU,CAAC,iBAAiB,EAAE,gBAAgB,EAAE;QACrD,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO;OAC5B,CAAC,EACF,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,EACvB,GAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,EAClC,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAClC,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,MAAM,EAAE,IAAI,CAAC,cAAc,GAC3B,EAGD,CAAC,IAAI,CAAC,OAAO,KACZ,WACE,KAAK,EAAC,uBAAuB,EAC7B,aAAa,EAAE,IAAI,CAAC,iBAAiB,GACrC,CACH,CACG,EACN,WACE,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAClC,KAAK,EAAEA,UAAU,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACvD,KAAK,EAAE;QACL,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE;QAChC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;OACnC,IAEA,IAAI,CAAC,aAAa,EAAE,CACjB,CACD,EACP;GACH;EAEO,aAAa;;;;IAInB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK;SACP,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CACL,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,aAAM,CAAC,EACnC,EAAmC,CACpC;QACH,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;GAClB;EAEO,eAAe;IACrB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;MAChC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC;MAEvD,OAAO,OAAO,QAAQ,KAAK,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC;KACtD;SAAM;MACL,OAAO,+CAA+C,CAAC;KACxD;GACF;EAEO,eAAe;IACrB,MAAM,QAAQ,GAAG,+CAA+C,CAAC;IAEjE,OAAO,OAAO,QAAQ,KAAK,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC;GAC5D;EAEO,gBAAgB;IACtB,MAAM,QAAQ,GAAG,gDAAgD,CAAC;IAElE,OAAO,OAAO,QAAQ,KAAK,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC;GAC7D;EAEO,qBAAqB;;IAC3B,OAAO,QAAQ,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,KAAK,CAAC,QAAQ,EAAE,KAAI,CAAC,QACtD,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,CAAC,CAAC,QAAQ,EAAE,KAAI,CAC/C,KAAK,CAAC;GACP;EAEO,sBAAsB;;IAC5B,OAAO,QAAQ,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,MAAM,CAAC,QAAQ,EAAE,KAAI,CAAC,QACvD,CAAA,MAAA,IAAI,CAAC,sBAAsB,0CAAE,CAAC,CAAC,QAAQ,EAAE,KAAI,CAC/C,KAAK,CAAC;GACP;EAEO,UAAU;;IAChB,IAAI,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,KAAK,CAAC,IAAI,KAAI,IAAI,EAAE;MAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;KAClC;SAAM;MACL,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;IAED,OAAO,IAAI,CAAC,KAAK,CAAC;GACnB;EAEO,qBAAqB;IAC3B,IAAI,CAAC,sBAAsB;MACzB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,aAAa,IAAI,IAAI;QAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI;UACxB,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;UAChE,SAAS,CAAC;GACjB;EAmHO,MAAM;;IACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,GAAG,0CAAE,EAAE,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;MACpB,MAAA,IAAI,CAAC,aAAa,0CAAE,SAAS,iCACxB,IAAI,CAAC,GAAG,KACX,KAAK,EAAE;UACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;UAC3B,IAAI,EAAE,IAAI,CAAC,KAAK;SACjB,IACD,CAAC;KACJ;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["Point","Dimensions","point","Range","classNames"],"sources":["./src/lib/pins/controller.ts","./src/components/viewer-pin-tool/utils.ts","./src/components/viewer-pin-label/utils.ts","./src/components/viewer-pin-label/viewer-pin-label.css?tag=vertex-viewer-pin-label","./src/components/viewer-pin-label/viewer-pin-label.tsx"],"sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\n\nimport {\n Pin,\n PinModel,\n PinStyleAttributes,\n ViewerPinToolMode,\n ViewerPinToolType,\n} from './model';\n\nexport interface Draggable {\n id: string;\n lastPoint?: Point.Point;\n}\n\n/**\n * The `PinController` is responsible for adding pin entities to the viewer canvas\n */\nexport class PinController {\n private draggable?: Draggable;\n\n public constructor(\n private model: PinModel,\n private mode: ViewerPinToolMode = 'view',\n private type: ViewerPinToolType = 'pin-icon',\n private styleAttributes: PinStyleAttributes | undefined = undefined\n ) {}\n\n /**\n * Registers an entity to place on the canvas and places the pin on the associated part.\n *\n * @param pin The pin entity\n * @returns A void promise\n */\n public addPin(pin: Pin): void {\n this.model.addPin(pin);\n }\n\n /**\n * Clears all entities and returns a promise that resolves with an empty list\n * of pin results.\n */\n public clearPins(): void {\n this.model.clearPins();\n }\n\n /**\n * Deregisters an entity and performs a pin if this entity was\n * removed.\n *\n * @param entity The entity to remove.\n * @returns A promise that resolves with the results after removing this\n * entity.\n */\n public removePin(pin: Pin): void {\n this.model.removePin(pin);\n }\n\n /**\n * Registers a set of entities and adds a pin\n *\n * @param entities The pin entities to draw.\n * @returns A promise that resolves with the results after registering these\n * entities.\n */\n public setPins(pins: Set<Pin>): void {\n this.model.setPins(pins);\n }\n\n /**\n * Sets the set of entities to be placed with the model.\n *\n * @param pin A pin to set\n * @returns `true` if the entity has been added.\n */\n public setPin(pin: Pin): void {\n this.model.setPin(pin);\n }\n\n /**\n * Updates an existing pin\n * @param pin A pin to set\n * @returns `true` if the entity has been updated, false otherwise\n */\n public updatePin(pin: Pin): void {\n this.model.updatePin(pin);\n }\n\n /**\n * Tells the controller which pin is selected in the model\n * @param pinId\n */\n public setSelectedPinId(pinId?: string): void {\n this.model.setSelectedPin(pinId);\n }\n\n public getToolMode(): ViewerPinToolMode {\n return this.mode;\n }\n\n public getToolType(): ViewerPinToolType {\n return this.type;\n }\n\n public setToolMode(mode: ViewerPinToolMode): void {\n this.mode = mode;\n }\n\n public setToolType(type: ViewerPinToolType): void {\n this.type = type;\n }\n\n public getDraggable(): Draggable | undefined {\n return this.draggable;\n }\n\n public setDraggable(draggable: Draggable | undefined): void {\n this.draggable = draggable;\n }\n\n public setPrimaryColor(color?: Color.Color | string): void {\n this.styleAttributes = {\n ...this.styleAttributes,\n primaryColor: color,\n };\n }\n\n public setAccentColor(color?: Color.Color | string): void {\n this.styleAttributes = {\n ...this.styleAttributes,\n accentColor: color,\n };\n }\n\n public getStyleAttributes(): PinStyleAttributes | undefined {\n return this.styleAttributes;\n }\n\n public updateDraggable(\n draggable: Draggable,\n worldPosition: Vector3.Vector3,\n partId?: string\n ): void {\n if (this.draggable != null) {\n this.draggable = draggable;\n }\n const pin = this.model.getPinById(draggable.id);\n if (pin != null) {\n this.updatePin({\n ...pin,\n worldPosition,\n partId,\n });\n }\n }\n}\n","import { Dimensions, Point } from '@vertexvis/geometry';\nimport { Range } from '@vertexvis/utils';\n\nexport function constrainRelativePoint(\n pt: Point.Point,\n range: Range.Range\n): Point.Point {\n const constrainedX = Math.max(range.start, Math.min(range.end, pt.x));\n const constrainedY = Math.max(range.start, Math.min(range.end, pt.y));\n\n return Point.create(constrainedX, constrainedY);\n}\n\n/**\n * Translates a point in relative units to a point in screen units.\n */\nexport function translatePointToScreen(\n pt: Point.Point,\n canvasDimensions: Dimensions.Dimensions\n): Point.Point {\n return Point.add(\n Point.scale(pt, canvasDimensions.width, canvasDimensions.height),\n Dimensions.center(canvasDimensions)\n );\n}\n\n/**\n * Translates a point in screen units to a point in relative units.\n */\nexport function translatePointToRelative(\n pt: Point.Point,\n canvasDimensions: Dimensions.Dimensions,\n includeOffset?: boolean,\n xOffset?: number,\n yOffset?: number\n): Point.Point {\n const verticalScaleFactor = 1 / canvasDimensions.height;\n const horizontalScaleFactor = 1 / canvasDimensions.width;\n const canvasCenterPoint = Dimensions.center(canvasDimensions);\n\n const point = Point.scale(\n Point.subtract(pt, canvasCenterPoint),\n horizontalScaleFactor,\n verticalScaleFactor\n );\n\n if (includeOffset) {\n const offset = Point.scale(\n Point.create(xOffset, yOffset),\n horizontalScaleFactor,\n verticalScaleFactor\n );\n\n // We want to place the label towards the center of the screen.\n // The given point corresponds to the upper left corner of the label, so increase the offset\n // when placing it to the left or above to ensure that part of the label line is visible\n const centerIsToTheRightInXDirection = canvasCenterPoint.x > pt.x;\n const xOffsetCalculated = centerIsToTheRightInXDirection\n ? offset.x\n : -3 * offset.x;\n\n const centerIsBelowInYDirection = canvasCenterPoint.y > pt.y;\n const yOffsetCalculated = centerIsBelowInYDirection\n ? offset.y\n : -3 * offset.y;\n\n const offsetPoint = Point.add(\n point,\n Point.create(xOffsetCalculated, yOffsetCalculated)\n );\n\n return constrainRelativePoint(offsetPoint, Range.create(-0.5, 0.5));\n } else {\n return constrainRelativePoint(point, Range.create(-0.5, 0.5));\n }\n}\n","export function getComputedStyle(el: HTMLElement): CSSStyleDeclaration {\n return window.getComputedStyle(el);\n}\n",":host {\n /**\n * @prop --viewer-annotations-pin-label-background-color: A CSS color that\n * specifies the color of the label background\n */\n --viewer-annotations-pin-label-background-color: var(--viewer-annotations-pin-accent-color);\n\n /**\n * @prop --viewer-annotations-pin-label-border-color: A CSS color that\n * specifies the color of the label's border\n */\n --viewer-annotations-pin-label-border-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-label-focused-border-color: A CSS color that\n * specifies the color of the label's border when focused. \n */\n --viewer-annotations-pin-label-focused-border-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-label-color: A CSS color that\n * specifies the color of the label \n */\n --viewer-annotations-pin-label-color: var(--white);\n\n /**\n * @prop --viewer-annotations-pin-label-padding-y: A var that\n * specifies the vertical padding of the label\n */\n --viewer-annotations-pin-label-padding-y: 0.375em;\n\n /**\n * @prop --viewer-annotations-pin-label-padding-x: A var that\n * specifies the horizontal padding of the label\n */\n --viewer-annotations-pin-label-padding-x: 0.5em;\n\n /**\n * @prop --viewer-annotations-pin-label-border-width: A CSS length that\n * specifies the width of the border on this label. Defaults to `2px`.\n */\n --viewer-annotations-pin-label-border-width: 2px;\n\n /**\n * @prop --viewer-annotations-pin-label-border-style: A CSS variable that\n * specifies the style of border on this label. Defaults to `solid`.\n */\n --viewer-annotations-pin-label-border-style: solid;\n\n /**\n * @prop --viewer-annotations-pin-label-border-radius: A var that\n * specifies the border radius of the label\n */\n --viewer-annotations-pin-label-border-radius: 0.25em;\n\n /**\n * @prop --viewer-annotations-pin-label-min-width: A CSS length that\n * specifies the minimum width of the label. Defaults to `2rem`.\n */\n --viewer-annotations-pin-label-min-width: 2rem;\n\n /**\n * @prop --viewer-annotations-pin-label-max-width: A CSS length that\n * specifies the maximum width of the label. Defaults to `25rem`.\n */\n --viewer-annotations-pin-label-max-width: 25rem;\n\n /**\n * @prop --viewer-annotations-pin-label-max-height: A CSS length that\n * specifies the maximum height of the label. Defaults to `50rem`.\n */\n --viewer-annotations-pin-label-max-height: 50rem;\n\n overflow: hidden;\n pointer-events: none;\n}\n\n:host([mode='']) .pin-label {\n color: var(--viewer-annotations-pin-label-color);\n background: var(--viewer-annotations-pin-label-background-color);\n}\n\n.pin-label-text {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 0.875rem;\n line-height: 1rem;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.pin-label-input-wrapper {\n display: flex;\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n min-width: var(--viewer-annotations-pin-label-min-width);\n max-width: var(--viewer-annotations-pin-label-max-width);\n max-height: var(--viewer-annotations-pin-label-max-height);\n background: var(--viewer-annotations-pin-label-background-color);\n border-width: var(--viewer-annotations-pin-label-border-width);\n border-style: var(--viewer-annotations-pin-label-border-style);\n border-color: var(--viewer-annotations-pin-label-border-color);\n border-radius: var(--viewer-annotations-pin-label-border-radius);\n}\n\n.pin-label-input-wrapper.focused {\n min-width: var(--viewer-annotations-pin-label-max-width);\n border-color: var(--viewer-annotations-pin-label-focused-border-color);\n}\n\n.pin-input-drag-target {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n\n.pin-label-input {\n resize: none;\n position: relative;\n outline: none;\n border: none;\n word-break: break-word;\n padding: 0 0 0 0;\n background-color: transparent;\n margin: var(--viewer-annotations-pin-label-padding-y) var(--viewer-annotations-pin-label-padding-x);\n width: var(--viewer-annotations-pin-label-min-width);\n flex-grow: 1;\n overflow: hidden;\n max-width: calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)));\n}\n\n.pin-label-input.readonly {\n pointer-events: auto;\n color: black;\n cursor: pointer;\n}\n\n.pin-label-hidden {\n position: absolute;\n visibility: hidden;\n pointer-events: none;\n width: auto;\n height: auto;\n box-sizing: border-box;\n border-width: var(--viewer-annotations-pin-label-border-width);\n border-style: var(--viewer-annotations-pin-label-border-style);\n border-color: var(--viewer-annotations-pin-label-border-color);\n margin: var(--viewer-annotations-pin-label-padding-y) 0;\n padding: 0 var(--viewer-annotations-pin-label-padding-x);\n max-width: calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)));\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\nimport classNames from 'classnames';\n\nimport { getMouseClientPosition } from '../../lib/dom';\nimport { PinController } from '../../lib/pins/controller';\nimport {\n getPinColors,\n isTextPin,\n PinModel,\n TextPin,\n} from '../../lib/pins/model';\nimport { readDOM } from '../../lib/stencil';\nimport {\n translatePointToRelative,\n translatePointToScreen,\n} from '../viewer-pin-tool/utils';\nimport { getComputedStyle } from './utils';\n\n@Component({\n tag: 'vertex-viewer-pin-label',\n styleUrl: 'viewer-pin-label.css',\n shadow: false,\n})\nexport class VertexPinLabel {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: TextPin;\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop()\n public elementBounds?: DOMRect;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value: string;\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop()\n public pinController?: PinController;\n\n /**\n * @internal\n */\n @Event({ bubbles: true })\n public labelChanged!: EventEmitter<void>;\n\n /**\n * Emitted whenever the label is focused, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelFocused!: EventEmitter<string | undefined>;\n\n /**\n * Emitted whenever the label is blurred, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelBlurred!: EventEmitter<string | undefined>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private focused = false;\n\n @State()\n private computedScreenPosition?: Point.Point;\n\n @State()\n private textareaRows = 1;\n\n @State()\n private contentElBounds?: DOMRect;\n\n private relativePointerDownPosition?: Point.Point;\n private pinPointerDownPosition?: Point.Point;\n\n private inputEl?: HTMLTextAreaElement;\n private contentEl?: HTMLDivElement;\n\n private resizeObserver?: ResizeObserver;\n private contentResizeObserver?: ResizeObserver;\n\n public constructor() {\n this.value = this.getPinText();\n }\n\n /**\n * Gives focus to the the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n this.inputEl?.focus();\n }\n }\n\n @Watch('focused')\n protected watchFocusChange(): void {\n this.labelChanged.emit();\n\n if (this.focused) {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n }\n\n @Watch('pin')\n protected watchPinChange(): void {\n this.value = this.getPinText();\n this.computeScreenPosition();\n }\n\n @Watch('elementBounds')\n protected watchElementBoundsChange(): void {\n this.computeScreenPosition();\n }\n\n protected componentWillLoad(): void {\n this.computeScreenPosition();\n }\n\n protected componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => {\n this.labelChanged.emit();\n });\n\n this.contentResizeObserver = new ResizeObserver(this.computeContentSize);\n\n if (this.hostEl != null) {\n this.resizeObserver.observe(this.hostEl);\n }\n\n if (this.contentEl != null) {\n this.contentResizeObserver.observe(this.contentEl);\n }\n\n if (this.pinController == null) {\n this.pinController = new PinController(new PinModel());\n }\n }\n\n protected disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.contentResizeObserver?.disconnect();\n }\n\n protected componentDidRender(): void {\n if (this.focused && this.inputEl != null) {\n this.setFocus();\n }\n }\n\n protected render(): JSX.Element {\n const { primaryColor, accentColor } = getPinColors(this.pin);\n return (\n <Host>\n <div\n class={classNames('pin-label-input-wrapper', {\n focused: this.focused,\n })}\n onPointerDown={this.handlePointerDown}\n style={{\n top: `${this.computedScreenPosition?.y.toString() || 0}px`,\n left: `${this.computedScreenPosition?.x.toString() || 0}px`,\n minWidth: this.computeMinWidth(),\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n borderColor: primaryColor,\n background: accentColor,\n }}\n >\n <textarea\n id={`pin-label-input-${this.pin?.id}`}\n class={classNames('pin-label-input', 'pin-label-text', {\n ['readonly']: !this.focused,\n })}\n disabled={!this.focused}\n ref={(ref) => (this.inputEl = ref)}\n value={this.value}\n rows={this.textareaRows}\n onKeyDown={this.handleInputKeyDown}\n onInput={this.handleTextInput}\n onBlur={this.handleTextBlur}\n />\n {/* This corrects for a behavior in Firefox where setting the `disabled` attribute to true */}\n {/* prevents any events from propagating. */}\n {!this.focused && (\n <div\n class=\"pin-input-drag-target\"\n onPointerDown={this.handlePointerDown}\n />\n )}\n </div>\n <div\n ref={(el) => (this.contentEl = el)}\n class={classNames('pin-label-text', 'pin-label-hidden')}\n style={{\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n }}\n >\n {this.hiddenContent()}\n </div>\n </Host>\n );\n }\n\n private hiddenContent(): Array<string | HTMLBRElement> {\n // This corrects some inconsistencies in how a newline character\n // is represented in a div. Leveraging `<br>`s results in a more\n // consistent representation of the newlines in a textarea.\n return this.value.includes('\\n')\n ? this.value\n .split('\\n')\n .reduce(\n (res, str) => [...res, str, <br />],\n [] as Array<string | HTMLBRElement>\n )\n : [this.value];\n }\n\n private computeMinWidth(): string {\n if (this.contentElBounds != null) {\n const expected = `${this.contentElBounds.width + 8}px`;\n\n return `min(${expected}, ${this.computeMaxWidth()})`;\n } else {\n return `var(--viewer-annotations-pin-label-min-width)`;\n }\n }\n\n private computeMaxWidth(): string {\n const expected = `var(--viewer-annotations-pin-label-max-width)`;\n\n return `min(${expected}, ${this.computeRemainingWidth()})`;\n }\n\n private computeMaxHeight(): string {\n const expected = `var(--viewer-annotations-pin-label-max-height)`;\n\n return `min(${expected}, ${this.computeRemainingHeight()})`;\n }\n\n private computeRemainingWidth(): string {\n return `calc(${this.elementBounds?.width.toString() || 0}px - ${\n this.computedScreenPosition?.x.toString() || 0\n }px)`;\n }\n\n private computeRemainingHeight(): string {\n return `calc(${this.elementBounds?.height.toString() || 0}px - ${\n this.computedScreenPosition?.y.toString() || 0\n }px)`;\n }\n\n private getPinText(): string {\n if (this.pin?.label.text != null) {\n this.value = this.pin.label.text;\n } else {\n this.value = '';\n }\n\n return this.value;\n }\n\n private computeScreenPosition(): void {\n this.computedScreenPosition =\n isTextPin(this.pin) &&\n this.elementBounds != null &&\n this.pin.label.point != null\n ? translatePointToScreen(this.pin.label.point, this.elementBounds)\n : undefined;\n }\n\n private computeContentSize = (): void => {\n readDOM(() => {\n if (this.contentEl != null) {\n this.contentElBounds = this.contentEl.getBoundingClientRect();\n const computedStyles = getComputedStyle(this.contentEl);\n this.textareaRows = Math.max(\n 1,\n Math.ceil(\n (parseFloat(computedStyles.height) -\n parseFloat(computedStyles.borderWidth) * 2) /\n parseFloat(computedStyles.lineHeight)\n )\n );\n }\n });\n };\n\n private handleInputKeyDown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n if (\n event.key === 'Enter' &&\n (event.ctrlKey || event.metaKey || event.shiftKey)\n ) {\n this.textareaRows += 1;\n this.value += '\\n';\n } else if (event.key === 'Enter') {\n event.preventDefault();\n this.submit();\n }\n };\n\n private handlePointerDown = (event: PointerEvent): void => {\n if (!this.focused) {\n if (this.elementBounds != null) {\n this.relativePointerDownPosition = translatePointToRelative(\n getMouseClientPosition(event, this.elementBounds),\n this.elementBounds\n );\n this.pinPointerDownPosition = this.pin?.label.point;\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.elementBounds != null &&\n this.relativePointerDownPosition &&\n this.pinPointerDownPosition != null\n ) {\n // Prevent selection of any text while interacting with the label\n event.preventDefault();\n\n const point = getMouseClientPosition(event, this.elementBounds);\n const relative = translatePointToRelative(point, this.elementBounds);\n\n const relativeDelta = Point.subtract(\n relative,\n this.relativePointerDownPosition\n );\n\n const myUpdatedPin =\n this.pin != null\n ? {\n ...this.pin,\n label: {\n ...this.pin.label,\n point: Point.add(this.pinPointerDownPosition, relativeDelta),\n },\n }\n : undefined;\n\n if (myUpdatedPin) {\n this.pinController?.updatePin(myUpdatedPin);\n this.computeScreenPosition();\n }\n }\n };\n\n private handlePointerUp = (event: PointerEvent): void => {\n if (\n this.pinController?.getToolMode() === 'edit' &&\n this.relativePointerDownPosition != null &&\n this.elementBounds != null\n ) {\n const pointerDownScreen = translatePointToScreen(\n this.relativePointerDownPosition,\n this.elementBounds\n );\n const distanceBetweenStartAndEndPoint = Point.distance(\n pointerDownScreen,\n getMouseClientPosition(event, this.elementBounds)\n );\n\n if (distanceBetweenStartAndEndPoint <= 2) {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n }\n }\n\n this.relativePointerDownPosition = undefined;\n this.pinPointerDownPosition = undefined;\n\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.removeEventListener('pointerup', this.handlePointerUp);\n };\n\n private handleTextBlur = (): void => {\n this.submit();\n };\n\n private submit(): void {\n this.focused = false;\n this.labelBlurred.emit(this.pin?.id);\n if (this.pin != null) {\n this.pinController?.updatePin({\n ...this.pin,\n label: {\n point: this.pin.label.point,\n text: this.value,\n },\n });\n }\n }\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n };\n}\n"],"version":3}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023 Vertex Software LLC. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
5
|
-
import { c as classnames } from './index2.js';
|
|
6
|
-
|
|
7
|
-
const viewerSpinnerCss = ".spinner{position:relative;height:16px;width:16px}.spinner div{position:absolute;display:block;animation:spinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;border-radius:50%;border-style:solid;box-sizing:border-box;border-color:var(--neutral-800) transparent transparent transparent;border-width:1px;margin:0}.spinner div:nth-child(1){animation-delay:-0.45s}.spinner div:nth-child(2){animation-delay:-0.3s}.spinner div:nth-child(3){animation-delay:-0.15s}.spinner.xs{height:16px;width:16px}.spinner.xs div{border-width:1px;height:16px;width:16px;margin:0}.spinner.sm{height:24px;width:24px}.spinner.sm div{border-width:3px;height:18px;width:18px;margin:2px}.spinner.md{height:32px;width:32px}.spinner.md div{border-width:3px;height:32px;width:32px;margin:2px}.spinner.lg{height:64px;width:64px}.spinner.lg div{border-width:6px;height:52px;width:52px;margin:6px}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
|
|
8
|
-
|
|
9
|
-
const ViewerSpinner = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
10
|
-
constructor() {
|
|
11
|
-
super();
|
|
12
|
-
this.__registerHost();
|
|
13
|
-
this.__attachShadow();
|
|
14
|
-
/**
|
|
15
|
-
* The size of the spinner. Can be `'xs' | 'sm' | 'md' | 'lg' | undefined`. Predefined
|
|
16
|
-
* sizes are set to:
|
|
17
|
-
*
|
|
18
|
-
* * `xm`: 16px
|
|
19
|
-
* * `sm`: 24px
|
|
20
|
-
* * `md`: 32px
|
|
21
|
-
* * `lg`: 64px
|
|
22
|
-
*/
|
|
23
|
-
this.size = 'md';
|
|
24
|
-
}
|
|
25
|
-
render() {
|
|
26
|
-
return (h("div", { class: classnames('spinner', {
|
|
27
|
-
['xs']: this.size === 'xs',
|
|
28
|
-
['sm']: this.size === 'sm',
|
|
29
|
-
['md']: this.size === 'md',
|
|
30
|
-
['lg']: this.size === 'lg',
|
|
31
|
-
}) }, h("div", null), h("div", null), h("div", null), h("div", null)));
|
|
32
|
-
}
|
|
33
|
-
static get style() { return viewerSpinnerCss; }
|
|
34
|
-
}, [1, "vertex-viewer-spinner", {
|
|
35
|
-
"size": [1]
|
|
36
|
-
}]);
|
|
37
|
-
function defineCustomElement() {
|
|
38
|
-
if (typeof customElements === "undefined") {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const components = ["vertex-viewer-spinner"];
|
|
42
|
-
components.forEach(tagName => { switch (tagName) {
|
|
43
|
-
case "vertex-viewer-spinner":
|
|
44
|
-
if (!customElements.get(tagName)) {
|
|
45
|
-
customElements.define(tagName, ViewerSpinner);
|
|
46
|
-
}
|
|
47
|
-
break;
|
|
48
|
-
} });
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export { ViewerSpinner as V, defineCustomElement as d };
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=viewer-spinner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"viewer-spinner.js","mappings":";;;;;;AAAA,MAAM,gBAAgB,GAAG,26BAA26B;;MCav7B,aAAa;EAL1B;;;;;;;;;;;;;IAgBS,SAAI,GAAiB,IAAI,CAAC;GAmBlC;EAjBQ,MAAM;IACX,QACE,WACE,KAAK,EAAEA,UAAU,CAAC,SAAS,EAAE;QAC3B,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;QAC1B,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;QAC1B,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;QAC1B,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;OAC3B,CAAC,IAEF,cAAO,EACP,cAAO,EACP,cAAO,EACP,cAAO,CACH,EACN;GACH;;;;;;;;;;;;;;;;;;;;;","names":["classNames"],"sources":["./src/components/viewer-spinner/viewer-spinner.css?tag=vertex-viewer-spinner&encapsulation=shadow","./src/components/viewer-spinner/viewer-spinner.tsx"],"sourcesContent":[".spinner {\n position: relative;\n height: 16px;\n width: 16px;\n}\n\n.spinner div {\n position: absolute;\n display: block;\n animation: spinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n border-color: var(--neutral-800) transparent transparent transparent;\n border-width: 1px;\n\n margin: 0;\n}\n\n.spinner div:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.spinner div:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.spinner div:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n/* xs */\n.spinner.xs {\n height: 16px;\n width: 16px;\n}\n\n.spinner.xs div {\n border-width: 1px;\n height: 16px;\n width: 16px;\n margin: 0;\n}\n\n/* sm */\n.spinner.sm {\n height: 24px;\n width: 24px;\n}\n\n.spinner.sm div {\n border-width: 3px;\n height: 18px;\n width: 18px;\n margin: 2px;\n}\n\n/* md */\n.spinner.md {\n height: 32px;\n width: 32px;\n}\n\n.spinner.md div {\n border-width: 3px;\n height: 32px;\n width: 32px;\n margin: 2px;\n}\n\n/* lg */\n.spinner.lg {\n height: 64px;\n width: 64px;\n}\n\n.spinner.lg div {\n border-width: 6px;\n height: 52px;\n width: 52px;\n margin: 6px;\n}\n\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * The predefined sizes for the spinner.\n */\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | undefined;\n\n@Component({\n tag: 'vertex-viewer-spinner',\n styleUrl: 'viewer-spinner.css',\n shadow: true,\n})\nexport class ViewerSpinner {\n /**\n * The size of the spinner. Can be `'xs' | 'sm' | 'md' | 'lg' | undefined`. Predefined\n * sizes are set to:\n *\n * * `xm`: 16px\n * * `sm`: 24px\n * * `md`: 32px\n * * `lg`: 64px\n */\n @Prop()\n public size?: SpinnerSize = 'md';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <div\n class={classNames('spinner', {\n ['xs']: this.size === 'xs',\n ['sm']: this.size === 'sm',\n ['md']: this.size === 'md',\n ['lg']: this.size === 'lg',\n })}\n >\n <div />\n <div />\n <div />\n <div />\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023 Vertex Software LLC. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
5
|
-
import { c as classnames } from './index2.js';
|
|
6
|
-
|
|
7
|
-
const viewerToolbarGroupCss = ".inner{display:flex;align-items:center;margin:auto}.inner.vertical{flex-direction:column}.inner.horizontal{flex-direction:row}";
|
|
8
|
-
|
|
9
|
-
const ViewerToolbarGroup = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
10
|
-
constructor() {
|
|
11
|
-
super();
|
|
12
|
-
this.__registerHost();
|
|
13
|
-
this.__attachShadow();
|
|
14
|
-
this.direction = 'horizontal';
|
|
15
|
-
}
|
|
16
|
-
render() {
|
|
17
|
-
return (h("div", { class: classnames('inner', {
|
|
18
|
-
horizontal: this.direction === 'horizontal',
|
|
19
|
-
vertical: this.direction === 'vertical',
|
|
20
|
-
}) }, h("slot", null)));
|
|
21
|
-
}
|
|
22
|
-
static get style() { return viewerToolbarGroupCss; }
|
|
23
|
-
}, [1, "vertex-viewer-toolbar-group", {
|
|
24
|
-
"direction": [1]
|
|
25
|
-
}]);
|
|
26
|
-
function defineCustomElement() {
|
|
27
|
-
if (typeof customElements === "undefined") {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
const components = ["vertex-viewer-toolbar-group"];
|
|
31
|
-
components.forEach(tagName => { switch (tagName) {
|
|
32
|
-
case "vertex-viewer-toolbar-group":
|
|
33
|
-
if (!customElements.get(tagName)) {
|
|
34
|
-
customElements.define(tagName, ViewerToolbarGroup);
|
|
35
|
-
}
|
|
36
|
-
break;
|
|
37
|
-
} });
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { ViewerToolbarGroup as V, defineCustomElement as d };
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=viewer-toolbar-group.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"viewer-toolbar-group.js","mappings":";;;;;;AAAA,MAAM,qBAAqB,GAAG,gIAAgI;;MCUjJ,kBAAkB;EAL/B;;;;IAOS,cAAS,GAAgC,YAAY,CAAC;GAc9D;EAZQ,MAAM;IACX,QACE,WACE,KAAK,EAAEA,UAAU,CAAC,OAAO,EAAE;QACzB,UAAU,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY;QAC3C,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU;OACxC,CAAC,IAEF,eAAa,CACT,EACN;GACH;;;;;;;;;;;;;;;;;;;;;","names":["classNames"],"sources":["./src/components/viewer-toolbar-group/viewer-toolbar-group.css?tag=vertex-viewer-toolbar-group&encapsulation=shadow","./src/components/viewer-toolbar-group/viewer-toolbar-group.tsx"],"sourcesContent":[".inner {\n display: flex;\n align-items: center;\n margin: auto;\n}\n\n.inner.vertical {\n flex-direction: column;\n}\n\n.inner.horizontal {\n flex-direction: row;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { ViewerToolbarGroupDirection } from './types';\n\n@Component({\n tag: 'vertex-viewer-toolbar-group',\n styleUrl: 'viewer-toolbar-group.css',\n shadow: true,\n})\nexport class ViewerToolbarGroup {\n @Prop()\n public direction: ViewerToolbarGroupDirection = 'horizontal';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <div\n class={classNames('inner', {\n horizontal: this.direction === 'horizontal',\n vertical: this.direction === 'vertical',\n })}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
|