@pacem/pacem-3d 1.0.0-abel

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.
@@ -0,0 +1,2 @@
1
+ export const TAG_MIDDLE_NAME = "3d";
2
+ export const DEG2RAD = Math.PI / 180;
@@ -0,0 +1,40 @@
1
+ import { Utils } from '@pacem/pacem-core';
2
+ import { parseAsNumericalArray } from '@pacem/pacem-foundation';
3
+ import { Geometry } from '@pacem/pacem-numerical';
4
+ //namespace Pacem.Drawing3D {
5
+ export const Point3DConverter = {
6
+ convert: (attr) => Geometry.LinearAlgebra.Vector3D.parse(attr),
7
+ convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0}`
8
+ };
9
+ export const Point3DOrNumberConverter = {
10
+ convert: (attr) => {
11
+ const arr = parseAsNumericalArray(attr);
12
+ const throwErr = () => { throw new Error(`Cannot parse "${attr}" as a valid Vector3D.`); };
13
+ if (Utils.isNullOrEmpty(arr)) {
14
+ throwErr();
15
+ }
16
+ if (arr.length === 3) {
17
+ return Geometry.LinearAlgebra.Vector3D.from(...arr);
18
+ }
19
+ if (arr.length === 1) {
20
+ const v = arr[0];
21
+ return Geometry.LinearAlgebra.Vector3D.from(v, v, v);
22
+ }
23
+ throwErr();
24
+ },
25
+ convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0}`
26
+ };
27
+ export const QuaternionConverter = {
28
+ convert: (attr) => Geometry.LinearAlgebra.Quaternion.parse(attr),
29
+ convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0} ${prop.w || 0}`
30
+ };
31
+ export const BooleanOrNumberConverter = {
32
+ convert: (attr) => {
33
+ if (attr === 'true')
34
+ return true;
35
+ if (attr === 'false')
36
+ return false;
37
+ return parseAsNumericalArray(attr)[0];
38
+ },
39
+ convertBack: (prop) => prop.toString()
40
+ };
@@ -0,0 +1,29 @@
1
+ import { Utils } from '@pacem/pacem-core';
2
+ //namespace Pacem.Drawing3D {
3
+ export function NotifyChange(callback) {
4
+ return (target, prop, descriptor) => {
5
+ const backingField = `_${prop}_${Utils.uniqueCode()}_backingField`;
6
+ function getter() {
7
+ return this[backingField];
8
+ }
9
+ function setter(val) {
10
+ if (val !== this[backingField]) {
11
+ const old = this[backingField];
12
+ this[backingField] = val;
13
+ callback.call(this, prop, old, val);
14
+ }
15
+ }
16
+ //if (delete target[prop]) {
17
+ Object.defineProperty(target, prop, {
18
+ get: function () {
19
+ return getter.call(this);
20
+ },
21
+ set: function (val) {
22
+ setter.call(this, val);
23
+ },
24
+ enumerable: true,
25
+ configurable: false
26
+ });
27
+ //}
28
+ };
29
+ }
@@ -0,0 +1,73 @@
1
+ //namespace Pacem.Components.Drawing3D {
2
+ /** @deprecated*/
3
+ export class Pacem3DDetector {
4
+ constructor() {
5
+ this._detected = {
6
+ supported: false, info: {}
7
+ };
8
+ let cvs = document.createElement('canvas');
9
+ let contextNames = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'];
10
+ let ctx;
11
+ let getParam = function (str) {
12
+ if (!str)
13
+ return undefined;
14
+ return ctx.getParameter(str);
15
+ };
16
+ // addLine
17
+ let addLine = (section, name, value) => {
18
+ let detected = this._detected;
19
+ var info = detected.info[section] = detected.info[section] || {};
20
+ name = name.replace(/[^\w]+/g, '');
21
+ name = name.substring(0, 1).toLowerCase() + name.substring(1);
22
+ info[name] = value;
23
+ };
24
+ if (navigator.userAgent.indexOf('MSIE') >= 0) {
25
+ try {
26
+ ctx = window['WebGLHelper'].CreateGLContext(cvs, 'canvas');
27
+ }
28
+ catch (e) { }
29
+ }
30
+ else {
31
+ for (var i = 0; i < contextNames.length; i++) {
32
+ try {
33
+ ctx = cvs.getContext(contextNames[i]);
34
+ if (ctx) {
35
+ addLine('main', 'Context Name', contextNames[i]);
36
+ break;
37
+ }
38
+ }
39
+ catch (e) { }
40
+ }
41
+ }
42
+ this._detected.supported = !!ctx;
43
+ addLine('main', 'Platform', navigator.platform);
44
+ addLine('main', 'Agent', navigator.userAgent);
45
+ if (ctx) {
46
+ addLine('main', 'Vendor', getParam(ctx.VENDOR));
47
+ addLine('main', 'Version', getParam(ctx.VERSION));
48
+ addLine('main', 'Renderer', getParam(ctx.RENDERER));
49
+ addLine('main', 'Shading Language Version', getParam(ctx.SHADING_LANGUAGE_VERSION));
50
+ addLine('bits', 'Rgba Bits', getParam(ctx.RED_BITS) + ', ' + getParam(ctx.GREEN_BITS) + ', ' + getParam(ctx.BLUE_BITS) + ', ' + getParam(ctx.ALPHA_BITS));
51
+ addLine('bits', 'Depth Bits', getParam(ctx.DEPTH_BITS));
52
+ addLine('shader', 'Max Vertex Attribs', getParam(ctx.MAX_VERTEX_ATTRIBS));
53
+ addLine('shader', 'Max Vertex Texture Image Units', getParam(ctx.MAX_VERTEX_TEXTURE_IMAGE_UNITS));
54
+ addLine('shader', 'Max Varying Vectors', getParam(ctx.MAX_VARYING_VECTORS));
55
+ addLine('shader', 'Max Uniform Vectors', getParam(ctx.MAX_VERTEX_UNIFORM_VECTORS));
56
+ addLine('tex', 'Max Combined Texture Image Units', getParam(ctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS));
57
+ addLine('tex', 'Max Texture Size', getParam(ctx.MAX_TEXTURE_SIZE));
58
+ addLine('tex', 'Max Cube Map Texture Size', getParam(ctx.MAX_CUBE_MAP_TEXTURE_SIZE));
59
+ addLine('tex', 'Num. Compressed Texture Formats', getParam(ctx.COMPRESSED_TEXTURE_FORMATS));
60
+ addLine('misc', 'Max Render Buffer Size', getParam(ctx.MAX_RENDERBUFFER_SIZE));
61
+ addLine('misc', 'Max Viewport Dimensions', getParam(ctx.MAX_VIEWPORT_DIMS));
62
+ addLine('misc', 'Aliased Line Width Range', getParam(ctx.ALIASED_LINE_WIDTH_RANGE));
63
+ addLine('misc', 'Aliased Point Size Range', getParam(ctx.ALIASED_POINT_SIZE_RANGE));
64
+ addLine('misc', 'Supported Extensions', ctx.getSupportedExtensions() || []);
65
+ }
66
+ }
67
+ get info() {
68
+ return this._detected.info;
69
+ }
70
+ get supported() {
71
+ return this._detected.supported;
72
+ }
73
+ }
@@ -0,0 +1,102 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Utils } from '@pacem/pacem-core';
8
+ import { StalePropertyFlag } from './types';
9
+ import { NotifyChange } from './decorators';
10
+ export class NodeGeometry {
11
+ constructor(positions = []) {
12
+ this.positions = positions;
13
+ }
14
+ static barycenter(positions) {
15
+ var bary = { x: 0, y: 0, z: 0 };
16
+ if (!Utils.isNullOrEmpty(positions)) {
17
+ var count = positions.length;
18
+ for (var i = 0; i < positions.length; i++) {
19
+ var pt = positions[i];
20
+ bary.x += pt.x;
21
+ bary.y += pt.y;
22
+ bary.z += pt.z;
23
+ }
24
+ var countDbl = 1.0 * count;
25
+ bary.x /= countDbl;
26
+ bary.y /= countDbl;
27
+ bary.z /= countDbl;
28
+ }
29
+ return bary;
30
+ }
31
+ static boundingBox(positions) {
32
+ const output = {
33
+ minX: +Infinity, minY: +Infinity, minZ: +Infinity,
34
+ maxX: -Infinity, maxY: -Infinity, maxZ: -Infinity
35
+ };
36
+ if (!Utils.isNullOrEmpty(positions)) {
37
+ for (var i = 0; i < positions.length; i++) {
38
+ var pt = positions[i];
39
+ output.minX = Math.min(output.minX, pt.x);
40
+ output.minY = Math.min(output.minY, pt.y);
41
+ output.minZ = Math.min(output.minZ, pt.z);
42
+ output.maxX = Math.max(output.maxX, pt.x);
43
+ output.maxY = Math.max(output.maxY, pt.y);
44
+ output.maxZ = Math.max(output.maxZ, pt.z);
45
+ }
46
+ }
47
+ return output;
48
+ }
49
+ setAsDirty() {
50
+ setSelfAsDirty.call(this);
51
+ }
52
+ }
53
+ function setSelfAsDirty() {
54
+ const me = this;
55
+ me.flags = [/* no further specifications, other than 'geometry' */ StalePropertyFlag.Geometry];
56
+ }
57
+ export class LineGeometry extends NodeGeometry {
58
+ }
59
+ __decorate([
60
+ NotifyChange(setSelfAsDirty)
61
+ ], LineGeometry.prototype, "positions", void 0);
62
+ export class MeshGeometry extends NodeGeometry {
63
+ #boundingBox;
64
+ #boundingSphere;
65
+ #barycenter;
66
+ get barycenter() {
67
+ return this.#barycenter ??= NodeGeometry.barycenter(this.positions);
68
+ }
69
+ set barycenter(point) {
70
+ this.#barycenter = point;
71
+ }
72
+ get boundingBox() {
73
+ return this.#boundingBox ??= NodeGeometry.boundingBox(this.positions);
74
+ }
75
+ set boundingBox(bbox) {
76
+ this.#boundingBox = bbox;
77
+ }
78
+ get boundingSphere() {
79
+ return this.#boundingSphere;
80
+ }
81
+ set boundingSphere(sphere) {
82
+ this.#boundingSphere = sphere;
83
+ }
84
+ constructor(positions, triangleIndices, textureCoordinates = [], normals = []) {
85
+ super(positions);
86
+ this.triangleIndices = triangleIndices;
87
+ this.textureCoordinates = textureCoordinates;
88
+ this.normals = normals;
89
+ }
90
+ }
91
+ __decorate([
92
+ NotifyChange(setSelfAsDirty)
93
+ ], MeshGeometry.prototype, "positions", void 0);
94
+ __decorate([
95
+ NotifyChange(setSelfAsDirty)
96
+ ], MeshGeometry.prototype, "triangleIndices", void 0);
97
+ __decorate([
98
+ NotifyChange(setSelfAsDirty)
99
+ ], MeshGeometry.prototype, "textureCoordinates", void 0);
100
+ __decorate([
101
+ NotifyChange(setSelfAsDirty)
102
+ ], MeshGeometry.prototype, "normals", void 0);
@@ -0,0 +1,22 @@
1
+ export * from './types';
2
+ export * from './detector';
3
+ export * from './materials/material';
4
+ export * from './materials/basic';
5
+ export * from './materials/lambert';
6
+ export * from './materials/line';
7
+ export * from './materials/phong';
8
+ export * from './materials/standard';
9
+ export * from './primitives/primitive';
10
+ export * from './primitives/box';
11
+ export * from './primitives/cone';
12
+ export * from './primitives/cylinder';
13
+ export * from './primitives/line';
14
+ export * from './primitives/plane';
15
+ export * from './primitives/polyhedra';
16
+ export * from './primitives/sphere';
17
+ export * from './primitives/torus';
18
+ export * from './adapters/shared';
19
+ export * from './adapters/threejsadapter';
20
+ export * from './adapters/webgpu/webgpuadapter';
21
+ export * from './adapters/webgpu/behaviors/orbit-camera';
22
+ export * from './stage';
@@ -0,0 +1 @@
1
+ export * as Drawing3D from './index-components-drawing3d';
@@ -0,0 +1,6 @@
1
+ export * from './types';
2
+ export * from './geometry';
3
+ export * from './decorators';
4
+ export * from './converters';
5
+ export * from './materials/material';
6
+ export * from './parsers/parser';
@@ -0,0 +1,3 @@
1
+ import { DeepMerger } from '@pacem/pacem-foundation';
2
+ import * as Output from './index';
3
+ DeepMerger.merge(Output);
@@ -0,0 +1 @@
1
+ export * as Drawing3D from './index-drawing3d';
@@ -0,0 +1,2 @@
1
+ export * as Components from './index-components';
2
+ export * from './index-root';
@@ -0,0 +1,280 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { CustomElement, P, PCSS, Defaults, ViewChild, Watch, PropertyConverters, Utils, Components, PropertyChangeEventName, Logging, Animations, UI } from '@pacem/pacem-core';
8
+ import { RenderableEvent, DragEvent, RenderableElement } from './types';
9
+ import { TAG_MIDDLE_NAME } from './constants';
10
+ //namespace Pacem.Components.Drawing3D {
11
+ let Pacem3DElement = class Pacem3DElement extends Components.PacemItemsContainerElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this._itemPropertyChangeHandler = (evt) => {
15
+ const renderable = evt.target;
16
+ // clear flags
17
+ // TODO: be more precise
18
+ this.adapter &&
19
+ this.adapter.updateItem(this, renderable);
20
+ renderable.flags.splice(0);
21
+ };
22
+ this._clickHandler = (evt) => {
23
+ let me = this;
24
+ if (!me.interactive || Utils.isNull(me._lastHitResult)) {
25
+ return;
26
+ }
27
+ const type = evt.type.replace(/^mouse/, '');
28
+ const hit = me._lastHitResult, object = hit.object, point = hit.point;
29
+ this._itemDispatch(object, point, type, evt);
30
+ };
31
+ this._hitTestCallback = (result, evt) => {
32
+ const me = this;
33
+ // TODO: handle dragging
34
+ if (result != me._lastHitResult) {
35
+ if (result?.object != me._lastHitResult?.object) {
36
+ const obj = result?.object, last = me._lastHitResult?.object, pt = result?.point;
37
+ if (!Utils.isNull(last)) {
38
+ this._itemDispatch(last, pt, 'out', evt);
39
+ }
40
+ if (!Utils.isNull(obj)) {
41
+ this._itemDispatch(obj, pt, 'over', evt);
42
+ }
43
+ }
44
+ me._lastHitResult = result;
45
+ }
46
+ };
47
+ this._moveHandler = (evt) => {
48
+ let me = this;
49
+ if (!me.adapter || !me.interactive) {
50
+ return;
51
+ }
52
+ const rect = me._resizer.currentSize;
53
+ const callback = (r) => me._hitTestCallback(r, evt);
54
+ const pixel = evt.type === 'mousemove' ? { x: evt.pageX - rect.left, y: evt.pageY - rect.top } : { x: -1, y: -1 };
55
+ me.adapter.raycast(this, pixel, rect, callback);
56
+ };
57
+ this._resizeHandler = (evt) => {
58
+ const oldSize = this.#size;
59
+ const size = evt.detail;
60
+ if (!Utils.isNull(oldSize) && oldSize.height === size.height && oldSize.width === size.width) {
61
+ return;
62
+ }
63
+ this.#size = size;
64
+ const adapter = this.adapter;
65
+ if (!Utils.isNull(adapter)) {
66
+ this.adapter.invalidateSize(this, size);
67
+ this.dispatchEvent(new Components.ResizeEvent(size));
68
+ }
69
+ };
70
+ //#endregion
71
+ }
72
+ validate(item) {
73
+ return item instanceof RenderableElement;
74
+ }
75
+ get stage() {
76
+ return this._container;
77
+ }
78
+ get scene() {
79
+ return this.adapter && this.adapter.getScene(this);
80
+ }
81
+ register(item) {
82
+ const retval = super.register(item);
83
+ if (retval) {
84
+ this._add(item);
85
+ item.addEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);
86
+ }
87
+ return retval;
88
+ }
89
+ unregister(item) {
90
+ const retval = super.unregister(item);
91
+ if (retval) {
92
+ item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);
93
+ this._erase(item);
94
+ }
95
+ return retval;
96
+ }
97
+ _refreshDatasource(val = this.datasource) {
98
+ this.adapter?.updateItem(this, undefined);
99
+ }
100
+ _buildUpDatasourceFromDOM(val = this.items) {
101
+ if (!Utils.isNullOrEmpty(val)) {
102
+ this.datasource = val.slice();
103
+ }
104
+ }
105
+ _add(item) {
106
+ this.adapter &&
107
+ this.adapter.addItem(this, item);
108
+ }
109
+ _erase(item) {
110
+ this.adapter &&
111
+ this.adapter.removeItem(this, item);
112
+ }
113
+ _initializeAdapter(old, val) {
114
+ return new Promise((resolve, reject) => {
115
+ const items = this.datasource || [];
116
+ if (!Utils.isNull(old)) {
117
+ items.forEach(i => old.removeItem(this, i));
118
+ }
119
+ if (!Utils.isNull(this._container) && !Utils.isNull(val)) {
120
+ val.initialize(this).then(_ => {
121
+ (items || []).forEach(i => this._add(i));
122
+ resolve();
123
+ }, e => {
124
+ this.log(Logging.LogLevel.Error, e?.toString());
125
+ reject(e);
126
+ });
127
+ }
128
+ else {
129
+ resolve();
130
+ }
131
+ });
132
+ }
133
+ //#region lifecycle
134
+ propertyChangedCallback(name, old, val, first) {
135
+ super.propertyChangedCallback(name, old, val, first);
136
+ if (first) {
137
+ return;
138
+ }
139
+ switch (name) {
140
+ case 'adapter':
141
+ this._initializeAdapter(old, val);
142
+ break;
143
+ case 'items':
144
+ this._buildUpDatasourceFromDOM(val);
145
+ break;
146
+ case 'transparent':
147
+ this.adapter?.invalidateSize(this, this.size);
148
+ break;
149
+ case 'datasource':
150
+ this._refreshDatasource(val);
151
+ case 'disabled':
152
+ case 'background':
153
+ this.render();
154
+ break;
155
+ }
156
+ }
157
+ viewActivatedCallback() {
158
+ super.viewActivatedCallback();
159
+ // stage
160
+ const container = this._container;
161
+ // resizer
162
+ const resizer = this._resizer;
163
+ resizer.addEventListener('resize', this._resizeHandler, false);
164
+ resizer.target = container;
165
+ // adapter
166
+ this._initializeAdapter(null, this.adapter).then(_ => {
167
+ container.addEventListener('mousemove', this._moveHandler, false);
168
+ container.addEventListener('click', this._clickHandler, false);
169
+ container.addEventListener('mouseup', this._clickHandler, false);
170
+ container.addEventListener('mousedown', this._clickHandler, false);
171
+ container.addEventListener('mouseout', this._moveHandler, false);
172
+ this._buildUpDatasourceFromDOM();
173
+ this.render();
174
+ });
175
+ }
176
+ _itemDispatch(target, point, type, offset) {
177
+ if (!Utils.isNull(target)) {
178
+ var dragArgs, originalEvent, evtType;
179
+ if (offset instanceof Event) {
180
+ originalEvent = offset;
181
+ }
182
+ else {
183
+ dragArgs = { item: target, offset: offset };
184
+ }
185
+ if (typeof type === 'string') {
186
+ evtType = type;
187
+ }
188
+ else {
189
+ evtType = type.type;
190
+ originalEvent = type.originalEvent;
191
+ }
192
+ const m = point;
193
+ const evt = () => offset instanceof Event ? new RenderableEvent(evtType, target, originalEvent, m) : new DragEvent(evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m), itemevt = offset instanceof Event ? new RenderableEvent('item' + evtType, target, originalEvent, m) : new DragEvent('item' + evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);
194
+ var prevent = false;
195
+ if (target instanceof EventTarget) {
196
+ const evnt = evt();
197
+ target.dispatchEvent(evnt);
198
+ prevent = evnt.defaultPrevented;
199
+ }
200
+ target.stage.dispatchEvent(itemevt);
201
+ // was the event (in one of its forms) rejected?
202
+ return prevent || itemevt.defaultPrevented;
203
+ }
204
+ return false;
205
+ }
206
+ disconnectedCallback() {
207
+ this.#handle?.stop();
208
+ const resizer = this._resizer, container = this._container;
209
+ if (!Utils.isNull(container)) {
210
+ container.removeEventListener('click', this._clickHandler, false);
211
+ container.removeEventListener('mouseup', this._clickHandler, false);
212
+ container.removeEventListener('mousedown', this._clickHandler, false);
213
+ container.removeEventListener('mousemove', this._moveHandler, false);
214
+ container.removeEventListener('mouseout', this._moveHandler, false);
215
+ }
216
+ if (!Utils.isNull(resizer)) {
217
+ resizer.removeEventListener('resize', this._resizeHandler, false);
218
+ }
219
+ super.disconnectedCallback();
220
+ }
221
+ #size;
222
+ get size() {
223
+ return this.#size;
224
+ }
225
+ render(item, deepUpdate, now = performance.now()) {
226
+ if (!Utils.isNull(item)) {
227
+ const adapter = this.adapter;
228
+ if (!Utils.isNull(adapter)) {
229
+ adapter.updateItem(this, item);
230
+ }
231
+ }
232
+ else {
233
+ this.#handle?.stop();
234
+ this.#handle = Animations.Timer.run(_ => this._doRender());
235
+ //this._doRender();
236
+ }
237
+ }
238
+ #handle;
239
+ _doRender() {
240
+ if (!this.disabled && !Utils.isNull(this.adapter)) {
241
+ const scene = this.adapter.getScene(this);
242
+ let cancelable = new CustomEvent('prerender', { detail: { scene }, cancelable: true });
243
+ this.dispatchEvent(cancelable);
244
+ if (!cancelable.defaultPrevented) {
245
+ this.adapter.render(this);
246
+ this.dispatchEvent(new CustomEvent('render', { detail: { scene } }));
247
+ }
248
+ }
249
+ }
250
+ };
251
+ __decorate([
252
+ ViewChild(`.${PCSS}-3d`)
253
+ ], Pacem3DElement.prototype, "_container", void 0);
254
+ __decorate([
255
+ ViewChild(P + '-resize')
256
+ ], Pacem3DElement.prototype, "_resizer", void 0);
257
+ __decorate([
258
+ Watch({ emit: false, converter: PropertyConverters.Boolean })
259
+ ], Pacem3DElement.prototype, "interactive", void 0);
260
+ __decorate([
261
+ Watch({ emit: false, converter: PropertyConverters.Boolean })
262
+ ], Pacem3DElement.prototype, "transparent", void 0);
263
+ __decorate([
264
+ Watch({ emit: false, converter: PropertyConverters.String })
265
+ ], Pacem3DElement.prototype, "background", void 0);
266
+ __decorate([
267
+ Watch({ emit: false, converter: PropertyConverters.Element })
268
+ ], Pacem3DElement.prototype, "adapter", void 0);
269
+ __decorate([
270
+ Watch({ emit: false, converter: PropertyConverters.Json })
271
+ ], Pacem3DElement.prototype, "datasource", void 0);
272
+ __decorate([
273
+ Watch({ emit: false, converter: PropertyConverters.Boolean })
274
+ ], Pacem3DElement.prototype, "orbit", void 0);
275
+ Pacem3DElement = __decorate([
276
+ CustomElement({
277
+ tagName: P + '-' + TAG_MIDDLE_NAME, shadow: Defaults.USE_SHADOW_ROOT, template: `<${P}-resize watch-position="true"></${P}-resize><div class="${PCSS}-3d"></div><${P}-content></${P}-content>`
278
+ })
279
+ ], Pacem3DElement);
280
+ export { Pacem3DElement };