Socket
Socket
Sign inDemoInstall

@shapediver/viewer.shared.services

Package Overview
Dependencies
Maintainers
5
Versions
203
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@shapediver/viewer.shared.services - npm Package Compare versions

Comparing version 2.12.8 to 3.0.0

dist/state-engine/ISessionGlobalAccessObjectDefinition.d.ts

7

dist/converter/Converter.d.ts

@@ -0,3 +1,3 @@

import { HttpResponse } from '../http-client/HttpResponse';
import { vec3 } from 'gl-matrix';
import { HttpResponse } from '../http-client/HttpResponse';
export declare class Converter {

@@ -8,3 +8,6 @@ private readonly _httpClient;

processSVG(blob: Blob): Promise<HTMLImageElement>;
responseToImage(response: HttpResponse<ArrayBuffer | HTMLImageElement>, blob: Blob): Promise<HTMLImageElement>;
responseToImage(response: HttpResponse<{
buffer: ArrayBuffer;
blob: Blob;
}>): Promise<HTMLImageElement>;
toAlpha(color: unknown): number;

@@ -11,0 +14,0 @@ toColorArray(color: unknown): number[];

@@ -13,5 +13,6 @@ "use strict";

exports.Converter = void 0;
const gl_matrix_1 = require("gl-matrix");
const tinycolor_1 = require("@ctrl/tinycolor");
const HttpClient_1 = require("../http-client/HttpClient");
const gl_matrix_1 = require("gl-matrix");
const base64_1 = require("../utilities/base64");
class Converter {

@@ -24,7 +25,7 @@ constructor() {

// #endregion Properties (2)
// #region Public Static Accessors (1)
// #region Public Static Getters And Setters (1)
static get instance() {
return this._instance || (this._instance = new this());
}
// #endregion Public Static Accessors (1)
// #endregion Public Static Getters And Setters (1)
// #region Public Methods (8)

@@ -40,3 +41,3 @@ processSVG(blob) {

data = data.replace('data:image/svg+xml;base64,', '');
data = atob(data);
data = (0, base64_1.atobCustom)(data);
const svgC = document.createElement('DIV');

@@ -85,3 +86,3 @@ svgC.id = 'svgc';

biStr[i] = String.fromCharCode(uInt8Array[i]);
const base64Data = window.btoa(biStr.join(''));
const base64Data = (0, base64_1.btoaCustom)(biStr.join(''));
const imgDataUrl = 'data:' + response.headers['content-type'] + ';base64,' + base64Data;

@@ -115,3 +116,3 @@ // replace url in SVG string

biStr[i] = String.fromCharCode(uInt8Array[i]);
const base64Data = window.btoa(biStr.join(''));
const base64Data = (0, base64_1.btoaCustom)(biStr.join(''));
const fontDataUrl = 'data:' + response.headers['content-type'] + ';base64,' + base64Data;

@@ -141,3 +142,3 @@ if (fUrl.length > 0)

}
responseToImage(response, blob) {
responseToImage(response) {
return __awaiter(this, void 0, void 0, function* () {

@@ -148,3 +149,3 @@ // if we already receive and image, this conversion already happened

if (response.headers['content-type'] === 'image/svg+xml') {
const img = yield this.processSVG(blob);
const img = yield this.processSVG(response.data.blob);
return img;

@@ -159,3 +160,3 @@ }

img.crossOrigin = 'anonymous';
img.src = URL.createObjectURL(blob);
img.src = URL.createObjectURL(response.data.blob);
yield promise;

@@ -219,3 +220,3 @@ URL.revokeObjectURL(img.src);

// check if the input is a THREE.Color
if (color.isColor && typeof color.getHexString == 'function') {
if (typeof color === 'object' && 'isColor' in color && 'getHexString' in color && typeof color.getHexString === 'function') {
const tc = new tinycolor_1.TinyColor(color.getHexString());

@@ -222,0 +223,0 @@ return tc.isValid ? this.tinyColorToString(tc) : defColorString;

@@ -5,18 +5,14 @@ import { IDomEventListener } from './IDomEventListener';

private readonly _uuidGenerator;
private readonly _systemInfo;
private _allowListeners;
private _canvas;
private _currentMousePosition;
private _currentPointerPosition;
private _onContextMenu;
private _onKeyDown;
private _onKeyDownPointerPositionHelper;
private _onKeyUp;
private _onMouseWheel;
private _onMouseDown;
private _onMouseMove;
private _onKeyDownMousePositionHelper;
private _onMouseUp;
private _onMouseOut;
private _onTouchStart;
private _onTouchMove;
private _onTouchUp;
private _onTouchCancel;
private _onKeyDown;
private _onContextMenu;
private _onPointerDown;
private _onPointerMove;
private _onPointerOut;
private _onPointerUp;
constructor(canvas: HTMLCanvasElement);

@@ -30,3 +26,3 @@ addDomEventListener(listener: IDomEventListener): string;

*
* Be aware that this might cause some issues with the the camera controls if the mouse / touch events are disabled only partially.
* Be aware that this might cause some issues with the the camera controls if the pointer events are disabled only partially.
*

@@ -37,11 +33,8 @@ * @param allowedListeners

mousewheel?: boolean;
mousedown?: boolean;
mousemove?: boolean;
mouseup?: boolean;
mouseout?: boolean;
touchstart?: boolean;
touchmove?: boolean;
touchend?: boolean;
touchcancel?: boolean;
pointerdown?: boolean;
pointermove?: boolean;
pointerup?: boolean;
pointerout?: boolean;
keydown?: boolean;
keyup?: boolean;
contextmenu?: boolean;

@@ -55,14 +48,11 @@ }): void;

private onKeyDown;
private onKeyDownMousePositionHelper;
private onMouseDown;
private onMouseMove;
private onMouseUp;
private onMouseOut;
private onKeyDownPointerPositionHelper;
private onKeyUp;
private onMouseWheel;
private onTouchUp;
private onTouchCancel;
private onTouchMove;
private onTouchStart;
private onPointerDown;
private onPointerMove;
private onPointerOut;
private onPointerUp;
private removeEventListeners;
}
//# sourceMappingURL=DomEventEngine.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DomEventEngine = void 0;
const SystemInfo_1 = require("../system-info/SystemInfo");
const UuidGenerator_1 = require("../uuid-generator/UuidGenerator");
class DomEventEngine {
// #endregion Properties (5)
// #endregion Properties (14)
// #region Constructors (1)
constructor(canvas) {
// #region Properties (5)
// #region Properties (14)
this._domEventListeners = {};
this._uuidGenerator = UuidGenerator_1.UuidGenerator.instance;
this._systemInfo = SystemInfo_1.SystemInfo.instance;
this._allowListeners = {
mousewheel: true,
mousedown: true,
mousemove: true,
mouseup: true,
mouseout: true,
touchstart: true,
touchmove: true,
touchend: true,
touchcancel: true,
pointerdown: true,
pointermove: true,
pointerup: true,
pointerout: true,
keydown: true,
keyup: true,
contextmenu: true,
};
this._currentMousePosition = { x: 0, y: 0 };
this._currentPointerPosition = { x: 0, y: 0 };
this._canvas = canvas;
this._onMouseWheel = this.onMouseWheel.bind(this);
this._onMouseDown = this.onMouseDown.bind(this);
this._onMouseMove = this.onMouseMove.bind(this);
this._onKeyDownMousePositionHelper = this.onKeyDownMousePositionHelper.bind(this);
this._onMouseUp = this.onMouseUp.bind(this);
this._onMouseOut = this.onMouseOut.bind(this);
this._onTouchStart = this.onTouchStart.bind(this);
this._onTouchMove = this.onTouchMove.bind(this);
this._onTouchUp = this.onTouchUp.bind(this);
this._onTouchCancel = this.onTouchCancel.bind(this);
this._onPointerDown = this.onPointerDown.bind(this);
this._onPointerMove = this.onPointerMove.bind(this);
this._onKeyDownPointerPositionHelper = this.onKeyDownPointerPositionHelper.bind(this);
this._onPointerUp = this.onPointerUp.bind(this);
this._onPointerOut = this.onPointerOut.bind(this);
this._onKeyDown = this.onKeyDown.bind(this);
this._onKeyUp = this.onKeyUp.bind(this);
this._onContextMenu = this.onContextMenu.bind(this);

@@ -56,3 +48,3 @@ this.addEventListeners();

*
* Be aware that this might cause some issues with the the camera controls if the mouse / touch events are disabled only partially.
* Be aware that this might cause some issues with the the camera controls if the pointer events are disabled only partially.
*

@@ -62,102 +54,77 @@ * @param allowedListeners

allowEventListeners(allowedListeners) {
if (typeof window === undefined)
return;
if (allowedListeners.mousewheel !== undefined && this._allowListeners.mousewheel !== allowedListeners.mousewheel) {
if (allowedListeners.mousewheel) {
this._canvas.addEventListener("mousewheel", this._onMouseWheel);
this._canvas.addEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
this._canvas.addEventListener('mousewheel', this._onMouseWheel);
this._canvas.addEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
}
else {
this._canvas.removeEventListener("mousewheel", this._onMouseWheel);
this._canvas.removeEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
this._canvas.removeEventListener('mousewheel', this._onMouseWheel);
this._canvas.removeEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
}
this._allowListeners.mousewheel = allowedListeners.mousewheel;
}
if (allowedListeners.mousedown !== undefined && this._allowListeners.mousedown !== allowedListeners.mousedown) {
if (allowedListeners.mousedown) {
this._canvas.addEventListener("mousedown", this._onMouseDown);
if (allowedListeners.pointerdown !== undefined && this._allowListeners.pointerdown !== allowedListeners.pointerdown) {
if (allowedListeners.pointerdown) {
this._canvas.addEventListener('pointerdown', this._onPointerDown);
}
else {
this._canvas.removeEventListener("mousedown", this._onMouseDown);
this._canvas.removeEventListener('pointerdown', this._onPointerDown);
}
this._allowListeners.mousedown = allowedListeners.mousedown;
this._allowListeners.pointerdown = allowedListeners.pointerdown;
}
if (allowedListeners.mousemove !== undefined && this._allowListeners.mousemove !== allowedListeners.mousemove) {
if (allowedListeners.mousemove) {
this._canvas.addEventListener("mousemove", this._onMouseMove);
window.addEventListener("mousemove", this._onKeyDownMousePositionHelper);
if (allowedListeners.pointermove !== undefined && this._allowListeners.pointermove !== allowedListeners.pointermove) {
if (allowedListeners.pointermove) {
this._canvas.addEventListener('pointermove', this._onPointerMove);
window.addEventListener('pointermove', this._onKeyDownPointerPositionHelper);
}
else {
this._canvas.removeEventListener("mousemove", this._onMouseMove);
window.removeEventListener("mousemove", this._onKeyDownMousePositionHelper);
this._canvas.removeEventListener('pointermove', this._onPointerMove);
window.removeEventListener('pointermove', this._onKeyDownPointerPositionHelper);
}
this._allowListeners.mousemove = allowedListeners.mousemove;
this._allowListeners.pointermove = allowedListeners.pointermove;
}
if (allowedListeners.mouseup !== undefined && this._allowListeners.mouseup !== allowedListeners.mouseup) {
if (allowedListeners.mouseup) {
this._canvas.addEventListener("mouseup", this._onMouseUp);
if (allowedListeners.pointerup !== undefined && this._allowListeners.pointerup !== allowedListeners.pointerup) {
if (allowedListeners.pointerup) {
this._canvas.addEventListener('pointerup', this._onPointerUp);
}
else {
this._canvas.removeEventListener("mouseup", this._onMouseUp);
this._canvas.removeEventListener('pointerup', this._onPointerUp);
}
this._allowListeners.mouseup = allowedListeners.mouseup;
this._allowListeners.pointerup = allowedListeners.pointerup;
}
if (allowedListeners.mouseout !== undefined && this._allowListeners.mouseout !== allowedListeners.mouseout) {
if (allowedListeners.mouseout) {
this._canvas.addEventListener("mouseout", this._onMouseOut);
if (allowedListeners.pointerout !== undefined && this._allowListeners.pointerout !== allowedListeners.pointerout) {
if (allowedListeners.pointerout) {
this._canvas.addEventListener('pointerout', this._onPointerOut);
}
else {
this._canvas.removeEventListener("mouseout", this._onMouseOut);
this._canvas.removeEventListener('pointerout', this._onPointerOut);
}
this._allowListeners.mouseout = allowedListeners.mouseout;
this._allowListeners.pointerout = allowedListeners.pointerout;
}
if (allowedListeners.touchstart !== undefined && this._allowListeners.touchstart !== allowedListeners.touchstart) {
if (allowedListeners.touchstart) {
window.addEventListener("touchstart", this._onTouchStart, { passive: false });
if (allowedListeners.keydown !== undefined && this._allowListeners.keydown !== allowedListeners.keydown) {
if (allowedListeners.keydown) {
window.addEventListener('keydown', this._onKeyDown);
}
else {
window.removeEventListener("touchstart", this._onTouchStart);
window.removeEventListener('keydown', this._onKeyDown);
}
this._allowListeners.touchstart = allowedListeners.touchstart;
this._allowListeners.keydown = allowedListeners.keydown;
}
if (allowedListeners.touchmove !== undefined && this._allowListeners.touchmove !== allowedListeners.touchmove) {
if (allowedListeners.touchmove) {
window.addEventListener("touchmove", this._onTouchMove, { passive: false });
if (allowedListeners.keyup !== undefined && this._allowListeners.keyup !== allowedListeners.keyup) {
if (allowedListeners.keyup) {
window.addEventListener('keyup', this._onKeyUp);
}
else {
window.removeEventListener("touchmove", this._onTouchMove);
window.removeEventListener('keyup', this._onKeyUp);
}
this._allowListeners.touchmove = allowedListeners.touchmove;
this._allowListeners.keyup = allowedListeners.keyup;
}
if (allowedListeners.touchend !== undefined && this._allowListeners.touchend !== allowedListeners.touchend) {
if (allowedListeners.touchend) {
window.addEventListener("touchend", this._onTouchUp, { passive: false });
}
else {
window.removeEventListener("touchend", this._onTouchUp);
}
this._allowListeners.touchend = allowedListeners.touchend;
}
if (allowedListeners.touchcancel !== undefined && this._allowListeners.touchcancel !== allowedListeners.touchcancel) {
if (allowedListeners.touchcancel) {
window.addEventListener("touchcancel", this._onTouchCancel, { passive: false });
}
else {
window.removeEventListener("touchcancel", this._onTouchCancel);
}
this._allowListeners.touchcancel = allowedListeners.touchcancel;
}
if (allowedListeners.keydown !== undefined && this._allowListeners.keydown !== allowedListeners.keydown) {
if (allowedListeners.keydown) {
window.addEventListener("keydown", this._onKeyDown);
}
else {
window.removeEventListener("keydown", this._onKeyDown);
}
this._allowListeners.keydown = allowedListeners.keydown;
}
if (allowedListeners.contextmenu !== undefined && this._allowListeners.contextmenu !== allowedListeners.contextmenu) {
if (allowedListeners.contextmenu) {
this._canvas.addEventListener("contextmenu", this._onContextMenu);
this._canvas.addEventListener('contextmenu', this._onContextMenu);
}
else {
this._canvas.removeEventListener("contextmenu", this._onContextMenu);
this._canvas.removeEventListener('contextmenu', this._onContextMenu);
}

@@ -171,3 +138,3 @@ this._allowListeners.contextmenu = allowedListeners.contextmenu;

removeAllDomEventListener() {
for (let id in this._domEventListeners)
for (const id in this._domEventListeners)
delete this._domEventListeners[id];

@@ -183,106 +150,68 @@ }

// #endregion Public Methods (5)
// #region Private Methods (12)
// #region Private Methods (11)
addEventListeners() {
this._canvas.addEventListener("mousewheel", this._onMouseWheel);
this._canvas.addEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
this._canvas.addEventListener("mousedown", this._onMouseDown);
this._canvas.addEventListener("mousemove", this._onMouseMove);
this._canvas.addEventListener("mouseup", this._onMouseUp);
this._canvas.addEventListener("mouseout", this._onMouseOut);
window.addEventListener("touchstart", this._onTouchStart, { passive: false });
window.addEventListener("touchmove", this._onTouchMove, { passive: false });
window.addEventListener("touchend", this._onTouchUp, { passive: false });
window.addEventListener("touchcancel", this._onTouchCancel, { passive: false });
window.addEventListener("keydown", this._onKeyDown);
window.addEventListener("mousemove", this._onKeyDownMousePositionHelper);
if (typeof window === undefined)
return;
this._canvas.addEventListener('mousewheel', this._onMouseWheel);
this._canvas.addEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
this._canvas.addEventListener('pointerdown', this._onPointerDown);
this._canvas.addEventListener('pointermove', this._onPointerMove);
this._canvas.addEventListener('pointerup', this._onPointerUp);
this._canvas.addEventListener('pointerout', this._onPointerOut);
window.addEventListener('keyup', this._onKeyUp);
window.addEventListener('keydown', this._onKeyDown);
window.addEventListener('pointermove', this._onKeyDownPointerPositionHelper);
// just prevent right click menu
this._canvas.addEventListener("contextmenu", this._onContextMenu);
this._canvas.addEventListener('contextmenu', this._onContextMenu);
}
onContextMenu(event) {
if (this._systemInfo.isMobile === true)
return;
event.preventDefault();
}
onKeyDown(event) {
if (this._canvas === document.elementFromPoint(this._currentMousePosition.x, this._currentMousePosition.y))
if (this._canvas === document.elementFromPoint(this._currentPointerPosition.x, this._currentPointerPosition.y))
Object.values(this._domEventListeners).forEach(e => e.onKeyDown(event));
}
onKeyDownMousePositionHelper(event) {
if (this._systemInfo.isMobile === true)
return;
this._currentMousePosition = { x: event.pageX, y: event.pageY };
onKeyDownPointerPositionHelper(event) {
this._currentPointerPosition = { x: event.pageX, y: event.pageY };
}
onMouseDown(event) {
if (this._systemInfo.isMobile === true)
return;
onKeyUp(event) {
if (this._canvas === document.elementFromPoint(this._currentPointerPosition.x, this._currentPointerPosition.y))
Object.values(this._domEventListeners).forEach(e => e.onKeyUp(event));
}
onMouseWheel(event) {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseDown(event));
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onMouseWheel(event));
}
onMouseMove(event) {
if (this._systemInfo.isMobile === true)
return;
onPointerDown(event) {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseMove(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerDown(event));
}
onMouseUp(event) {
if (this._systemInfo.isMobile === true)
return;
onPointerMove(event) {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseUp(event));
Object.values(this._domEventListeners).forEach(e => e.onMouseEnd(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerMove(event));
}
onMouseOut(event) {
if (this._systemInfo.isMobile === true)
return;
onPointerOut(event) {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseOut(event));
Object.values(this._domEventListeners).forEach(e => e.onMouseEnd(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerOut(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerEnd(event));
}
onMouseWheel(event) {
if (this._systemInfo.isMobile === true)
return;
onPointerUp(event) {
event.preventDefault();
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onMouseWheel(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerUp(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerEnd(event));
}
onTouchUp(event) {
if (event.composedPath().includes(this._canvas.parentElement)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchUp(event));
Object.values(this._domEventListeners).forEach(e => e.onTouchEnd(event));
}
}
onTouchCancel(event) {
if (event.composedPath().includes(this._canvas.parentElement)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchCancel(event));
Object.values(this._domEventListeners).forEach(e => e.onTouchEnd(event));
}
}
onTouchMove(event) {
if (event.composedPath().includes(this._canvas.parentElement)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchMove(event));
}
}
onTouchStart(event) {
if (event.composedPath().includes(this._canvas.parentElement)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchStart(event));
}
}
removeEventListeners() {
this._canvas.removeEventListener("mousewheel", this._onMouseWheel);
this._canvas.removeEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
this._canvas.removeEventListener("mousedown", this._onMouseDown);
this._canvas.removeEventListener("mousemove", this._onMouseMove);
this._canvas.removeEventListener("mouseup", this._onMouseUp);
this._canvas.removeEventListener("mouseout", this._onMouseOut);
window.removeEventListener("touchstart", this._onTouchStart);
window.removeEventListener("touchmove", this._onTouchMove);
window.removeEventListener("touchend", this._onTouchUp);
window.removeEventListener("touchcancel", this._onTouchCancel);
window.removeEventListener("keydown", this._onKeyDown);
window.removeEventListener("mousemove", this._onKeyDownMousePositionHelper);
this._canvas.removeEventListener("contextmenu", this._onContextMenu);
if (typeof window === undefined)
return;
this._canvas.removeEventListener('mousewheel', this._onMouseWheel);
this._canvas.removeEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
this._canvas.removeEventListener('pointerdown', this._onPointerDown);
this._canvas.removeEventListener('pointermove', this._onPointerMove);
this._canvas.removeEventListener('pointerup', this._onPointerUp);
this._canvas.removeEventListener('pointerout', this._onPointerOut);
window.removeEventListener('keydown', this._onKeyDown);
window.removeEventListener('keyup', this._onKeyUp);
window.removeEventListener('pointermove', this._onKeyDownPointerPositionHelper);
this._canvas.removeEventListener('contextmenu', this._onContextMenu);
}

@@ -289,0 +218,0 @@ }

export interface IDomEventListener {
onKeyDown(event: KeyboardEvent): void;
onMouseDown(event: MouseEvent): void;
onMouseMove(event: MouseEvent): void;
onMouseEnd(event: MouseEvent): void;
onMouseUp(event: MouseEvent): void;
onMouseOut(event: MouseEvent): void;
onKeyUp(event: KeyboardEvent): void;
onMouseWheel(event: WheelEvent): void;
onTouchEnd(event: TouchEvent): void;
onTouchUp(event: TouchEvent): void;
onTouchCancel(event: TouchEvent): void;
onTouchMove(event: TouchEvent): void;
onTouchStart(event: TouchEvent): void;
onPointerDown(event: PointerEvent): void;
onPointerEnd(event: PointerEvent): void;
onPointerMove(event: PointerEvent): void;
onPointerOut(event: PointerEvent): void;
onPointerUp(event: PointerEvent): void;
}
//# sourceMappingURL=IDomEventListener.d.ts.map

@@ -0,47 +1,242 @@

/**
* Event types for all camera events
* The camera events are used to notify about camera changes, like start, move and end of camera movement.
* The events that are sent with the camera events are of type {@link ICameraEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*
* @enum {string}
*/
export declare enum EVENTTYPE_CAMERA {
/**
* The CAMERA_START-event is sent when the camera starts moving.
*/
CAMERA_START = "camera.start",
/**
* The CAMERA_MOVE-event is sent when the camera moves.
*/
CAMERA_MOVE = "camera.move",
/**
* The CAMERA_END-event is sent when the camera stops moving.
*/
CAMERA_END = "camera.end"
}
/**
* Event types for all rendering events
* The rendering events are used to notify about specific rendering events, like the finishing of the beauty rendering.
* The events that are sent with the rendering events are of type {@link IRenderingEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_RENDERING {
/**
* The BEAUTY_RENDERING_FINISHED-event is sent when the beauty rendering has finished.
*/
BEAUTY_RENDERING_FINISHED = "rendering.beautyRenderingFinished"
}
/**
* Event types for all scene events
* The scene events are used to notify about scene changes, like bounding box changes or empty bounding boxes.
* The events that are sent with the scene events are of type {@link ISceneEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_SCENE {
/**
* The SCENE_BOUNDING_BOX_CHANGE-event is sent when the bounding box of the scene has changed.
*/
SCENE_BOUNDING_BOX_CHANGE = "scene.boundingBoxChange",
/**
* TheSCENE_BOUNDING_BOX_EMPTY-event is sent when the bounding box of the scene is empty.
*/
SCENE_BOUNDING_BOX_EMPTY = "scene.boundingBoxEmpty"
}
/**
* Event types for all viewport events
* The viewport events are used to notify about viewport changes, like creation, update, closing, visibility changes or loading of settings.
* The events that are sent with the viewport events are of type {@link IViewportEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_VIEWPORT {
/**
* The BUSY_MODE_ON-event is sent when the busy mode of the viewport has started.
*/
BUSY_MODE_ON = "viewport.busy.on",
/**
* The BUSY_MODE_OFF-event is sent when the busy mode of the viewport has ended.
*/
BUSY_MODE_OFF = "viewport.busy.off",
/**
* The VIEWPORT_CREATED-event is sent when the viewport has been created.
*/
VIEWPORT_CREATED = "viewport.created",
/**
* The VIEWPORT_UPDATED-event is sent when the viewport has been updated.
*/
VIEWPORT_UPDATED = "viewport.updated",
/**
* The VIEWPORT_CLOSED-event is sent when the viewport has been closed.
*/
VIEWPORT_CLOSED = "viewport.closed",
/**
* The VIEWPORT_SETTINGS_LOADED-event is sent when the settings of the viewport have been loaded.
*/
VIEWPORT_SETTINGS_LOADED = "viewport.settingsLoaded",
/**
* The VIEWPORT_VISIBLE-event is sent when the viewport has become visible.
*/
VIEWPORT_VISIBLE = "viewport.visible",
/**
* The VIEWPORT_HIDDEN-event is sent when the viewport has become hidden.
*/
VIEWPORT_HIDDEN = "viewport.hidden"
}
/**
* Event types for all session events
* The session events are used to notify about session changes, like creation, customization, closing, loading of initial outputs or delayed loading of SDTF.
* The events that are sent with the session events are of type {@link ISessionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_SESSION {
/**
* The SESSION_CREATED-event is sent when the session has been created.
*/
SESSION_CREATED = "session.created",
/**
* The SESSION_CUSTOMIZED-event is sent when the session has been customized.
*/
SESSION_CUSTOMIZED = "session.customized",
/**
* The SESSION_CLOSED-event is sent when the session has been closed.
*/
SESSION_CLOSED = "session.closed",
SESSION_INITIAL_OUTPUTS_LOADED = "session.initialOutputsLoaded"
/**
* The SESSION_INITIAL_OUTPUTS_LOADED-event is sent when the initial outputs of the session have been loaded.
*/
SESSION_INITIAL_OUTPUTS_LOADED = "session.initialOutputsLoaded",
/**
* The SESSION_SDTF_DELAYED_LOADED-event is sent when the SDTF of the session has been delayed loaded.
*/
SESSION_SDTF_DELAYED_LOADED = "session.sdtfDelayedLoaded"
}
/**
* Event types for all parameter events
* The parameter events are used to notify about parameter changes, like value changes or session value changes.
* The events that are sent with the parameter events are of type {@link IParameterEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_PARAMETER {
/**
* The PARAMETER_VALUE_CHANGED-event is sent when the value of a parameter has changed.
*/
PARAMETER_VALUE_CHANGED = "parameter.valueChanged",
/**
* The PARAMETER_SESSION_VALUE_CHANGED-event is sent when the session value of a parameter has changed.
*/
PARAMETER_SESSION_VALUE_CHANGED = "parameter.sessionValueChanged"
}
/**
* Event types for all output events
* The output events are used to notify about output changes, like updated outputs.
* The events that are sent with the output events are of type {@link IOutputEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_OUTPUT {
/**
* The OUTPUT_UPDATED-event is sent when an output has been updated.
*/
OUTPUT_UPDATED = "output.updated"
}
/**
* Event types for all task events
* The task events are used to notify about task changes, like start, process, end or cancel of a task.
* The events that are sent with the task events are of type {@link ITaskEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_TASK {
/**
* The TASK_START-event is sent when a task has started.
*/
TASK_START = "task.start",
/**
* The TASK_PROCESS-event is sent when the process of a task has been updated.
*/
TASK_PROCESS = "task.process",
/**
* The TASK_END-event is sent when a task has ended.
*/
TASK_END = "task.end",
/**
* The TASK_CANCEL-event is sent when a task has been canceled.
*/
TASK_CANCEL = "task.cancel"
}
/**
* Event types for all interaction events
* The interaction events are used to notify about interaction changes, like drag start, move and end, hover on and off, select on and off.
* The events that are sent with the interaction events are of type {@link IInteractionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_INTERACTION {
/**
* The DRAG_START-event is sent when the dragging of an object has started.
*/
DRAG_START = "interaction.drag.start",
/**
* The DRAG_MOVE-event is sent when an object is being dragged.
*/
DRAG_MOVE = "interaction.drag.move",
/**
* The DRAG_END-event is sent when the dragging of an object has ended.
*/
DRAG_END = "interaction.drag.end",
/**
* The HOVER_ON-event is sent when an object has been hovered.
*/
HOVER_ON = "interaction.hover.on",
/**
* The HOVER_OFF-event is sent when an object has been unhovered.
*/
HOVER_OFF = "interaction.hover.off",
/**
* The SELECT_ON-event is sent when an object has been selected.
*/
SELECT_ON = "interaction.select.on",
/**
* The SELECT_OFF-event is sent when an object has been deselected.
*/
SELECT_OFF = "interaction.select.off"
}
/**
* Event types for all drawing tools events
* The drawing tools events are used to notify about drawing tools changes, like cancel, finish, update, inserted, removed, drag start, move and end.
* The events that are sent with the drawing tools events are of type {@link IDrawingToolsEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export declare enum EVENTTYPE_DRAWING_TOOLS {
/**
* The CANCEL-event is sent when the drawing process has been canceled.
*/
CANCEL = "drawing_tools.cancel",
/**
* The FINISH-event is sent when the drawing process has been finished.
*/
FINISH = "drawing_tools.finish",
/**
* The UPDATE-event is sent when the drawing process has been updated.
*/
UPDATE = "drawing_tools.update",
/**
* The INSERTED-event is sent when a point has been inserted.
*/
INSERTED = "drawing_tools.inserted",
/**
* The REMOVED-event is sent when a point has been removed.
*/
REMOVED = "drawing_tools.removed",
/**
* The DRAG_START-event is sent when the dragging of a point has started.
*/
DRAG_START = "drawing_tools.drag.start",
/**
* The DRAG_MOVE-event is sent when a point is being dragged.
*/
DRAG_MOVE = "drawing_tools.drag.move",
/**
* The DRAG_END-event is sent when the dragging of a point has ended.
*/
DRAG_END = "drawing_tools.drag.end"
}
/**
* Definition of the event types.
* These types are used to identify the type of an event in an event object {@link IEvent}.
* The {@link EventResponseMapping} is used to map the event type to the corresponding event interface.
*/
export declare const EVENTTYPE: {

@@ -53,7 +248,9 @@ CAMERA: typeof EVENTTYPE_CAMERA;

SESSION: typeof EVENTTYPE_SESSION;
PARAMETER: typeof EVENTTYPE_PARAMETER;
VIEWPORT: typeof EVENTTYPE_VIEWPORT;
INTERACTION: typeof EVENTTYPE_INTERACTION;
TASK: typeof EVENTTYPE_TASK;
DRAWING_TOOLS: typeof EVENTTYPE_DRAWING_TOOLS;
};
export declare type MainEventTypes = typeof EVENTTYPE_CAMERA | typeof EVENTTYPE_OUTPUT | typeof EVENTTYPE_RENDERING | typeof EVENTTYPE_SCENE | typeof EVENTTYPE_SESSION | typeof EVENTTYPE_VIEWPORT | typeof EVENTTYPE_INTERACTION | typeof EVENTTYPE_TASK;
export declare type MainEventTypes = typeof EVENTTYPE_CAMERA | typeof EVENTTYPE_OUTPUT | typeof EVENTTYPE_RENDERING | typeof EVENTTYPE_SCENE | typeof EVENTTYPE_SESSION | typeof EVENTTYPE_PARAMETER | typeof EVENTTYPE_VIEWPORT | typeof EVENTTYPE_INTERACTION | typeof EVENTTYPE_DRAWING_TOOLS | typeof EVENTTYPE_TASK;
//# sourceMappingURL=EventTypes.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EVENTTYPE = exports.EVENTTYPE_INTERACTION = exports.EVENTTYPE_TASK = exports.EVENTTYPE_OUTPUT = exports.EVENTTYPE_SESSION = exports.EVENTTYPE_VIEWPORT = exports.EVENTTYPE_SCENE = exports.EVENTTYPE_RENDERING = exports.EVENTTYPE_CAMERA = void 0;
exports.EVENTTYPE = exports.EVENTTYPE_DRAWING_TOOLS = exports.EVENTTYPE_INTERACTION = exports.EVENTTYPE_TASK = exports.EVENTTYPE_OUTPUT = exports.EVENTTYPE_PARAMETER = exports.EVENTTYPE_SESSION = exports.EVENTTYPE_VIEWPORT = exports.EVENTTYPE_SCENE = exports.EVENTTYPE_RENDERING = exports.EVENTTYPE_CAMERA = void 0;
/**
* Event types for all camera events
* The camera events are used to notify about camera changes, like start, move and end of camera movement.
* The events that are sent with the camera events are of type {@link ICameraEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*
* @enum {string}
*/
var EVENTTYPE_CAMERA;
(function (EVENTTYPE_CAMERA) {
/**
* The CAMERA_START-event is sent when the camera starts moving.
*/
EVENTTYPE_CAMERA["CAMERA_START"] = "camera.start";
/**
* The CAMERA_MOVE-event is sent when the camera moves.
*/
EVENTTYPE_CAMERA["CAMERA_MOVE"] = "camera.move";
/**
* The CAMERA_END-event is sent when the camera stops moving.
*/
EVENTTYPE_CAMERA["CAMERA_END"] = "camera.end";
})(EVENTTYPE_CAMERA = exports.EVENTTYPE_CAMERA || (exports.EVENTTYPE_CAMERA = {}));
/**
* Event types for all rendering events
* The rendering events are used to notify about specific rendering events, like the finishing of the beauty rendering.
* The events that are sent with the rendering events are of type {@link IRenderingEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_RENDERING;
(function (EVENTTYPE_RENDERING) {
/**
* The BEAUTY_RENDERING_FINISHED-event is sent when the beauty rendering has finished.
*/
EVENTTYPE_RENDERING["BEAUTY_RENDERING_FINISHED"] = "rendering.beautyRenderingFinished";
})(EVENTTYPE_RENDERING = exports.EVENTTYPE_RENDERING || (exports.EVENTTYPE_RENDERING = {}));
/**
* Event types for all scene events
* The scene events are used to notify about scene changes, like bounding box changes or empty bounding boxes.
* The events that are sent with the scene events are of type {@link ISceneEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_SCENE;
(function (EVENTTYPE_SCENE) {
/**
* The SCENE_BOUNDING_BOX_CHANGE-event is sent when the bounding box of the scene has changed.
*/
EVENTTYPE_SCENE["SCENE_BOUNDING_BOX_CHANGE"] = "scene.boundingBoxChange";
/**
* TheSCENE_BOUNDING_BOX_EMPTY-event is sent when the bounding box of the scene is empty.
*/
EVENTTYPE_SCENE["SCENE_BOUNDING_BOX_EMPTY"] = "scene.boundingBoxEmpty";
})(EVENTTYPE_SCENE = exports.EVENTTYPE_SCENE || (exports.EVENTTYPE_SCENE = {}));
// VIEWPORT
// FRAMERATE
// RENDER_INFO
// RENDER_BEAUTY_START
// RENDER_BEAUTY_CANCEL
// RENDER_BEAUTY_END
// VISIBILITY_ON
// VISIBILITY_OFF
/**
* Event types for all viewport events
* The viewport events are used to notify about viewport changes, like creation, update, closing, visibility changes or loading of settings.
* The events that are sent with the viewport events are of type {@link IViewportEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_VIEWPORT;
(function (EVENTTYPE_VIEWPORT) {
/**
* The BUSY_MODE_ON-event is sent when the busy mode of the viewport has started.
*/
EVENTTYPE_VIEWPORT["BUSY_MODE_ON"] = "viewport.busy.on";
/**
* The BUSY_MODE_OFF-event is sent when the busy mode of the viewport has ended.
*/
EVENTTYPE_VIEWPORT["BUSY_MODE_OFF"] = "viewport.busy.off";
/**
* The VIEWPORT_CREATED-event is sent when the viewport has been created.
*/
EVENTTYPE_VIEWPORT["VIEWPORT_CREATED"] = "viewport.created";
/**
* The VIEWPORT_UPDATED-event is sent when the viewport has been updated.
*/
EVENTTYPE_VIEWPORT["VIEWPORT_UPDATED"] = "viewport.updated";
/**
* The VIEWPORT_CLOSED-event is sent when the viewport has been closed.
*/
EVENTTYPE_VIEWPORT["VIEWPORT_CLOSED"] = "viewport.closed";
/**
* The VIEWPORT_SETTINGS_LOADED-event is sent when the settings of the viewport have been loaded.
*/
EVENTTYPE_VIEWPORT["VIEWPORT_SETTINGS_LOADED"] = "viewport.settingsLoaded";
/**
* The VIEWPORT_VISIBLE-event is sent when the viewport has become visible.
*/
EVENTTYPE_VIEWPORT["VIEWPORT_VISIBLE"] = "viewport.visible";
/**
* The VIEWPORT_HIDDEN-event is sent when the viewport has become hidden.
*/
EVENTTYPE_VIEWPORT["VIEWPORT_HIDDEN"] = "viewport.hidden";
})(EVENTTYPE_VIEWPORT = exports.EVENTTYPE_VIEWPORT || (exports.EVENTTYPE_VIEWPORT = {}));
/**
* Event types for all session events
* The session events are used to notify about session changes, like creation, customization, closing, loading of initial outputs or delayed loading of SDTF.
* The events that are sent with the session events are of type {@link ISessionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_SESSION;
(function (EVENTTYPE_SESSION) {
/**
* The SESSION_CREATED-event is sent when the session has been created.
*/
EVENTTYPE_SESSION["SESSION_CREATED"] = "session.created";
/**
* The SESSION_CUSTOMIZED-event is sent when the session has been customized.
*/
EVENTTYPE_SESSION["SESSION_CUSTOMIZED"] = "session.customized";
/**
* The SESSION_CLOSED-event is sent when the session has been closed.
*/
EVENTTYPE_SESSION["SESSION_CLOSED"] = "session.closed";
/**
* The SESSION_INITIAL_OUTPUTS_LOADED-event is sent when the initial outputs of the session have been loaded.
*/
EVENTTYPE_SESSION["SESSION_INITIAL_OUTPUTS_LOADED"] = "session.initialOutputsLoaded";
/**
* The SESSION_SDTF_DELAYED_LOADED-event is sent when the SDTF of the session has been delayed loaded.
*/
EVENTTYPE_SESSION["SESSION_SDTF_DELAYED_LOADED"] = "session.sdtfDelayedLoaded";
})(EVENTTYPE_SESSION = exports.EVENTTYPE_SESSION || (exports.EVENTTYPE_SESSION = {}));
/**
* Event types for all parameter events
* The parameter events are used to notify about parameter changes, like value changes or session value changes.
* The events that are sent with the parameter events are of type {@link IParameterEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_PARAMETER;
(function (EVENTTYPE_PARAMETER) {
/**
* The PARAMETER_VALUE_CHANGED-event is sent when the value of a parameter has changed.
*/
EVENTTYPE_PARAMETER["PARAMETER_VALUE_CHANGED"] = "parameter.valueChanged";
/**
* The PARAMETER_SESSION_VALUE_CHANGED-event is sent when the session value of a parameter has changed.
*/
EVENTTYPE_PARAMETER["PARAMETER_SESSION_VALUE_CHANGED"] = "parameter.sessionValueChanged";
})(EVENTTYPE_PARAMETER = exports.EVENTTYPE_PARAMETER || (exports.EVENTTYPE_PARAMETER = {}));
/**
* Event types for all output events
* The output events are used to notify about output changes, like updated outputs.
* The events that are sent with the output events are of type {@link IOutputEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_OUTPUT;
(function (EVENTTYPE_OUTPUT) {
/**
* The OUTPUT_UPDATED-event is sent when an output has been updated.
*/
EVENTTYPE_OUTPUT["OUTPUT_UPDATED"] = "output.updated";
})(EVENTTYPE_OUTPUT = exports.EVENTTYPE_OUTPUT || (exports.EVENTTYPE_OUTPUT = {}));
/**
* Event types for all task events
* The task events are used to notify about task changes, like start, process, end or cancel of a task.
* The events that are sent with the task events are of type {@link ITaskEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_TASK;
(function (EVENTTYPE_TASK) {
/**
* The TASK_START-event is sent when a task has started.
*/
EVENTTYPE_TASK["TASK_START"] = "task.start";
/**
* The TASK_PROCESS-event is sent when the process of a task has been updated.
*/
EVENTTYPE_TASK["TASK_PROCESS"] = "task.process";
/**
* The TASK_END-event is sent when a task has ended.
*/
EVENTTYPE_TASK["TASK_END"] = "task.end";
/**
* The TASK_CANCEL-event is sent when a task has been canceled.
*/
EVENTTYPE_TASK["TASK_CANCEL"] = "task.cancel";
})(EVENTTYPE_TASK = exports.EVENTTYPE_TASK || (exports.EVENTTYPE_TASK = {}));
/**
* Event types for all interaction events
* The interaction events are used to notify about interaction changes, like drag start, move and end, hover on and off, select on and off.
* The events that are sent with the interaction events are of type {@link IInteractionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_INTERACTION;
(function (EVENTTYPE_INTERACTION) {
/**
* The DRAG_START-event is sent when the dragging of an object has started.
*/
EVENTTYPE_INTERACTION["DRAG_START"] = "interaction.drag.start";
/**
* The DRAG_MOVE-event is sent when an object is being dragged.
*/
EVENTTYPE_INTERACTION["DRAG_MOVE"] = "interaction.drag.move";
/**
* The DRAG_END-event is sent when the dragging of an object has ended.
*/
EVENTTYPE_INTERACTION["DRAG_END"] = "interaction.drag.end";
/**
* The HOVER_ON-event is sent when an object has been hovered.
*/
EVENTTYPE_INTERACTION["HOVER_ON"] = "interaction.hover.on";
/**
* The HOVER_OFF-event is sent when an object has been unhovered.
*/
EVENTTYPE_INTERACTION["HOVER_OFF"] = "interaction.hover.off";
/**
* The SELECT_ON-event is sent when an object has been selected.
*/
EVENTTYPE_INTERACTION["SELECT_ON"] = "interaction.select.on";
/**
* The SELECT_OFF-event is sent when an object has been deselected.
*/
EVENTTYPE_INTERACTION["SELECT_OFF"] = "interaction.select.off";
})(EVENTTYPE_INTERACTION = exports.EVENTTYPE_INTERACTION || (exports.EVENTTYPE_INTERACTION = {}));
/**
* Event types for all drawing tools events
* The drawing tools events are used to notify about drawing tools changes, like cancel, finish, update, inserted, removed, drag start, move and end.
* The events that are sent with the drawing tools events are of type {@link IDrawingToolsEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
var EVENTTYPE_DRAWING_TOOLS;
(function (EVENTTYPE_DRAWING_TOOLS) {
/**
* The CANCEL-event is sent when the drawing process has been canceled.
*/
EVENTTYPE_DRAWING_TOOLS["CANCEL"] = "drawing_tools.cancel";
/**
* The FINISH-event is sent when the drawing process has been finished.
*/
EVENTTYPE_DRAWING_TOOLS["FINISH"] = "drawing_tools.finish";
/**
* The UPDATE-event is sent when the drawing process has been updated.
*/
EVENTTYPE_DRAWING_TOOLS["UPDATE"] = "drawing_tools.update";
/**
* The INSERTED-event is sent when a point has been inserted.
*/
EVENTTYPE_DRAWING_TOOLS["INSERTED"] = "drawing_tools.inserted";
/**
* The REMOVED-event is sent when a point has been removed.
*/
EVENTTYPE_DRAWING_TOOLS["REMOVED"] = "drawing_tools.removed";
/**
* The DRAG_START-event is sent when the dragging of a point has started.
*/
EVENTTYPE_DRAWING_TOOLS["DRAG_START"] = "drawing_tools.drag.start";
/**
* The DRAG_MOVE-event is sent when a point is being dragged.
*/
EVENTTYPE_DRAWING_TOOLS["DRAG_MOVE"] = "drawing_tools.drag.move";
/**
* The DRAG_END-event is sent when the dragging of a point has ended.
*/
EVENTTYPE_DRAWING_TOOLS["DRAG_END"] = "drawing_tools.drag.end";
})(EVENTTYPE_DRAWING_TOOLS = exports.EVENTTYPE_DRAWING_TOOLS || (exports.EVENTTYPE_DRAWING_TOOLS = {}));
/**
* Definition of the event types.
* These types are used to identify the type of an event in an event object {@link IEvent}.
* The {@link EventResponseMapping} is used to map the event type to the corresponding event interface.
*/
exports.EVENTTYPE = {

@@ -72,6 +261,8 @@ CAMERA: EVENTTYPE_CAMERA,

SESSION: EVENTTYPE_SESSION,
PARAMETER: EVENTTYPE_PARAMETER,
VIEWPORT: EVENTTYPE_VIEWPORT,
INTERACTION: EVENTTYPE_INTERACTION,
TASK: EVENTTYPE_TASK
TASK: EVENTTYPE_TASK,
DRAWING_TOOLS: EVENTTYPE_DRAWING_TOOLS
};
//# sourceMappingURL=EventTypes.js.map

@@ -59,3 +59,3 @@ import { AxiosRequestConfig } from 'axios';

loadTexture(href: string): Promise<HttpResponse<{
image: HTMLImageElement;
buffer: ArrayBuffer;
blob: Blob;

@@ -62,0 +62,0 @@ }>>;

@@ -19,3 +19,3 @@ "use strict";

const ShapeDiverBackendErrors_1 = require("../logger/ShapeDiverBackendErrors");
const Converter_1 = require("../converter/Converter");
const base64_1 = require("../utilities/base64");
class HttpClient {

@@ -89,2 +89,5 @@ // #endregion Properties (7)

}
else {
throw e;
}
}

@@ -186,8 +189,8 @@ /**

const response = yield this.get(href, undefined, true);
const buffer = response.data;
const arrayBufferView = new Uint8Array(response.data);
const blob = new Blob([arrayBufferView], { type: response.headers['content-type'] });
const image = yield Converter_1.Converter.instance.responseToImage(response, blob);
return {
data: {
image,
buffer,
blob

@@ -293,3 +296,3 @@ },

const hrefAsKey = url.toString();
return window.btoa(hrefAsKey);
return (0, base64_1.btoaCustom)(hrefAsKey);
}

@@ -296,0 +299,0 @@ }

@@ -0,26 +1,29 @@

import { Converter } from './converter/Converter';
import { DomEventEngine } from './dom-event-engine/DomEventEngine';
import { EventEngine } from './event-engine/EventEngine';
import { EVENTTYPE, EVENTTYPE_CAMERA, EVENTTYPE_INTERACTION, EVENTTYPE_OUTPUT, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_TASK, EVENTTYPE_VIEWPORT, MainEventTypes } from './event-engine/EventTypes';
import { SettingsEngine } from './settings-engine/SettingsEngine';
import { StateEngine } from './state-engine/StateEngine';
import { SystemInfo } from './system-info/SystemInfo';
import { DomEventEngine } from './dom-event-engine/DomEventEngine';
import { EVENTTYPE, EVENTTYPE_CAMERA, EVENTTYPE_DRAWING_TOOLS, EVENTTYPE_INTERACTION, EVENTTYPE_OUTPUT, EVENTTYPE_PARAMETER, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_TASK, EVENTTYPE_VIEWPORT, MainEventTypes } from './event-engine/EventTypes';
import { HttpClient } from './http-client/HttpClient';
import { HttpResponse } from './http-client/HttpResponse';
import { IDomEventListener } from './dom-event-engine/IDomEventListener';
import { IEvent } from './event-engine/interfaces/IEvent';
import { Converter } from './converter/Converter';
import { HttpClient } from './http-client/HttpClient';
import { InputValidator } from './input-validator/InputValidator';
import { isARError, isViewerCameraError, isViewerDataProcessingError, isViewerDrawingToolsError, isViewerEnvironmentMapError, isViewerError, isViewerGeometryBackendError, isViewerGeometryBackendGenericError, isViewerGeometryBackendRequestError, isViewerGeometryBackendResponseError, isViewerInteractionError, isViewerLightError, isViewerSessionError, isViewerSettingsError, isViewerUnknownError, isViewerValidationError, isViewerViewportError, isViewerWebGLError } from './logger/ErrorTypeGuards';
import { ISessionGlobalAccessObjectDefinition } from './state-engine/ISessionGlobalAccessObjectDefinition';
import { IViewportGlobalAccessObjectDefinition } from './state-engine/IViewportGlobalAccessObjectDefinition';
import { Logger, LOGGING_LEVEL } from './logger/Logger';
import { PerformanceEvaluator } from './performance-evaluator/PerformanceEvaluator';
import { SESSION_SETTINGS_MODE, SettingsEngine } from './settings-engine/SettingsEngine';
import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from './logger/ShapeDiverBackendErrors';
import { ShapeDiverResponseErrorType as ShapeDiverGeometryBackendResponseErrorType } from '@shapediver/sdk.geometry-api-sdk-v2';
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerDrawingToolsError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from './logger/ShapeDiverViewerErrors';
import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from './logger/ShapeDiverError';
import { StateEngine } from './state-engine/StateEngine';
import { StatePromise } from './state-engine/StatePromise';
import { SystemInfo } from './system-info/SystemInfo';
import { TypeChecker } from './type-check/TypeChecker';
import { UuidGenerator } from './uuid-generator/UuidGenerator';
import { PerformanceEvaluator } from './performance-evaluator/PerformanceEvaluator';
import { Logger, LOGGING_LEVEL } from './logger/Logger';
import { StatePromise } from './state-engine/StatePromise';
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerWebGLError, ShapeDiverViewerInteractionError, ShapeDiverViewerViewportError } from './logger/ShapeDiverViewerErrors';
import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from './logger/ShapeDiverError';
import { HttpResponse } from './http-client/HttpResponse';
import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from './logger/ShapeDiverBackendErrors';
import { ShapeDiverResponseErrorType as ShapeDiverGeometryBackendResponseErrorType } from "@shapediver/sdk.geometry-api-sdk-v2";
import { isViewerError, isViewerUnknownError, isViewerDataProcessingError, isViewerEnvironmentMapError, isViewerWebGLError, isViewerSettingsError, isViewerSessionError, isViewerViewportError, isViewerLightError, isViewerCameraError, isARError, isViewerValidationError, isViewerInteractionError, isViewerGeometryBackendError, isViewerGeometryBackendGenericError, isViewerGeometryBackendRequestError, isViewerGeometryBackendResponseError } from './logger/ErrorTypeGuards';
export { EventEngine, EVENTTYPE, MainEventTypes, IEvent, EVENTTYPE_CAMERA, EVENTTYPE_OUTPUT, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_VIEWPORT, EVENTTYPE_INTERACTION, EVENTTYPE_TASK };
export { SettingsEngine };
export { StateEngine, StatePromise };
import { atobCustom, btoaCustom } from './utilities/base64';
export { EventEngine, EVENTTYPE, MainEventTypes, IEvent, EVENTTYPE_CAMERA, EVENTTYPE_OUTPUT, EVENTTYPE_PARAMETER, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_VIEWPORT, EVENTTYPE_INTERACTION, EVENTTYPE_DRAWING_TOOLS, EVENTTYPE_TASK };
export { SettingsEngine, SESSION_SETTINGS_MODE };
export { StateEngine, StatePromise, IViewportGlobalAccessObjectDefinition, ISessionGlobalAccessObjectDefinition };
export { SystemInfo };

@@ -33,5 +36,6 @@ export { IDomEventListener, DomEventEngine };

export { InputValidator };
export { Logger, LOGGING_LEVEL, ShapeDiverViewerErrorType, ShapeDiverViewerError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerWebGLError, ShapeDiverViewerSettingsError, ShapeDiverViewerSessionError, ShapeDiverViewerViewportError, ShapeDiverViewerUnknownError, ShapeDiverViewerArError, ShapeDiverViewerLightError, ShapeDiverViewerCameraError, ShapeDiverViewerValidationError, ShapeDiverViewerInteractionError, ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError, ShapeDiverGeometryBackendResponseErrorType };
export { isViewerError, isViewerUnknownError, isViewerDataProcessingError, isViewerEnvironmentMapError, isViewerWebGLError, isViewerSettingsError, isViewerSessionError, isViewerViewportError, isViewerLightError, isViewerCameraError, isARError, isViewerValidationError, isViewerInteractionError, isViewerGeometryBackendError, isViewerGeometryBackendGenericError, isViewerGeometryBackendRequestError, isViewerGeometryBackendResponseError };
export { Logger, LOGGING_LEVEL, ShapeDiverViewerErrorType, ShapeDiverViewerError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerWebGLError, ShapeDiverViewerSettingsError, ShapeDiverViewerSessionError, ShapeDiverViewerViewportError, ShapeDiverViewerUnknownError, ShapeDiverViewerArError, ShapeDiverViewerLightError, ShapeDiverViewerCameraError, ShapeDiverViewerValidationError, ShapeDiverViewerInteractionError, ShapeDiverViewerDrawingToolsError, ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError, ShapeDiverGeometryBackendResponseErrorType };
export { isViewerError, isViewerUnknownError, isViewerDataProcessingError, isViewerEnvironmentMapError, isViewerWebGLError, isViewerSettingsError, isViewerSessionError, isViewerViewportError, isViewerLightError, isViewerCameraError, isARError, isViewerValidationError, isViewerInteractionError, isViewerDrawingToolsError, isViewerGeometryBackendError, isViewerGeometryBackendGenericError, isViewerGeometryBackendRequestError, isViewerGeometryBackendResponseError };
export { PerformanceEvaluator };
export { atobCustom, btoaCustom };
//# sourceMappingURL=index.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isViewerCameraError = exports.isViewerLightError = exports.isViewerViewportError = exports.isViewerSessionError = exports.isViewerSettingsError = exports.isViewerWebGLError = exports.isViewerEnvironmentMapError = exports.isViewerDataProcessingError = exports.isViewerUnknownError = exports.isViewerError = exports.ShapeDiverGeometryBackendResponseErrorType = exports.ShapeDiverGeometryBackendResponseError = exports.ShapeDiverGeometryBackendRequestError = exports.ShapeDiverGeometryBackendError = exports.ShapeDiverViewerInteractionError = exports.ShapeDiverViewerValidationError = exports.ShapeDiverViewerCameraError = exports.ShapeDiverViewerLightError = exports.ShapeDiverViewerArError = exports.ShapeDiverViewerUnknownError = exports.ShapeDiverViewerViewportError = exports.ShapeDiverViewerSessionError = exports.ShapeDiverViewerSettingsError = exports.ShapeDiverViewerWebGLError = exports.ShapeDiverViewerEnvironmentMapError = exports.ShapeDiverViewerDataProcessingError = exports.ShapeDiverViewerError = exports.ShapeDiverViewerErrorType = exports.LOGGING_LEVEL = exports.Logger = exports.InputValidator = exports.TypeChecker = exports.Converter = exports.UuidGenerator = exports.HttpClient = exports.DomEventEngine = exports.SystemInfo = exports.StatePromise = exports.StateEngine = exports.SettingsEngine = exports.EVENTTYPE_TASK = exports.EVENTTYPE_INTERACTION = exports.EVENTTYPE_VIEWPORT = exports.EVENTTYPE_SESSION = exports.EVENTTYPE_SCENE = exports.EVENTTYPE_RENDERING = exports.EVENTTYPE_OUTPUT = exports.EVENTTYPE_CAMERA = exports.EVENTTYPE = exports.EventEngine = void 0;
exports.PerformanceEvaluator = exports.isViewerGeometryBackendResponseError = exports.isViewerGeometryBackendRequestError = exports.isViewerGeometryBackendGenericError = exports.isViewerGeometryBackendError = exports.isViewerInteractionError = exports.isViewerValidationError = exports.isARError = void 0;
exports.isViewerSettingsError = exports.isViewerWebGLError = exports.isViewerEnvironmentMapError = exports.isViewerDataProcessingError = exports.isViewerUnknownError = exports.isViewerError = exports.ShapeDiverGeometryBackendResponseErrorType = exports.ShapeDiverGeometryBackendResponseError = exports.ShapeDiverGeometryBackendRequestError = exports.ShapeDiverGeometryBackendError = exports.ShapeDiverViewerDrawingToolsError = exports.ShapeDiverViewerInteractionError = exports.ShapeDiverViewerValidationError = exports.ShapeDiverViewerCameraError = exports.ShapeDiverViewerLightError = exports.ShapeDiverViewerArError = exports.ShapeDiverViewerUnknownError = exports.ShapeDiverViewerViewportError = exports.ShapeDiverViewerSessionError = exports.ShapeDiverViewerSettingsError = exports.ShapeDiverViewerWebGLError = exports.ShapeDiverViewerEnvironmentMapError = exports.ShapeDiverViewerDataProcessingError = exports.ShapeDiverViewerError = exports.ShapeDiverViewerErrorType = exports.LOGGING_LEVEL = exports.Logger = exports.InputValidator = exports.TypeChecker = exports.Converter = exports.UuidGenerator = exports.HttpClient = exports.DomEventEngine = exports.SystemInfo = exports.StatePromise = exports.StateEngine = exports.SESSION_SETTINGS_MODE = exports.SettingsEngine = exports.EVENTTYPE_TASK = exports.EVENTTYPE_DRAWING_TOOLS = exports.EVENTTYPE_INTERACTION = exports.EVENTTYPE_VIEWPORT = exports.EVENTTYPE_SESSION = exports.EVENTTYPE_SCENE = exports.EVENTTYPE_RENDERING = exports.EVENTTYPE_PARAMETER = exports.EVENTTYPE_OUTPUT = exports.EVENTTYPE_CAMERA = exports.EVENTTYPE = exports.EventEngine = void 0;
exports.btoaCustom = exports.atobCustom = exports.PerformanceEvaluator = exports.isViewerGeometryBackendResponseError = exports.isViewerGeometryBackendRequestError = exports.isViewerGeometryBackendGenericError = exports.isViewerGeometryBackendError = exports.isViewerDrawingToolsError = exports.isViewerInteractionError = exports.isViewerValidationError = exports.isARError = exports.isViewerCameraError = exports.isViewerLightError = exports.isViewerViewportError = exports.isViewerSessionError = void 0;
const Converter_1 = require("./converter/Converter");
Object.defineProperty(exports, "Converter", { enumerable: true, get: function () { return Converter_1.Converter; } });
const DomEventEngine_1 = require("./dom-event-engine/DomEventEngine");
Object.defineProperty(exports, "DomEventEngine", { enumerable: true, get: function () { return DomEventEngine_1.DomEventEngine; } });
const EventEngine_1 = require("./event-engine/EventEngine");

@@ -10,4 +14,6 @@ Object.defineProperty(exports, "EventEngine", { enumerable: true, get: function () { return EventEngine_1.EventEngine; } });

Object.defineProperty(exports, "EVENTTYPE_CAMERA", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_CAMERA; } });
Object.defineProperty(exports, "EVENTTYPE_DRAWING_TOOLS", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_DRAWING_TOOLS; } });
Object.defineProperty(exports, "EVENTTYPE_INTERACTION", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_INTERACTION; } });
Object.defineProperty(exports, "EVENTTYPE_OUTPUT", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_OUTPUT; } });
Object.defineProperty(exports, "EVENTTYPE_PARAMETER", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_PARAMETER; } });
Object.defineProperty(exports, "EVENTTYPE_RENDERING", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_RENDERING; } });

@@ -18,12 +24,2 @@ Object.defineProperty(exports, "EVENTTYPE_SCENE", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_SCENE; } });

Object.defineProperty(exports, "EVENTTYPE_VIEWPORT", { enumerable: true, get: function () { return EventTypes_1.EVENTTYPE_VIEWPORT; } });
const SettingsEngine_1 = require("./settings-engine/SettingsEngine");
Object.defineProperty(exports, "SettingsEngine", { enumerable: true, get: function () { return SettingsEngine_1.SettingsEngine; } });
const StateEngine_1 = require("./state-engine/StateEngine");
Object.defineProperty(exports, "StateEngine", { enumerable: true, get: function () { return StateEngine_1.StateEngine; } });
const SystemInfo_1 = require("./system-info/SystemInfo");
Object.defineProperty(exports, "SystemInfo", { enumerable: true, get: function () { return SystemInfo_1.SystemInfo; } });
const DomEventEngine_1 = require("./dom-event-engine/DomEventEngine");
Object.defineProperty(exports, "DomEventEngine", { enumerable: true, get: function () { return DomEventEngine_1.DomEventEngine; } });
const Converter_1 = require("./converter/Converter");
Object.defineProperty(exports, "Converter", { enumerable: true, get: function () { return Converter_1.Converter; } });
const HttpClient_1 = require("./http-client/HttpClient");

@@ -33,13 +29,35 @@ Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return HttpClient_1.HttpClient; } });

Object.defineProperty(exports, "InputValidator", { enumerable: true, get: function () { return InputValidator_1.InputValidator; } });
const TypeChecker_1 = require("./type-check/TypeChecker");
Object.defineProperty(exports, "TypeChecker", { enumerable: true, get: function () { return TypeChecker_1.TypeChecker; } });
const UuidGenerator_1 = require("./uuid-generator/UuidGenerator");
Object.defineProperty(exports, "UuidGenerator", { enumerable: true, get: function () { return UuidGenerator_1.UuidGenerator; } });
const PerformanceEvaluator_1 = require("./performance-evaluator/PerformanceEvaluator");
Object.defineProperty(exports, "PerformanceEvaluator", { enumerable: true, get: function () { return PerformanceEvaluator_1.PerformanceEvaluator; } });
const ErrorTypeGuards_1 = require("./logger/ErrorTypeGuards");
Object.defineProperty(exports, "isARError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isARError; } });
Object.defineProperty(exports, "isViewerCameraError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerCameraError; } });
Object.defineProperty(exports, "isViewerDataProcessingError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerDataProcessingError; } });
Object.defineProperty(exports, "isViewerDrawingToolsError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerDrawingToolsError; } });
Object.defineProperty(exports, "isViewerEnvironmentMapError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerEnvironmentMapError; } });
Object.defineProperty(exports, "isViewerError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerError; } });
Object.defineProperty(exports, "isViewerGeometryBackendError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendError; } });
Object.defineProperty(exports, "isViewerGeometryBackendGenericError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendGenericError; } });
Object.defineProperty(exports, "isViewerGeometryBackendRequestError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendRequestError; } });
Object.defineProperty(exports, "isViewerGeometryBackendResponseError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendResponseError; } });
Object.defineProperty(exports, "isViewerInteractionError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerInteractionError; } });
Object.defineProperty(exports, "isViewerLightError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerLightError; } });
Object.defineProperty(exports, "isViewerSessionError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerSessionError; } });
Object.defineProperty(exports, "isViewerSettingsError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerSettingsError; } });
Object.defineProperty(exports, "isViewerUnknownError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerUnknownError; } });
Object.defineProperty(exports, "isViewerValidationError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerValidationError; } });
Object.defineProperty(exports, "isViewerViewportError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerViewportError; } });
Object.defineProperty(exports, "isViewerWebGLError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerWebGLError; } });
const Logger_1 = require("./logger/Logger");
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_1.Logger; } });
Object.defineProperty(exports, "LOGGING_LEVEL", { enumerable: true, get: function () { return Logger_1.LOGGING_LEVEL; } });
const StatePromise_1 = require("./state-engine/StatePromise");
Object.defineProperty(exports, "StatePromise", { enumerable: true, get: function () { return StatePromise_1.StatePromise; } });
const PerformanceEvaluator_1 = require("./performance-evaluator/PerformanceEvaluator");
Object.defineProperty(exports, "PerformanceEvaluator", { enumerable: true, get: function () { return PerformanceEvaluator_1.PerformanceEvaluator; } });
const SettingsEngine_1 = require("./settings-engine/SettingsEngine");
Object.defineProperty(exports, "SESSION_SETTINGS_MODE", { enumerable: true, get: function () { return SettingsEngine_1.SESSION_SETTINGS_MODE; } });
Object.defineProperty(exports, "SettingsEngine", { enumerable: true, get: function () { return SettingsEngine_1.SettingsEngine; } });
const ShapeDiverBackendErrors_1 = require("./logger/ShapeDiverBackendErrors");
Object.defineProperty(exports, "ShapeDiverGeometryBackendError", { enumerable: true, get: function () { return ShapeDiverBackendErrors_1.ShapeDiverGeometryBackendError; } });
Object.defineProperty(exports, "ShapeDiverGeometryBackendRequestError", { enumerable: true, get: function () { return ShapeDiverBackendErrors_1.ShapeDiverGeometryBackendRequestError; } });
Object.defineProperty(exports, "ShapeDiverGeometryBackendResponseError", { enumerable: true, get: function () { return ShapeDiverBackendErrors_1.ShapeDiverGeometryBackendResponseError; } });
const sdk_geometry_api_sdk_v2_1 = require("@shapediver/sdk.geometry-api-sdk-v2");
Object.defineProperty(exports, "ShapeDiverGeometryBackendResponseErrorType", { enumerable: true, get: function () { return sdk_geometry_api_sdk_v2_1.ShapeDiverResponseErrorType; } });
const ShapeDiverViewerErrors_1 = require("./logger/ShapeDiverViewerErrors");

@@ -49,3 +67,5 @@ Object.defineProperty(exports, "ShapeDiverViewerArError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerArError; } });

Object.defineProperty(exports, "ShapeDiverViewerDataProcessingError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerDataProcessingError; } });
Object.defineProperty(exports, "ShapeDiverViewerDrawingToolsError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerDrawingToolsError; } });
Object.defineProperty(exports, "ShapeDiverViewerEnvironmentMapError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerEnvironmentMapError; } });
Object.defineProperty(exports, "ShapeDiverViewerInteractionError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerInteractionError; } });
Object.defineProperty(exports, "ShapeDiverViewerLightError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerLightError; } });

@@ -56,32 +76,20 @@ Object.defineProperty(exports, "ShapeDiverViewerSessionError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerSessionError; } });

Object.defineProperty(exports, "ShapeDiverViewerValidationError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerValidationError; } });
Object.defineProperty(exports, "ShapeDiverViewerViewportError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerViewportError; } });
Object.defineProperty(exports, "ShapeDiverViewerWebGLError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerWebGLError; } });
Object.defineProperty(exports, "ShapeDiverViewerInteractionError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerInteractionError; } });
Object.defineProperty(exports, "ShapeDiverViewerViewportError", { enumerable: true, get: function () { return ShapeDiverViewerErrors_1.ShapeDiverViewerViewportError; } });
const ShapeDiverError_1 = require("./logger/ShapeDiverError");
Object.defineProperty(exports, "ShapeDiverViewerError", { enumerable: true, get: function () { return ShapeDiverError_1.ShapeDiverViewerError; } });
Object.defineProperty(exports, "ShapeDiverViewerErrorType", { enumerable: true, get: function () { return ShapeDiverError_1.ShapeDiverViewerErrorType; } });
const ShapeDiverBackendErrors_1 = require("./logger/ShapeDiverBackendErrors");
Object.defineProperty(exports, "ShapeDiverGeometryBackendError", { enumerable: true, get: function () { return ShapeDiverBackendErrors_1.ShapeDiverGeometryBackendError; } });
Object.defineProperty(exports, "ShapeDiverGeometryBackendRequestError", { enumerable: true, get: function () { return ShapeDiverBackendErrors_1.ShapeDiverGeometryBackendRequestError; } });
Object.defineProperty(exports, "ShapeDiverGeometryBackendResponseError", { enumerable: true, get: function () { return ShapeDiverBackendErrors_1.ShapeDiverGeometryBackendResponseError; } });
const sdk_geometry_api_sdk_v2_1 = require("@shapediver/sdk.geometry-api-sdk-v2");
Object.defineProperty(exports, "ShapeDiverGeometryBackendResponseErrorType", { enumerable: true, get: function () { return sdk_geometry_api_sdk_v2_1.ShapeDiverResponseErrorType; } });
const ErrorTypeGuards_1 = require("./logger/ErrorTypeGuards");
Object.defineProperty(exports, "isViewerError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerError; } });
Object.defineProperty(exports, "isViewerUnknownError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerUnknownError; } });
Object.defineProperty(exports, "isViewerDataProcessingError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerDataProcessingError; } });
Object.defineProperty(exports, "isViewerEnvironmentMapError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerEnvironmentMapError; } });
Object.defineProperty(exports, "isViewerWebGLError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerWebGLError; } });
Object.defineProperty(exports, "isViewerSettingsError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerSettingsError; } });
Object.defineProperty(exports, "isViewerSessionError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerSessionError; } });
Object.defineProperty(exports, "isViewerViewportError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerViewportError; } });
Object.defineProperty(exports, "isViewerLightError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerLightError; } });
Object.defineProperty(exports, "isViewerCameraError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerCameraError; } });
Object.defineProperty(exports, "isARError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isARError; } });
Object.defineProperty(exports, "isViewerValidationError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerValidationError; } });
Object.defineProperty(exports, "isViewerInteractionError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerInteractionError; } });
Object.defineProperty(exports, "isViewerGeometryBackendError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendError; } });
Object.defineProperty(exports, "isViewerGeometryBackendGenericError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendGenericError; } });
Object.defineProperty(exports, "isViewerGeometryBackendRequestError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendRequestError; } });
Object.defineProperty(exports, "isViewerGeometryBackendResponseError", { enumerable: true, get: function () { return ErrorTypeGuards_1.isViewerGeometryBackendResponseError; } });
const StateEngine_1 = require("./state-engine/StateEngine");
Object.defineProperty(exports, "StateEngine", { enumerable: true, get: function () { return StateEngine_1.StateEngine; } });
const StatePromise_1 = require("./state-engine/StatePromise");
Object.defineProperty(exports, "StatePromise", { enumerable: true, get: function () { return StatePromise_1.StatePromise; } });
const SystemInfo_1 = require("./system-info/SystemInfo");
Object.defineProperty(exports, "SystemInfo", { enumerable: true, get: function () { return SystemInfo_1.SystemInfo; } });
const TypeChecker_1 = require("./type-check/TypeChecker");
Object.defineProperty(exports, "TypeChecker", { enumerable: true, get: function () { return TypeChecker_1.TypeChecker; } });
const UuidGenerator_1 = require("./uuid-generator/UuidGenerator");
Object.defineProperty(exports, "UuidGenerator", { enumerable: true, get: function () { return UuidGenerator_1.UuidGenerator; } });
const base64_1 = require("./utilities/base64");
Object.defineProperty(exports, "atobCustom", { enumerable: true, get: function () { return base64_1.atobCustom; } });
Object.defineProperty(exports, "btoaCustom", { enumerable: true, get: function () { return base64_1.btoaCustom; } });
//# sourceMappingURL=index.js.map
import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from "./ShapeDiverBackendErrors";
import { ShapeDiverViewerError } from "./ShapeDiverError";
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from "./ShapeDiverViewerErrors";
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerDrawingToolsError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from "./ShapeDiverViewerErrors";
/** Type guard for all error types of the viewer package. */

@@ -30,2 +30,4 @@ export declare function isViewerError(e: any): e is ShapeDiverViewerError;

export declare function isViewerInteractionError(e: any): e is ShapeDiverViewerInteractionError;
/** Type guard for a drawing tools viewer error. */
export declare function isViewerDrawingToolsError(e: any): e is ShapeDiverViewerDrawingToolsError;
/** Type guard for all error types of the Geometry Backend SDK package that are mapped to viewer errors. */

@@ -32,0 +34,0 @@ export declare function isViewerGeometryBackendError(e: any): e is (ShapeDiverGeometryBackendError & ShapeDiverGeometryBackendRequestError & ShapeDiverGeometryBackendResponseError);

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isViewerGeometryBackendResponseError = exports.isViewerGeometryBackendRequestError = exports.isViewerGeometryBackendGenericError = exports.isViewerGeometryBackendError = exports.isViewerInteractionError = exports.isViewerValidationError = exports.isARError = exports.isViewerCameraError = exports.isViewerLightError = exports.isViewerViewportError = exports.isViewerSessionError = exports.isViewerSettingsError = exports.isViewerWebGLError = exports.isViewerEnvironmentMapError = exports.isViewerDataProcessingError = exports.isViewerUnknownError = exports.isViewerError = void 0;
exports.isViewerGeometryBackendResponseError = exports.isViewerGeometryBackendRequestError = exports.isViewerGeometryBackendGenericError = exports.isViewerGeometryBackendError = exports.isViewerDrawingToolsError = exports.isViewerInteractionError = exports.isViewerValidationError = exports.isARError = exports.isViewerCameraError = exports.isViewerLightError = exports.isViewerViewportError = exports.isViewerSessionError = exports.isViewerSettingsError = exports.isViewerWebGLError = exports.isViewerEnvironmentMapError = exports.isViewerDataProcessingError = exports.isViewerUnknownError = exports.isViewerError = void 0;
const ShapeDiverError_1 = require("./ShapeDiverError");

@@ -96,2 +96,9 @@ /** Type guard for all error types of the viewer package. */

exports.isViewerInteractionError = isViewerInteractionError;
/** Type guard for a drawing tools viewer error. */
function isViewerDrawingToolsError(e) {
return e instanceof Error &&
"errorType" in e &&
e.errorType === ShapeDiverError_1.ShapeDiverViewerErrorType.DRAWING_TOOLS_ERROR;
}
exports.isViewerDrawingToolsError = isViewerDrawingToolsError;
/** Type guard for all error types of the Geometry Backend SDK package that are mapped to viewer errors. */

@@ -98,0 +105,0 @@ function isViewerGeometryBackendError(e) {

@@ -9,2 +9,3 @@ export declare enum ShapeDiverViewerErrorType {

DATA_PROCESSING_ERROR = "SdDataProcessingError",
DRAWING_TOOLS_ERROR = "SdDrawingToolsError",
ENVIRONMENT_MAP_ERROR = "SdEnvironmentMapError",

@@ -11,0 +12,0 @@ INTERACTION_ERROR = "SdInteractionError",

@@ -13,2 +13,3 @@ "use strict";

ShapeDiverViewerErrorType["DATA_PROCESSING_ERROR"] = "SdDataProcessingError";
ShapeDiverViewerErrorType["DRAWING_TOOLS_ERROR"] = "SdDrawingToolsError";
ShapeDiverViewerErrorType["ENVIRONMENT_MAP_ERROR"] = "SdEnvironmentMapError";

@@ -15,0 +16,0 @@ ShapeDiverViewerErrorType["INTERACTION_ERROR"] = "SdInteractionError";

@@ -64,2 +64,6 @@ import { ShapeDiverViewerError } from "./ShapeDiverError";

}
export declare class ShapeDiverViewerDrawingToolsError extends ShapeDiverViewerError {
readonly message: string;
constructor(message: string);
}
//# sourceMappingURL=ShapeDiverViewerErrors.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ShapeDiverViewerInteractionError = exports.ShapeDiverViewerValidationError = exports.ShapeDiverViewerArError = exports.ShapeDiverViewerCameraError = exports.ShapeDiverViewerLightError = exports.ShapeDiverViewerViewportError = exports.ShapeDiverViewerSessionError = exports.ShapeDiverViewerSettingsError = exports.ShapeDiverViewerWebGLError = exports.ShapeDiverViewerEnvironmentMapError = exports.ShapeDiverViewerDataProcessingError = exports.ShapeDiverViewerUnknownError = void 0;
exports.ShapeDiverViewerDrawingToolsError = exports.ShapeDiverViewerInteractionError = exports.ShapeDiverViewerValidationError = exports.ShapeDiverViewerArError = exports.ShapeDiverViewerCameraError = exports.ShapeDiverViewerLightError = exports.ShapeDiverViewerViewportError = exports.ShapeDiverViewerSessionError = exports.ShapeDiverViewerSettingsError = exports.ShapeDiverViewerWebGLError = exports.ShapeDiverViewerEnvironmentMapError = exports.ShapeDiverViewerDataProcessingError = exports.ShapeDiverViewerUnknownError = void 0;
const ShapeDiverError_1 = require("./ShapeDiverError");

@@ -105,2 +105,9 @@ class ShapeDiverViewerUnknownError extends ShapeDiverError_1.ShapeDiverViewerError {

exports.ShapeDiverViewerInteractionError = ShapeDiverViewerInteractionError;
class ShapeDiverViewerDrawingToolsError extends ShapeDiverError_1.ShapeDiverViewerError {
constructor(message) {
super(ShapeDiverError_1.ShapeDiverViewerErrorType.INTERACTION_ERROR, 'An error occurred with drawing tools.', message);
this.message = message;
}
}
exports.ShapeDiverViewerDrawingToolsError = ShapeDiverViewerDrawingToolsError;
//# sourceMappingURL=ShapeDiverViewerErrors.js.map
import { ISettings } from '@shapediver/viewer.settings';
declare type IARSettings = ISettings["ar"];
declare type ICameraSettings = ISettings["camera"];
declare type IEnvironmentSettings = ISettings["environment"];
declare type IEnvironmentGeometrySettings = ISettings["environmentGeometry"];
declare type IGeneralSettings = ISettings["general"];
declare type ILightSettings = ISettings["light"];
declare type IRenderingSettings = ISettings["rendering"];
declare type ISessionSettings = ISettings["session"];
declare type IARSettings = ISettings['ar'];
declare type ICameraSettings = ISettings['camera'];
declare type IEnvironmentGeometrySettings = ISettings['environmentGeometry'];
declare type IEnvironmentSettings = ISettings['environment'];
declare type IGeneralSettings = ISettings['general'];
declare type ILightSettings = ISettings['light'];
declare type IRenderingSettings = ISettings['rendering'];
declare type ISessionSettings = ISettings['session'];
export declare class SettingsEngine {
private readonly _eventEngine;
private readonly _logger;
private readonly _settings;
private _settings;
private _settingsJson;

@@ -25,11 +23,33 @@ get ar(): IARSettings;

get settings(): ISettings;
get settingsJson(): any;
flatten(): {
[key: string]: any;
};
loadSettings(json: any): void;
get settingsJson(): unknown;
loadSettings(json: unknown): void;
reset(): void;
private cleanSettings;
}
/**
* Session settings to be used by a viewport.
*
* The {@link https://help.shapediver.com/doc/Geometry-Backend.1863942173.html|ShapeDiver Geometry Backend}
* allows to persist settings of the viewer, individually for each model that it hosts. Persisting the settings
* of the viewer requires permissions which are typically only granted to the owner of the model. Editing
* of the settings typically happens on the model edit page of the ShapeDiver Platform.
*
* Whenever an instance of the viewer creates a session with a model, the settings are made available to the viewer.
* It is possible to use multiple sessions with different models from a single instance of the viewer.
* Therefore the viewer offers a choice on which settings to use.
*/
export declare enum SESSION_SETTINGS_MODE {
/** No settings of a session will be used for the viewport. */
NONE = "none",
/**
* The settings of the very first session created will be used for the viewport.
*/
FIRST = "first",
/**
* Use this mode in case you want to assign a specific session identifier
* to the viewport, whose settings will be used.
*/
MANUAL = "manual"
}
export {};
//# sourceMappingURL=SettingsEngine.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SettingsEngine = void 0;
exports.SESSION_SETTINGS_MODE = exports.SettingsEngine = void 0;
const viewer_settings_1 = require("@shapediver/viewer.settings");
const EventEngine_1 = require("../event-engine/EventEngine");
const Logger_1 = require("../logger/Logger");
const ShapeDiverViewerErrors_1 = require("../logger/ShapeDiverViewerErrors");
// #endregion Type aliases (8)
// #region Classes (1)
class SettingsEngine {
constructor() {
// #region Properties (8)
this._eventEngine = EventEngine_1.EventEngine.instance;
this._logger = Logger_1.Logger.instance;
// #region Properties (4)
this._settings = (0, viewer_settings_1.Defaults)();
// #endregion Private Methods (1)
}
// #endregion Properties (8)
// #region Public Accessors (10)
// #endregion Properties (4)
// #region Public Getters And Setters (11)
get ar() {

@@ -51,32 +49,9 @@ return this._settings.ar;

}
// #endregion Public Accessors (10)
// #region Public Methods (4)
flatten() {
const flattenObject = (ob) => {
const toReturn = {};
for (let i in ob) {
if (!ob.hasOwnProperty(i))
continue;
if ((typeof ob[i]) == 'object') {
const flatObject = flattenObject(ob[i]);
for (var x in flatObject) {
if (!flatObject.hasOwnProperty(x))
continue;
toReturn[i + '.' + x] = flatObject[x];
}
}
else {
toReturn[i] = ob[i];
}
}
return toReturn;
};
return flattenObject(this.settings);
}
// #endregion Public Getters And Setters (11)
// #region Public Methods (2)
loadSettings(json) {
this._settingsJson = json;
if (JSON.stringify(json) !== JSON.stringify({})) {
const prevVersions = ['1.0', '2.0', '3.0', '3.1', '3.2', '3.3', '3.4', '4.0'];
for (let i = 0; i < prevVersions.length; i++) {
const v = prevVersions[i];
for (let i = 0; i < viewer_settings_1.previousVersion.length; i++) {
const v = viewer_settings_1.previousVersion[i];
try {

@@ -88,3 +63,6 @@ (0, viewer_settings_1.validate)(json, v);

}
catch (e) { }
catch (e) {
// it's ok, we just try the next version
// only the latest version is expected to be valid
}
}

@@ -109,6 +87,6 @@ try {

}
// #endregion Public Methods (4)
// #endregion Public Methods (2)
// #region Private Methods (1)
cleanSettings(json) {
for (let c in json.camera.cameras) {
for (const c in json.camera.cameras) {
const camera = json.camera.cameras[c];

@@ -156,2 +134,31 @@ if (camera.type === 'perspective') {

exports.SettingsEngine = SettingsEngine;
// #endregion Classes (1)
// #region Enums (1)
/**
* Session settings to be used by a viewport.
*
* The {@link https://help.shapediver.com/doc/Geometry-Backend.1863942173.html|ShapeDiver Geometry Backend}
* allows to persist settings of the viewer, individually for each model that it hosts. Persisting the settings
* of the viewer requires permissions which are typically only granted to the owner of the model. Editing
* of the settings typically happens on the model edit page of the ShapeDiver Platform.
*
* Whenever an instance of the viewer creates a session with a model, the settings are made available to the viewer.
* It is possible to use multiple sessions with different models from a single instance of the viewer.
* Therefore the viewer offers a choice on which settings to use.
*/
var SESSION_SETTINGS_MODE;
(function (SESSION_SETTINGS_MODE) {
/** No settings of a session will be used for the viewport. */
SESSION_SETTINGS_MODE["NONE"] = "none";
/**
* The settings of the very first session created will be used for the viewport.
*/
SESSION_SETTINGS_MODE["FIRST"] = "first";
/**
* Use this mode in case you want to assign a specific session identifier
* to the viewport, whose settings will be used.
*/
SESSION_SETTINGS_MODE["MANUAL"] = "manual";
})(SESSION_SETTINGS_MODE = exports.SESSION_SETTINGS_MODE || (exports.SESSION_SETTINGS_MODE = {}));
// #endregion Enums (1)
//# sourceMappingURL=SettingsEngine.js.map

@@ -0,6 +1,8 @@

import { ISessionGlobalAccessObjectDefinition } from './ISessionGlobalAccessObjectDefinition';
import { IViewportGlobalAccessObjectDefinition } from './IViewportGlobalAccessObjectDefinition';
import { StatePromise } from './StatePromise';
export declare class StateEngine {
private readonly _fontLoaded;
private readonly _renderingEngines;
private readonly _sessionEngines;
private readonly _viewportEngines;
private static _instance;

@@ -10,22 +12,9 @@ private constructor();

get fontLoaded(): StatePromise<boolean>;
get renderingEngines(): {
[key: string]: {
id: string;
initialized: StatePromise<boolean>;
settingsAssigned: StatePromise<boolean>;
environmentMapLoaded: StatePromise<boolean>;
boundingBoxCreated: StatePromise<boolean>;
busy: string[];
update: (id: string) => void;
};
};
get sessionEngines(): {
[key: string]: {
id: string;
initialized: StatePromise<boolean>;
initialOutputsLoaded: StatePromise<boolean>;
settingsRegistered: StatePromise<boolean>;
};
[key: string]: ISessionGlobalAccessObjectDefinition;
};
get viewportEngines(): {
[key: string]: IViewportGlobalAccessObjectDefinition;
};
}
//# sourceMappingURL=StateEngine.d.ts.map

@@ -6,29 +6,29 @@ "use strict";

class StateEngine {
// #endregion Properties (6)
// #endregion Properties (4)
// #region Constructors (1)
constructor() {
// #region Properties (6)
// #region Properties (4)
this._fontLoaded = new StatePromise_1.StatePromise();
this._renderingEngines = {};
this._sessionEngines = {};
this._viewportEngines = {};
this._fontLoaded = new StatePromise_1.StatePromise();
}
// #endregion Constructors (1)
// #region Public Static Accessors (1)
// #region Public Static Getters And Setters (1)
static get instance() {
return this._instance || (this._instance = new this());
}
// #endregion Public Static Accessors (1)
// #region Public Accessors (3)
// #endregion Public Static Getters And Setters (1)
// #region Public Getters And Setters (3)
get fontLoaded() {
return this._fontLoaded;
}
get renderingEngines() {
return this._renderingEngines;
}
get sessionEngines() {
return this._sessionEngines;
}
get viewportEngines() {
return this._viewportEngines;
}
}
exports.StateEngine = StateEngine;
//# sourceMappingURL=StateEngine.js.map

@@ -77,3 +77,3 @@ "use strict";

return osName === 'iOS' ||
(window.navigator && window.navigator.maxTouchPoints === 5 && window.navigator.platform === 'MacIntel');
(typeof window !== undefined && window.navigator && window.navigator.maxTouchPoints === 5 && window.navigator.platform === 'MacIntel');
}

@@ -80,0 +80,0 @@ /**

{
"name": "@shapediver/viewer.shared.services",
"version": "2.12.8",
"version": "3.0.0",
"description": "",

@@ -44,4 +44,4 @@ "keywords": [],

"@shapediver/sdk.geometry-api-sdk-v2": "1.8.2",
"@shapediver/viewer.settings": "0.5.7",
"@shapediver/viewer.shared.build-data": "2.12.8",
"@shapediver/viewer.settings": "1.0.1",
"@shapediver/viewer.shared.build-data": "3.0.0",
"@types/dompurify": "^2.3.1",

@@ -56,3 +56,3 @@ "@types/ua-parser-js": "^0.7.36",

},
"gitHead": "615c459595cdea9ceeca8a307d469c617ce36684"
"gitHead": "b6b0010bf5d5652aa338df8016405d97f33fcabb"
}

@@ -1,5 +0,6 @@

import { vec3 } from 'gl-matrix';
import { ColorInput, TinyColor } from '@ctrl/tinycolor';
import { HttpClient } from '../http-client/HttpClient';
import { HttpResponse } from '../http-client/HttpResponse';
import { vec3 } from 'gl-matrix';
import { atobCustom, btoaCustom } from '../utilities/base64';

@@ -15,3 +16,3 @@ export class Converter {

// #region Public Static Accessors (1)
// #region Public Static Getters And Setters (1)

@@ -22,3 +23,3 @@ public static get instance() {

// #endregion Public Static Accessors (1)
// #endregion Public Static Getters And Setters (1)

@@ -35,3 +36,3 @@ // #region Public Methods (8)

data = data.replace('data:image/svg+xml;base64,', '');
data = atob(data);
data = atobCustom(data);

@@ -87,3 +88,3 @@ const svgC = document.createElement('DIV');

const base64Data = window.btoa(biStr.join(''));
const base64Data = btoaCustom(biStr.join(''));
const imgDataUrl = 'data:' + response.headers['content-type'] + ';base64,' + base64Data;

@@ -128,3 +129,3 @@

const base64Data = window.btoa(biStr.join(''));
const base64Data = btoaCustom(biStr.join(''));
const fontDataUrl = 'data:' + response.headers['content-type'] + ';base64,' + base64Data;

@@ -159,8 +160,8 @@ if (fUrl.length > 0)

public async responseToImage(response: HttpResponse<ArrayBuffer | HTMLImageElement>, blob: Blob): Promise<HTMLImageElement> {
public async responseToImage(response: HttpResponse<{ buffer: ArrayBuffer, blob: Blob }>): Promise<HTMLImageElement> {
// if we already receive and image, this conversion already happened
if(response.data instanceof HTMLImageElement) return response.data;
if (response.data instanceof HTMLImageElement) return response.data;
if (response.headers['content-type'] === 'image/svg+xml') {
const img = await this.processSVG(blob);
const img = await this.processSVG(response.data.blob);
return img;

@@ -174,3 +175,3 @@ } else {

img.crossOrigin = 'anonymous';
img.src = URL.createObjectURL(blob);
img.src = URL.createObjectURL(response.data.blob);
await promise;

@@ -189,3 +190,3 @@ URL.revokeObjectURL(img.src);

public toColorArray(color: unknown): number[] {
if(typeof color !== 'string' || !color.startsWith('#'))
if (typeof color !== 'string' || !color.startsWith('#'))
color = this.toHexColor(color);

@@ -238,4 +239,4 @@ const tColor = new TinyColor(color as ColorInput | undefined);

// check if the input is a THREE.Color
if ((color as THREE.Color).isColor && typeof (color as THREE.Color).getHexString == 'function') {
const tc = new TinyColor((color as THREE.Color).getHexString());
if (typeof color === 'object' && 'isColor' in (color as object) && 'getHexString' in (color as object) && typeof (color as { getHexString: unknown }).getHexString === 'function'){
const tc = new TinyColor((color as { getHexString: () => string }).getHexString());
return tc.isValid ? this.tinyColorToString(tc) : defColorString;

@@ -308,11 +309,11 @@ }

public toVec3(point: vec3 | { x: number, y: number, z: number} | { X: number, Y: number, Z: number}): vec3 {
public toVec3(point: vec3 | { x: number, y: number, z: number } | { X: number, Y: number, Z: number }): vec3 {
if (Array.isArray(point) && point.length >= 3 && typeof point[0] === 'number' && typeof point[1] === 'number' && typeof point[2] === 'number')
return vec3.fromValues(point[0], point[1], point[2]);
const pointCast1 = point as { x: number, y: number, z: number};
const pointCast1 = point as { x: number, y: number, z: number };
if (((pointCast1.x || pointCast1.x === 0) && typeof pointCast1.x === 'number') && ((pointCast1.y || pointCast1.y === 0) && typeof pointCast1.y === 'number') && ((pointCast1.z || pointCast1.z === 0) && typeof pointCast1.z === 'number'))
return vec3.fromValues(pointCast1.x, pointCast1.y, pointCast1.z);
const pointCast2 = point as { X: number, Y: number, Z: number};
const pointCast2 = point as { X: number, Y: number, Z: number };
if (((pointCast2.X || pointCast2.X === 0) && typeof pointCast2.X === 'number') && ((pointCast2.Y || pointCast2.Y === 0) && typeof pointCast2.Y === 'number') && ((pointCast2.Z || pointCast2.Z === 0) && typeof pointCast2.Z === 'number'))

@@ -319,0 +320,0 @@ return vec3.fromValues(pointCast2.X, pointCast2.Y, pointCast2.Z);

@@ -1,8 +0,6 @@

import { SystemInfo } from '../system-info/SystemInfo';
import { IDomEventListener } from './IDomEventListener';
import { UuidGenerator } from '../uuid-generator/UuidGenerator';
import { IDomEventListener } from './IDomEventListener'
export class DomEventEngine {
// #region Properties (5)
// #region Properties (14)

@@ -13,33 +11,26 @@ private readonly _domEventListeners: {

private readonly _uuidGenerator: UuidGenerator = UuidGenerator.instance;
private readonly _systemInfo: SystemInfo = SystemInfo.instance;
private _allowListeners = {
mousewheel: true,
mousedown: true,
mousemove: true,
mouseup: true,
mouseout: true,
touchstart: true,
touchmove: true,
touchend: true,
touchcancel: true,
pointerdown: true,
pointermove: true,
pointerup: true,
pointerout: true,
keydown: true,
keyup: true,
contextmenu: true,
};
private _canvas: HTMLCanvasElement;
private _currentMousePosition: { x: number, y: number } = { x: 0, y: 0 };
private _currentPointerPosition: { x: number, y: number } = { x: 0, y: 0 };
private _onContextMenu: (event: MouseEvent) => void;
private _onKeyDown: (event: KeyboardEvent) => void;
private _onKeyDownPointerPositionHelper: (event: PointerEvent) => void;
private _onKeyUp: (event: KeyboardEvent) => void;
private _onMouseWheel: (event: Event) => void;
private _onMouseDown: (event: MouseEvent) => void;
private _onMouseMove: (event: MouseEvent) => void;
private _onKeyDownMousePositionHelper: (event: MouseEvent) => void;
private _onMouseUp: (event: MouseEvent) => void;
private _onMouseOut: (event: MouseEvent) => void;
private _onTouchStart: (event: TouchEvent) => void;
private _onTouchMove: (event: TouchEvent) => void;
private _onTouchUp: (event: TouchEvent) => void;
private _onTouchCancel: (event: TouchEvent) => void;
private _onKeyDown: (event: KeyboardEvent) => void;
private _onContextMenu: (event: MouseEvent) => void;
private _onPointerDown: (event: PointerEvent) => void;
private _onPointerMove: (event: PointerEvent) => void;
private _onPointerOut: (event: PointerEvent) => void;
private _onPointerUp: (event: PointerEvent) => void;
// #endregion Properties (5)
// #endregion Properties (14)

@@ -51,13 +42,10 @@ // #region Constructors (1)

this._onMouseWheel = this.onMouseWheel.bind(this);
this._onMouseDown = this.onMouseDown.bind(this);
this._onMouseMove = this.onMouseMove.bind(this)
this._onKeyDownMousePositionHelper = this.onKeyDownMousePositionHelper.bind(this)
this._onMouseUp = this.onMouseUp.bind(this)
this._onMouseOut = this.onMouseOut.bind(this)
this._onTouchStart = this.onTouchStart.bind(this)
this._onTouchMove = this.onTouchMove.bind(this)
this._onTouchUp = this.onTouchUp.bind(this)
this._onTouchCancel = this.onTouchCancel.bind(this)
this._onKeyDown = this.onKeyDown.bind(this)
this._onContextMenu = this.onContextMenu.bind(this)
this._onPointerDown = this.onPointerDown.bind(this);
this._onPointerMove = this.onPointerMove.bind(this);
this._onKeyDownPointerPositionHelper = this.onKeyDownPointerPositionHelper.bind(this);
this._onPointerUp = this.onPointerUp.bind(this);
this._onPointerOut = this.onPointerOut.bind(this);
this._onKeyDown = this.onKeyDown.bind(this);
this._onKeyUp = this.onKeyUp.bind(this);
this._onContextMenu = this.onContextMenu.bind(this);

@@ -83,3 +71,3 @@ this.addEventListeners();

*
* Be aware that this might cause some issues with the the camera controls if the mouse / touch events are disabled only partially.
* Be aware that this might cause some issues with the the camera controls if the pointer events are disabled only partially.
*

@@ -90,20 +78,19 @@ * @param allowedListeners

mousewheel?: boolean,
mousedown?: boolean,
mousemove?: boolean,
mouseup?: boolean,
mouseout?: boolean,
touchstart?: boolean,
touchmove?: boolean,
touchend?: boolean,
touchcancel?: boolean,
pointerdown?: boolean,
pointermove?: boolean,
pointerup?: boolean,
pointerout?: boolean,
keydown?: boolean,
keyup?: boolean,
contextmenu?: boolean,
}): void {
if (typeof window === undefined) return;
if (allowedListeners.mousewheel !== undefined && this._allowListeners.mousewheel !== allowedListeners.mousewheel) {
if (allowedListeners.mousewheel) {
this._canvas.addEventListener("mousewheel", this._onMouseWheel);
this._canvas.addEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
this._canvas.addEventListener('mousewheel', this._onMouseWheel);
this._canvas.addEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
} else {
this._canvas.removeEventListener("mousewheel", this._onMouseWheel);
this._canvas.removeEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
this._canvas.removeEventListener('mousewheel', this._onMouseWheel);
this._canvas.removeEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
}

@@ -113,90 +100,63 @@ this._allowListeners.mousewheel = allowedListeners.mousewheel;

if (allowedListeners.mousedown !== undefined && this._allowListeners.mousedown !== allowedListeners.mousedown) {
if (allowedListeners.mousedown) {
this._canvas.addEventListener("mousedown", this._onMouseDown);
if (allowedListeners.pointerdown !== undefined && this._allowListeners.pointerdown !== allowedListeners.pointerdown) {
if (allowedListeners.pointerdown) {
this._canvas.addEventListener('pointerdown', this._onPointerDown);
} else {
this._canvas.removeEventListener("mousedown", this._onMouseDown);
this._canvas.removeEventListener('pointerdown', this._onPointerDown);
}
this._allowListeners.mousedown = allowedListeners.mousedown;
this._allowListeners.pointerdown = allowedListeners.pointerdown;
}
if (allowedListeners.mousemove !== undefined && this._allowListeners.mousemove !== allowedListeners.mousemove) {
if (allowedListeners.mousemove) {
this._canvas.addEventListener("mousemove", this._onMouseMove);
window.addEventListener("mousemove", this._onKeyDownMousePositionHelper);
if (allowedListeners.pointermove !== undefined && this._allowListeners.pointermove !== allowedListeners.pointermove) {
if (allowedListeners.pointermove) {
this._canvas.addEventListener('pointermove', this._onPointerMove);
window.addEventListener('pointermove', this._onKeyDownPointerPositionHelper);
} else {
this._canvas.removeEventListener("mousemove", this._onMouseMove);
window.removeEventListener("mousemove", this._onKeyDownMousePositionHelper);
this._canvas.removeEventListener('pointermove', this._onPointerMove);
window.removeEventListener('pointermove', this._onKeyDownPointerPositionHelper);
}
this._allowListeners.mousemove = allowedListeners.mousemove;
this._allowListeners.pointermove = allowedListeners.pointermove;
}
if (allowedListeners.mouseup !== undefined && this._allowListeners.mouseup !== allowedListeners.mouseup) {
if (allowedListeners.mouseup) {
this._canvas.addEventListener("mouseup", this._onMouseUp);
if (allowedListeners.pointerup !== undefined && this._allowListeners.pointerup !== allowedListeners.pointerup) {
if (allowedListeners.pointerup) {
this._canvas.addEventListener('pointerup', this._onPointerUp);
} else {
this._canvas.removeEventListener("mouseup", this._onMouseUp);
this._canvas.removeEventListener('pointerup', this._onPointerUp);
}
this._allowListeners.mouseup = allowedListeners.mouseup;
this._allowListeners.pointerup = allowedListeners.pointerup;
}
if (allowedListeners.mouseout !== undefined && this._allowListeners.mouseout !== allowedListeners.mouseout) {
if (allowedListeners.mouseout) {
this._canvas.addEventListener("mouseout", this._onMouseOut);
if (allowedListeners.pointerout !== undefined && this._allowListeners.pointerout !== allowedListeners.pointerout) {
if (allowedListeners.pointerout) {
this._canvas.addEventListener('pointerout', this._onPointerOut);
} else {
this._canvas.removeEventListener("mouseout", this._onMouseOut);
this._canvas.removeEventListener('pointerout', this._onPointerOut);
}
this._allowListeners.mouseout = allowedListeners.mouseout;
this._allowListeners.pointerout = allowedListeners.pointerout;
}
if (allowedListeners.touchstart !== undefined && this._allowListeners.touchstart !== allowedListeners.touchstart) {
if (allowedListeners.touchstart) {
window.addEventListener("touchstart", this._onTouchStart, { passive: false });
if (allowedListeners.keydown !== undefined && this._allowListeners.keydown !== allowedListeners.keydown) {
if (allowedListeners.keydown) {
window.addEventListener('keydown', this._onKeyDown);
} else {
window.removeEventListener("touchstart", this._onTouchStart);
window.removeEventListener('keydown', this._onKeyDown);
}
this._allowListeners.touchstart = allowedListeners.touchstart;
this._allowListeners.keydown = allowedListeners.keydown;
}
if (allowedListeners.touchmove !== undefined && this._allowListeners.touchmove !== allowedListeners.touchmove) {
if (allowedListeners.touchmove) {
window.addEventListener("touchmove", this._onTouchMove, { passive: false });
if (allowedListeners.keyup !== undefined && this._allowListeners.keyup !== allowedListeners.keyup) {
if (allowedListeners.keyup) {
window.addEventListener('keyup', this._onKeyUp);
} else {
window.removeEventListener("touchmove", this._onTouchMove);
window.removeEventListener('keyup', this._onKeyUp);
}
this._allowListeners.touchmove = allowedListeners.touchmove;
this._allowListeners.keyup = allowedListeners.keyup;
}
if (allowedListeners.touchend !== undefined && this._allowListeners.touchend !== allowedListeners.touchend) {
if (allowedListeners.touchend) {
window.addEventListener("touchend", this._onTouchUp, { passive: false });
} else {
window.removeEventListener("touchend", this._onTouchUp);
}
this._allowListeners.touchend = allowedListeners.touchend;
}
if (allowedListeners.touchcancel !== undefined && this._allowListeners.touchcancel !== allowedListeners.touchcancel) {
if (allowedListeners.touchcancel) {
window.addEventListener("touchcancel", this._onTouchCancel, { passive: false });
} else {
window.removeEventListener("touchcancel", this._onTouchCancel);
}
this._allowListeners.touchcancel = allowedListeners.touchcancel;
}
if (allowedListeners.keydown !== undefined && this._allowListeners.keydown !== allowedListeners.keydown) {
if (allowedListeners.keydown) {
window.addEventListener("keydown", this._onKeyDown);
} else {
window.removeEventListener("keydown", this._onKeyDown);
}
this._allowListeners.keydown = allowedListeners.keydown;
}
if (allowedListeners.contextmenu !== undefined && this._allowListeners.contextmenu !== allowedListeners.contextmenu) {
if (allowedListeners.contextmenu) {
this._canvas.addEventListener("contextmenu", this._onContextMenu);
this._canvas.addEventListener('contextmenu', this._onContextMenu);
} else {
this._canvas.removeEventListener("contextmenu", this._onContextMenu);
this._canvas.removeEventListener('contextmenu', this._onContextMenu);
}

@@ -212,3 +172,3 @@ this._allowListeners.contextmenu = allowedListeners.contextmenu;

public removeAllDomEventListener(): void {
for(let id in this._domEventListeners)
for (const id in this._domEventListeners)
delete this._domEventListeners[id];

@@ -218,3 +178,3 @@ }

public removeDomEventListener(id: string): boolean {
if(this._domEventListeners[id]) {
if (this._domEventListeners[id]) {
delete this._domEventListeners[id];

@@ -228,27 +188,24 @@ return true;

// #region Private Methods (12)
// #region Private Methods (11)
private addEventListeners() {
this._canvas.addEventListener("mousewheel", this._onMouseWheel);
this._canvas.addEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
if (typeof window === undefined) return;
this._canvas.addEventListener("mousedown", this._onMouseDown);
this._canvas.addEventListener("mousemove", this._onMouseMove);
this._canvas.addEventListener("mouseup", this._onMouseUp);
this._canvas.addEventListener("mouseout", this._onMouseOut);
this._canvas.addEventListener('mousewheel', this._onMouseWheel);
this._canvas.addEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
window.addEventListener("touchstart", this._onTouchStart, { passive: false });
window.addEventListener("touchmove", this._onTouchMove, { passive: false });
window.addEventListener("touchend", this._onTouchUp, { passive: false });
window.addEventListener("touchcancel", this._onTouchCancel, { passive: false });
this._canvas.addEventListener('pointerdown', this._onPointerDown);
this._canvas.addEventListener('pointermove', this._onPointerMove);
this._canvas.addEventListener('pointerup', this._onPointerUp);
this._canvas.addEventListener('pointerout', this._onPointerOut);
window.addEventListener("keydown", this._onKeyDown);
window.addEventListener("mousemove", this._onKeyDownMousePositionHelper);
window.addEventListener('keyup', this._onKeyUp);
window.addEventListener('keydown', this._onKeyDown);
window.addEventListener('pointermove', this._onKeyDownPointerPositionHelper);
// just prevent right click menu
this._canvas.addEventListener("contextmenu", this._onContextMenu);
this._canvas.addEventListener('contextmenu', this._onContextMenu);
}
private onContextMenu(event: MouseEvent): void {
if(this._systemInfo.isMobile === true) return;
event.preventDefault();

@@ -258,94 +215,61 @@ }

private onKeyDown(event: KeyboardEvent): void {
if (this._canvas === document.elementFromPoint(this._currentMousePosition.x, this._currentMousePosition.y))
if (this._canvas === document.elementFromPoint(this._currentPointerPosition.x, this._currentPointerPosition.y))
Object.values(this._domEventListeners).forEach(e => e.onKeyDown(event));
}
private onKeyDownMousePositionHelper(event: MouseEvent): void {
if(this._systemInfo.isMobile === true) return;
this._currentMousePosition = { x: event.pageX, y: event.pageY };
private onKeyDownPointerPositionHelper(event: PointerEvent): void {
this._currentPointerPosition = { x: event.pageX, y: event.pageY };
}
private onMouseDown(event: MouseEvent): void {
if(this._systemInfo.isMobile === true) return;
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseDown(event));
private onKeyUp(event: KeyboardEvent): void {
if (this._canvas === document.elementFromPoint(this._currentPointerPosition.x, this._currentPointerPosition.y))
Object.values(this._domEventListeners).forEach(e => e.onKeyUp(event));
}
private onMouseMove(event: MouseEvent): void {
if(this._systemInfo.isMobile === true) return;
private onMouseWheel(event: Event): void {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseMove(event));
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onMouseWheel(<WheelEvent>event));
}
private onMouseUp(event: MouseEvent): void {
if(this._systemInfo.isMobile === true) return;
private onPointerDown(event: PointerEvent): void {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseUp(event));
Object.values(this._domEventListeners).forEach(e => e.onMouseEnd(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerDown(event));
}
private onMouseOut(event: MouseEvent): void {
if(this._systemInfo.isMobile === true) return;
private onPointerMove(event: PointerEvent): void {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onMouseOut(event));
Object.values(this._domEventListeners).forEach(e => e.onMouseEnd(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerMove(event));
}
private onMouseWheel(event: Event): void {
if(this._systemInfo.isMobile === true) return;
private onPointerOut(event: PointerEvent): void {
event.preventDefault();
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onMouseWheel(<WheelEvent>event));
Object.values(this._domEventListeners).forEach(e => e.onPointerOut(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerEnd(event));
}
private onTouchUp(event: TouchEvent): void {
if (event.composedPath().includes(this._canvas.parentElement!)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchUp(event));
Object.values(this._domEventListeners).forEach(e => e.onTouchEnd(event));
}
private onPointerUp(event: PointerEvent): void {
event.preventDefault();
Object.values(this._domEventListeners).forEach(e => e.onPointerUp(event));
Object.values(this._domEventListeners).forEach(e => e.onPointerEnd(event));
}
private onTouchCancel(event: TouchEvent): void {
if (event.composedPath().includes(this._canvas.parentElement!)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchCancel(event));
Object.values(this._domEventListeners).forEach(e => e.onTouchEnd(event));
}
}
private onTouchMove(event: TouchEvent): void {
if (event.composedPath().includes(this._canvas.parentElement!)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchMove(event))
}
}
private onTouchStart(event: TouchEvent): void {
if (event.composedPath().includes(this._canvas.parentElement!)) {
event.stopPropagation();
Object.values(this._domEventListeners).forEach(e => e.onTouchStart(event));
}
}
private removeEventListeners() {
this._canvas.removeEventListener("mousewheel", this._onMouseWheel);
this._canvas.removeEventListener("MozMousePixelScroll", this._onMouseWheel); // firefox
if (typeof window === undefined) return;
this._canvas.removeEventListener("mousedown", this._onMouseDown);
this._canvas.removeEventListener("mousemove", this._onMouseMove);
this._canvas.removeEventListener("mouseup", this._onMouseUp);
this._canvas.removeEventListener("mouseout", this._onMouseOut);
this._canvas.removeEventListener('mousewheel', this._onMouseWheel);
this._canvas.removeEventListener('MozMousePixelScroll', this._onMouseWheel); // firefox
window.removeEventListener("touchstart", this._onTouchStart);
window.removeEventListener("touchmove", this._onTouchMove);
window.removeEventListener("touchend", this._onTouchUp);
window.removeEventListener("touchcancel", this._onTouchCancel);
this._canvas.removeEventListener('pointerdown', this._onPointerDown);
this._canvas.removeEventListener('pointermove', this._onPointerMove);
this._canvas.removeEventListener('pointerup', this._onPointerUp);
this._canvas.removeEventListener('pointerout', this._onPointerOut);
window.removeEventListener("keydown", this._onKeyDown);
window.removeEventListener("mousemove", this._onKeyDownMousePositionHelper);
this._canvas.removeEventListener("contextmenu", this._onContextMenu);
window.removeEventListener('keydown', this._onKeyDown);
window.removeEventListener('keyup', this._onKeyUp);
window.removeEventListener('pointermove', this._onKeyDownPointerPositionHelper);
this._canvas.removeEventListener('contextmenu', this._onContextMenu);
}
// #endregion Private Methods (12)
// #endregion Private Methods (11)
}
export interface IDomEventListener {
// #region Public Methods (8)
onKeyDown(event: KeyboardEvent): void;
onMouseDown(event: MouseEvent): void;
onMouseMove(event: MouseEvent): void;
onMouseEnd(event: MouseEvent): void;
onMouseUp(event: MouseEvent): void;
onMouseOut(event: MouseEvent): void;
onKeyUp(event: KeyboardEvent): void;
onMouseWheel(event: WheelEvent): void;
onTouchEnd(event: TouchEvent): void;
onTouchUp(event: TouchEvent): void;
onTouchCancel(event: TouchEvent): void;
onTouchMove(event: TouchEvent): void;
onTouchStart(event: TouchEvent): void;
onPointerDown(event: PointerEvent): void;
onPointerEnd(event: PointerEvent): void;
onPointerMove(event: PointerEvent): void;
onPointerOut(event: PointerEvent): void;
onPointerUp(event: PointerEvent): void;
// #endregion Public Methods (8)
}

@@ -0,64 +1,252 @@

/**
* Event types for all camera events
* The camera events are used to notify about camera changes, like start, move and end of camera movement.
* The events that are sent with the camera events are of type {@link ICameraEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*
* @enum {string}
*/
export enum EVENTTYPE_CAMERA {
CAMERA_START = "camera.start",
CAMERA_MOVE = "camera.move",
CAMERA_END = "camera.end",
/**
* The CAMERA_START-event is sent when the camera starts moving.
*/
CAMERA_START = 'camera.start',
/**
* The CAMERA_MOVE-event is sent when the camera moves.
*/
CAMERA_MOVE = 'camera.move',
/**
* The CAMERA_END-event is sent when the camera stops moving.
*/
CAMERA_END = 'camera.end',
}
/**
* Event types for all rendering events
* The rendering events are used to notify about specific rendering events, like the finishing of the beauty rendering.
* The events that are sent with the rendering events are of type {@link IRenderingEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_RENDERING {
BEAUTY_RENDERING_FINISHED = "rendering.beautyRenderingFinished"
/**
* The BEAUTY_RENDERING_FINISHED-event is sent when the beauty rendering has finished.
*/
BEAUTY_RENDERING_FINISHED = 'rendering.beautyRenderingFinished'
}
/**
* Event types for all scene events
* The scene events are used to notify about scene changes, like bounding box changes or empty bounding boxes.
* The events that are sent with the scene events are of type {@link ISceneEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_SCENE {
SCENE_BOUNDING_BOX_CHANGE = "scene.boundingBoxChange",
SCENE_BOUNDING_BOX_EMPTY = "scene.boundingBoxEmpty"
/**
* The SCENE_BOUNDING_BOX_CHANGE-event is sent when the bounding box of the scene has changed.
*/
SCENE_BOUNDING_BOX_CHANGE = 'scene.boundingBoxChange',
/**
* TheSCENE_BOUNDING_BOX_EMPTY-event is sent when the bounding box of the scene is empty.
*/
SCENE_BOUNDING_BOX_EMPTY = 'scene.boundingBoxEmpty'
}
// VIEWPORT
// FRAMERATE
// RENDER_INFO
// RENDER_BEAUTY_START
// RENDER_BEAUTY_CANCEL
// RENDER_BEAUTY_END
// VISIBILITY_ON
// VISIBILITY_OFF
/**
* Event types for all viewport events
* The viewport events are used to notify about viewport changes, like creation, update, closing, visibility changes or loading of settings.
* The events that are sent with the viewport events are of type {@link IViewportEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_VIEWPORT {
BUSY_MODE_ON = "viewport.busy.on",
BUSY_MODE_OFF = "viewport.busy.off",
VIEWPORT_CREATED = "viewport.created",
VIEWPORT_UPDATED = "viewport.updated",
VIEWPORT_CLOSED = "viewport.closed",
VIEWPORT_SETTINGS_LOADED = "viewport.settingsLoaded",
VIEWPORT_VISIBLE = "viewport.visible",
VIEWPORT_HIDDEN = "viewport.hidden",
/**
* The BUSY_MODE_ON-event is sent when the busy mode of the viewport has started.
*/
BUSY_MODE_ON = 'viewport.busy.on',
/**
* The BUSY_MODE_OFF-event is sent when the busy mode of the viewport has ended.
*/
BUSY_MODE_OFF = 'viewport.busy.off',
/**
* The VIEWPORT_CREATED-event is sent when the viewport has been created.
*/
VIEWPORT_CREATED = 'viewport.created',
/**
* The VIEWPORT_UPDATED-event is sent when the viewport has been updated.
*/
VIEWPORT_UPDATED = 'viewport.updated',
/**
* The VIEWPORT_CLOSED-event is sent when the viewport has been closed.
*/
VIEWPORT_CLOSED = 'viewport.closed',
/**
* The VIEWPORT_SETTINGS_LOADED-event is sent when the settings of the viewport have been loaded.
*/
VIEWPORT_SETTINGS_LOADED = 'viewport.settingsLoaded',
/**
* The VIEWPORT_VISIBLE-event is sent when the viewport has become visible.
*/
VIEWPORT_VISIBLE = 'viewport.visible',
/**
* The VIEWPORT_HIDDEN-event is sent when the viewport has become hidden.
*/
VIEWPORT_HIDDEN = 'viewport.hidden',
}
/**
* Event types for all session events
* The session events are used to notify about session changes, like creation, customization, closing, loading of initial outputs or delayed loading of SDTF.
* The events that are sent with the session events are of type {@link ISessionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_SESSION {
SESSION_CREATED = "session.created",
SESSION_CUSTOMIZED = "session.customized",
SESSION_CLOSED = "session.closed",
SESSION_INITIAL_OUTPUTS_LOADED = 'session.initialOutputsLoaded'
/**
* The SESSION_CREATED-event is sent when the session has been created.
*/
SESSION_CREATED = 'session.created',
/**
* The SESSION_CUSTOMIZED-event is sent when the session has been customized.
*/
SESSION_CUSTOMIZED = 'session.customized',
/**
* The SESSION_CLOSED-event is sent when the session has been closed.
*/
SESSION_CLOSED = 'session.closed',
/**
* The SESSION_INITIAL_OUTPUTS_LOADED-event is sent when the initial outputs of the session have been loaded.
*/
SESSION_INITIAL_OUTPUTS_LOADED = 'session.initialOutputsLoaded',
/**
* The SESSION_SDTF_DELAYED_LOADED-event is sent when the SDTF of the session has been delayed loaded.
*/
SESSION_SDTF_DELAYED_LOADED = 'session.sdtfDelayedLoaded',
}
/**
* Event types for all parameter events
* The parameter events are used to notify about parameter changes, like value changes or session value changes.
* The events that are sent with the parameter events are of type {@link IParameterEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_PARAMETER {
/**
* The PARAMETER_VALUE_CHANGED-event is sent when the value of a parameter has changed.
*/
PARAMETER_VALUE_CHANGED = 'parameter.valueChanged',
/**
* The PARAMETER_SESSION_VALUE_CHANGED-event is sent when the session value of a parameter has changed.
*/
PARAMETER_SESSION_VALUE_CHANGED = 'parameter.sessionValueChanged'
}
/**
* Event types for all output events
* The output events are used to notify about output changes, like updated outputs.
* The events that are sent with the output events are of type {@link IOutputEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_OUTPUT {
OUTPUT_UPDATED = "output.updated"
/**
* The OUTPUT_UPDATED-event is sent when an output has been updated.
*/
OUTPUT_UPDATED = 'output.updated'
}
/**
* Event types for all task events
* The task events are used to notify about task changes, like start, process, end or cancel of a task.
* The events that are sent with the task events are of type {@link ITaskEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_TASK {
TASK_START = "task.start",
TASK_PROCESS = "task.process",
TASK_END = "task.end",
TASK_CANCEL = "task.cancel",
/**
* The TASK_START-event is sent when a task has started.
*/
TASK_START = 'task.start',
/**
* The TASK_PROCESS-event is sent when the process of a task has been updated.
*/
TASK_PROCESS = 'task.process',
/**
* The TASK_END-event is sent when a task has ended.
*/
TASK_END = 'task.end',
/**
* The TASK_CANCEL-event is sent when a task has been canceled.
*/
TASK_CANCEL = 'task.cancel',
}
/**
* Event types for all interaction events
* The interaction events are used to notify about interaction changes, like drag start, move and end, hover on and off, select on and off.
* The events that are sent with the interaction events are of type {@link IInteractionEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_INTERACTION {
DRAG_START = "interaction.drag.start",
DRAG_MOVE = "interaction.drag.move",
DRAG_END = "interaction.drag.end",
HOVER_ON = "interaction.hover.on",
HOVER_OFF = "interaction.hover.off",
SELECT_ON = "interaction.select.on",
SELECT_OFF = "interaction.select.off",
/**
* The DRAG_START-event is sent when the dragging of an object has started.
*/
DRAG_START = 'interaction.drag.start',
/**
* The DRAG_MOVE-event is sent when an object is being dragged.
*/
DRAG_MOVE = 'interaction.drag.move',
/**
* The DRAG_END-event is sent when the dragging of an object has ended.
*/
DRAG_END = 'interaction.drag.end',
/**
* The HOVER_ON-event is sent when an object has been hovered.
*/
HOVER_ON = 'interaction.hover.on',
/**
* The HOVER_OFF-event is sent when an object has been unhovered.
*/
HOVER_OFF = 'interaction.hover.off',
/**
* The SELECT_ON-event is sent when an object has been selected.
*/
SELECT_ON = 'interaction.select.on',
/**
* The SELECT_OFF-event is sent when an object has been deselected.
*/
SELECT_OFF = 'interaction.select.off',
}
/**
* Event types for all drawing tools events
* The drawing tools events are used to notify about drawing tools changes, like cancel, finish, update, inserted, removed, drag start, move and end.
* The events that are sent with the drawing tools events are of type {@link IDrawingToolsEvent}. The {@link EventResponseMapping} can used to map the event type to the corresponding event interface.
*/
export enum EVENTTYPE_DRAWING_TOOLS {
/**
* The CANCEL-event is sent when the drawing process has been canceled.
*/
CANCEL = 'drawing_tools.cancel',
/**
* The FINISH-event is sent when the drawing process has been finished.
*/
FINISH = 'drawing_tools.finish',
/**
* The UPDATE-event is sent when the drawing process has been updated.
*/
UPDATE = 'drawing_tools.update',
/**
* The INSERTED-event is sent when a point has been inserted.
*/
INSERTED = 'drawing_tools.inserted',
/**
* The REMOVED-event is sent when a point has been removed.
*/
REMOVED = 'drawing_tools.removed',
/**
* The DRAG_START-event is sent when the dragging of a point has started.
*/
DRAG_START = 'drawing_tools.drag.start',
/**
* The DRAG_MOVE-event is sent when a point is being dragged.
*/
DRAG_MOVE = 'drawing_tools.drag.move',
/**
* The DRAG_END-event is sent when the dragging of a point has ended.
*/
DRAG_END = 'drawing_tools.drag.end',
}
/**
* Definition of the event types.
* These types are used to identify the type of an event in an event object {@link IEvent}.
* The {@link EventResponseMapping} is used to map the event type to the corresponding event interface.
*/
export const EVENTTYPE = {

@@ -70,7 +258,9 @@ CAMERA: EVENTTYPE_CAMERA,

SESSION: EVENTTYPE_SESSION,
PARAMETER: EVENTTYPE_PARAMETER,
VIEWPORT: EVENTTYPE_VIEWPORT,
INTERACTION: EVENTTYPE_INTERACTION,
TASK: EVENTTYPE_TASK
TASK: EVENTTYPE_TASK,
DRAWING_TOOLS: EVENTTYPE_DRAWING_TOOLS
};
export type MainEventTypes = typeof EVENTTYPE_CAMERA | typeof EVENTTYPE_OUTPUT | typeof EVENTTYPE_RENDERING | typeof EVENTTYPE_SCENE | typeof EVENTTYPE_SESSION | typeof EVENTTYPE_VIEWPORT | typeof EVENTTYPE_INTERACTION | typeof EVENTTYPE_TASK;
export type MainEventTypes = typeof EVENTTYPE_CAMERA | typeof EVENTTYPE_OUTPUT | typeof EVENTTYPE_RENDERING | typeof EVENTTYPE_SCENE | typeof EVENTTYPE_SESSION | typeof EVENTTYPE_PARAMETER | typeof EVENTTYPE_VIEWPORT | typeof EVENTTYPE_INTERACTION | typeof EVENTTYPE_DRAWING_TOOLS | typeof EVENTTYPE_TASK;

@@ -6,2 +6,3 @@ import axios, { AxiosRequestConfig } from 'axios';

import { Converter } from '../converter/Converter';
import { btoaCustom } from '../utilities/base64';

@@ -108,2 +109,4 @@ export class HttpClient {

throw new ShapeDiverGeometryBackendError(e.message);
} else {
throw e;
}

@@ -210,10 +213,10 @@ }

*/
public async loadTexture(href: string): Promise<HttpResponse<{ image: HTMLImageElement, blob: Blob }>> {
public async loadTexture(href: string): Promise<HttpResponse<{ buffer: ArrayBuffer, blob: Blob }>> {
const response = await (this.get(href, undefined, true) as Promise<HttpResponse<ArrayBuffer>>);
const buffer = response.data;
const arrayBufferView = new Uint8Array( response.data );
const blob = new Blob([ arrayBufferView ], { type: response.headers['content-type'] } );
const image = await Converter.instance.responseToImage(response, blob);
return {
data: {
image,
buffer,
blob

@@ -332,3 +335,3 @@ },

const hrefAsKey = url.toString();
return window.btoa(hrefAsKey);
return btoaCustom(hrefAsKey);
}

@@ -335,0 +338,0 @@

@@ -1,70 +0,120 @@

import { EventEngine } from './event-engine/EventEngine'
import { EVENTTYPE, EVENTTYPE_CAMERA, EVENTTYPE_INTERACTION, EVENTTYPE_OUTPUT, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_TASK, EVENTTYPE_VIEWPORT, MainEventTypes } from './event-engine/EventTypes'
import { SettingsEngine } from './settings-engine/SettingsEngine'
import { StateEngine } from './state-engine/StateEngine'
import { SystemInfo } from './system-info/SystemInfo'
import { DomEventEngine } from './dom-event-engine/DomEventEngine'
import { IDomEventListener } from './dom-event-engine/IDomEventListener'
import { IEvent } from './event-engine/interfaces/IEvent'
import { Converter } from './converter/Converter'
import { HttpClient } from './http-client/HttpClient'
import { InputValidator } from './input-validator/InputValidator'
import { TypeChecker } from './type-check/TypeChecker'
import { UuidGenerator } from './uuid-generator/UuidGenerator'
import { PerformanceEvaluator } from './performance-evaluator/PerformanceEvaluator'
import { Logger, LOGGING_LEVEL } from './logger/Logger'
import { StatePromise } from './state-engine/StatePromise'
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerWebGLError, ShapeDiverViewerInteractionError, ShapeDiverViewerViewportError } from './logger/ShapeDiverViewerErrors'
import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from './logger/ShapeDiverError'
import { HttpResponse } from './http-client/HttpResponse'
import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from './logger/ShapeDiverBackendErrors'
import { ShapeDiverResponseErrorType as ShapeDiverGeometryBackendResponseErrorType } from "@shapediver/sdk.geometry-api-sdk-v2";
import { isViewerError, isViewerUnknownError, isViewerDataProcessingError, isViewerEnvironmentMapError, isViewerWebGLError, isViewerSettingsError, isViewerSessionError, isViewerViewportError, isViewerLightError, isViewerCameraError, isARError, isViewerValidationError, isViewerInteractionError, isViewerGeometryBackendError, isViewerGeometryBackendGenericError, isViewerGeometryBackendRequestError, isViewerGeometryBackendResponseError } from './logger/ErrorTypeGuards'
import { Converter } from './converter/Converter';
import { DomEventEngine } from './dom-event-engine/DomEventEngine';
import { EventEngine } from './event-engine/EventEngine';
import {
EVENTTYPE,
EVENTTYPE_CAMERA,
EVENTTYPE_DRAWING_TOOLS,
EVENTTYPE_INTERACTION,
EVENTTYPE_OUTPUT,
EVENTTYPE_PARAMETER,
EVENTTYPE_RENDERING,
EVENTTYPE_SCENE,
EVENTTYPE_SESSION,
EVENTTYPE_TASK,
EVENTTYPE_VIEWPORT,
MainEventTypes
} from './event-engine/EventTypes';
import { HttpClient } from './http-client/HttpClient';
import { HttpResponse } from './http-client/HttpResponse';
import { IDomEventListener } from './dom-event-engine/IDomEventListener';
import { IEvent } from './event-engine/interfaces/IEvent';
import { InputValidator } from './input-validator/InputValidator';
import {
isARError,
isViewerCameraError,
isViewerDataProcessingError,
isViewerDrawingToolsError,
isViewerEnvironmentMapError,
isViewerError,
isViewerGeometryBackendError,
isViewerGeometryBackendGenericError,
isViewerGeometryBackendRequestError,
isViewerGeometryBackendResponseError,
isViewerInteractionError,
isViewerLightError,
isViewerSessionError,
isViewerSettingsError,
isViewerUnknownError,
isViewerValidationError,
isViewerViewportError,
isViewerWebGLError
} from './logger/ErrorTypeGuards';
import { ISessionGlobalAccessObjectDefinition } from './state-engine/ISessionGlobalAccessObjectDefinition';
import { IViewportGlobalAccessObjectDefinition } from './state-engine/IViewportGlobalAccessObjectDefinition';
import { Logger, LOGGING_LEVEL } from './logger/Logger';
import { PerformanceEvaluator } from './performance-evaluator/PerformanceEvaluator';
import { SESSION_SETTINGS_MODE, SettingsEngine } from './settings-engine/SettingsEngine';
import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from './logger/ShapeDiverBackendErrors';
import { ShapeDiverResponseErrorType as ShapeDiverGeometryBackendResponseErrorType } from '@shapediver/sdk.geometry-api-sdk-v2';
import {
ShapeDiverViewerArError,
ShapeDiverViewerCameraError,
ShapeDiverViewerDataProcessingError,
ShapeDiverViewerDrawingToolsError,
ShapeDiverViewerEnvironmentMapError,
ShapeDiverViewerInteractionError,
ShapeDiverViewerLightError,
ShapeDiverViewerSessionError,
ShapeDiverViewerSettingsError,
ShapeDiverViewerUnknownError,
ShapeDiverViewerValidationError,
ShapeDiverViewerViewportError,
ShapeDiverViewerWebGLError
} from './logger/ShapeDiverViewerErrors';
import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from './logger/ShapeDiverError';
import { StateEngine } from './state-engine/StateEngine';
import { StatePromise } from './state-engine/StatePromise';
import { SystemInfo } from './system-info/SystemInfo';
import { TypeChecker } from './type-check/TypeChecker';
import { UuidGenerator } from './uuid-generator/UuidGenerator';
import { atobCustom, btoaCustom } from './utilities/base64';
export {
EventEngine, EVENTTYPE, MainEventTypes, IEvent,
EVENTTYPE_CAMERA, EVENTTYPE_OUTPUT, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_VIEWPORT, EVENTTYPE_INTERACTION, EVENTTYPE_TASK
}
EventEngine, EVENTTYPE, MainEventTypes, IEvent,
EVENTTYPE_CAMERA, EVENTTYPE_OUTPUT, EVENTTYPE_PARAMETER, EVENTTYPE_RENDERING, EVENTTYPE_SCENE, EVENTTYPE_SESSION, EVENTTYPE_VIEWPORT, EVENTTYPE_INTERACTION, EVENTTYPE_DRAWING_TOOLS, EVENTTYPE_TASK
};
export {
SettingsEngine
}
SettingsEngine, SESSION_SETTINGS_MODE
};
export {
StateEngine, StatePromise
}
StateEngine, StatePromise,
IViewportGlobalAccessObjectDefinition, ISessionGlobalAccessObjectDefinition
};
export {
SystemInfo
}
};
export {
IDomEventListener, DomEventEngine
}
};
export {
HttpClient, HttpResponse
}
};
export {
UuidGenerator
}
};
export {
Converter
}
};
export {
TypeChecker
}
};
export {
InputValidator
}
};
export {
Logger, LOGGING_LEVEL,
Logger, LOGGING_LEVEL,
ShapeDiverViewerErrorType,
ShapeDiverViewerError,
ShapeDiverViewerDataProcessingError,
ShapeDiverViewerError,
ShapeDiverViewerDataProcessingError,
ShapeDiverViewerEnvironmentMapError,

@@ -75,3 +125,3 @@ ShapeDiverViewerWebGLError,

ShapeDiverViewerViewportError,
ShapeDiverViewerUnknownError,
ShapeDiverViewerUnknownError,
ShapeDiverViewerArError,

@@ -82,2 +132,3 @@ ShapeDiverViewerLightError,

ShapeDiverViewerInteractionError,
ShapeDiverViewerDrawingToolsError,
ShapeDiverGeometryBackendError,

@@ -87,3 +138,3 @@ ShapeDiverGeometryBackendRequestError,

ShapeDiverGeometryBackendResponseErrorType
}
};

@@ -104,2 +155,3 @@ export {

isViewerInteractionError,
isViewerDrawingToolsError,
isViewerGeometryBackendError,

@@ -109,6 +161,10 @@ isViewerGeometryBackendGenericError,

isViewerGeometryBackendResponseError
}
};
export {
PerformanceEvaluator
}
};
export {
atobCustom, btoaCustom
};
import { ShapeDiverGeometryBackendError, ShapeDiverGeometryBackendRequestError, ShapeDiverGeometryBackendResponseError } from "./ShapeDiverBackendErrors"
import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from "./ShapeDiverError"
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from "./ShapeDiverViewerErrors"
import { ShapeDiverViewerArError, ShapeDiverViewerCameraError, ShapeDiverViewerDataProcessingError, ShapeDiverViewerDrawingToolsError, ShapeDiverViewerEnvironmentMapError, ShapeDiverViewerInteractionError, ShapeDiverViewerLightError, ShapeDiverViewerSessionError, ShapeDiverViewerSettingsError, ShapeDiverViewerUnknownError, ShapeDiverViewerValidationError, ShapeDiverViewerViewportError, ShapeDiverViewerWebGLError } from "./ShapeDiverViewerErrors"

@@ -96,2 +96,9 @@ /** Type guard for all error types of the viewer package. */

/** Type guard for a drawing tools viewer error. */
export function isViewerDrawingToolsError(e: any): e is ShapeDiverViewerDrawingToolsError {
return e instanceof Error &&
"errorType" in e &&
(<ShapeDiverViewerError>e).errorType === ShapeDiverViewerErrorType.DRAWING_TOOLS_ERROR
}
/** Type guard for all error types of the Geometry Backend SDK package that are mapped to viewer errors. */

@@ -98,0 +105,0 @@ export function isViewerGeometryBackendError(e: any): e is

@@ -9,2 +9,3 @@ export enum ShapeDiverViewerErrorType {

DATA_PROCESSING_ERROR = 'SdDataProcessingError',
DRAWING_TOOLS_ERROR = 'SdDrawingToolsError',
ENVIRONMENT_MAP_ERROR = 'SdEnvironmentMapError',

@@ -11,0 +12,0 @@ INTERACTION_ERROR = 'SdInteractionError',

@@ -113,2 +113,10 @@ import { ShapeDiverViewerError, ShapeDiverViewerErrorType } from "./ShapeDiverError";

}
}
export class ShapeDiverViewerDrawingToolsError extends ShapeDiverViewerError {
constructor(
public readonly message: string
) {
super(ShapeDiverViewerErrorType.INTERACTION_ERROR, 'An error occurred with drawing tools.', message);
}
}

@@ -1,27 +0,35 @@

import { convert, validate, Defaults, ISettings, versions, latestVersion } from '@shapediver/viewer.settings';
import { EventEngine } from '../event-engine/EventEngine'
import { Logger } from '../logger/Logger';
import {
convert,
Defaults,
ISettings,
latestVersion,
previousVersion,
validate
} from '@shapediver/viewer.settings';
import { ShapeDiverViewerSettingsError } from '../logger/ShapeDiverViewerErrors';
type IARSettings = ISettings["ar"];
type ICameraSettings = ISettings["camera"];
type IEnvironmentSettings = ISettings["environment"];
type IEnvironmentGeometrySettings = ISettings["environmentGeometry"];
type IGeneralSettings = ISettings["general"];
type ILightSettings = ISettings["light"];
type IRenderingSettings = ISettings["rendering"];
type ISessionSettings = ISettings["session"];
// #region Type aliases (8)
type IARSettings = ISettings['ar'];
type ICameraSettings = ISettings['camera'];
type IEnvironmentGeometrySettings = ISettings['environmentGeometry'];
type IEnvironmentSettings = ISettings['environment'];
type IGeneralSettings = ISettings['general'];
type ILightSettings = ISettings['light'];
type IRenderingSettings = ISettings['rendering'];
type ISessionSettings = ISettings['session'];
// #endregion Type aliases (8)
// #region Classes (1)
export class SettingsEngine {
// #region Properties (8)
// #region Properties (4)
private readonly _eventEngine: EventEngine = EventEngine.instance;
private readonly _logger: Logger = Logger.instance;
private readonly _settings: ISettings = Defaults();
private _settingsJson: any;
private _settings: ISettings = Defaults();
private _settingsJson: unknown;
// #endregion Properties (8)
// #endregion Properties (4)
// #region Public Accessors (10)
// #region Public Getters And Setters (11)

@@ -67,50 +75,31 @@ public get ar(): IARSettings {

}
public get settingsJson(): any {
public get settingsJson(): unknown {
return this._settingsJson;
}
// #endregion Public Accessors (10)
// #endregion Public Getters And Setters (11)
// #region Public Methods (4)
// #region Public Methods (2)
public flatten() {
const flattenObject = (ob: any) => {
const toReturn: { [key: string]: any } = {};
for (let i in ob) {
if (!ob.hasOwnProperty(i)) continue;
if ((typeof ob[i]) == 'object') {
const flatObject = flattenObject(ob[i]);
for (var x in flatObject) {
if (!flatObject.hasOwnProperty(x)) continue;
toReturn[i + '.' + x] = flatObject[x];
}
} else {
toReturn[i] = ob[i];
}
}
return toReturn;
};
return flattenObject(this.settings);
}
public loadSettings(json: any) {
public loadSettings(json: unknown) {
this._settingsJson = json;
if (JSON.stringify(json) !== JSON.stringify({})) {
for (let i = 0; i < previousVersion.length; i++) {
const v = previousVersion[i];
const prevVersions = ['1.0', '2.0', '3.0', '3.1', '3.2', '3.3', '3.4', '4.0'];
for(let i = 0; i < prevVersions.length; i++) {
const v = prevVersions[i];
try {
validate(json, v as versions);
(<any>this._settings) = convert(json, latestVersion);
try {
validate(json, v);
this._settings = convert(json, latestVersion) as ISettings;
this.cleanSettings(this._settings);
return;
} catch (e) {}
} catch (e) {
// it's ok, we just try the next version
// only the latest version is expected to be valid
}
}
try {
validate(json, latestVersion);
(<any>this._settings) = convert(json, latestVersion);
try {
validate(json, latestVersion);
this._settings = convert(json, latestVersion) as ISettings;
this.cleanSettings(this._settings);

@@ -122,3 +111,3 @@ return;

} else {
(<any>this._settings) = Defaults();
this._settings = Defaults();
return;

@@ -129,6 +118,6 @@ }

public reset() {
(<any>this._settings) = Defaults();
this._settings = Defaults();
}
// #endregion Public Methods (4)
// #endregion Public Methods (2)

@@ -138,23 +127,23 @@ // #region Private Methods (1)

private cleanSettings(json: ISettings) {
for(let c in json.camera.cameras) {
for (const c in json.camera.cameras) {
const camera = json.camera.cameras[c];
if(camera.type === 'perspective') {
const restrictions = (<any>camera.controls).restrictions;
if(restrictions.position.cube.min.x === null) restrictions.position.cube.min.x = -Infinity;
if(restrictions.position.cube.min.y === null) restrictions.position.cube.min.y = -Infinity;
if(restrictions.position.cube.min.z === null) restrictions.position.cube.min.z = -Infinity;
if(restrictions.position.cube.max.x === null) restrictions.position.cube.max.x = Infinity;
if(restrictions.position.cube.max.y === null) restrictions.position.cube.max.y = Infinity;
if(restrictions.position.cube.max.z === null) restrictions.position.cube.max.z = Infinity;
if(restrictions.position.sphere.radius === null) restrictions.position.sphere.radius = Infinity;
if(restrictions.target.cube.min.x === null) restrictions.target.cube.min.x = -Infinity;
if(restrictions.target.cube.min.y === null) restrictions.target.cube.min.y = -Infinity;
if(restrictions.target.cube.min.z === null) restrictions.target.cube.min.z = -Infinity;
if(restrictions.target.cube.max.x === null) restrictions.target.cube.max.x = Infinity;
if(restrictions.target.cube.max.y === null) restrictions.target.cube.max.y = Infinity;
if(restrictions.target.cube.max.z === null) restrictions.target.cube.max.z = Infinity;
if(restrictions.target.sphere.radius === null) restrictions.target.sphere.radius = Infinity;
if(restrictions.rotation.minAzimuthAngle === null) restrictions.rotation.minAzimuthAngle = -Infinity;
if(restrictions.rotation.maxAzimuthAngle === null) restrictions.rotation.maxAzimuthAngle = Infinity;
if(restrictions.zoom.maxDistance === null) restrictions.zoom.maxDistance = Infinity;
if (camera.type === 'perspective') {
const restrictions = camera.controls.restrictions;
if (restrictions.position.cube.min.x === null) restrictions.position.cube.min.x = -Infinity;
if (restrictions.position.cube.min.y === null) restrictions.position.cube.min.y = -Infinity;
if (restrictions.position.cube.min.z === null) restrictions.position.cube.min.z = -Infinity;
if (restrictions.position.cube.max.x === null) restrictions.position.cube.max.x = Infinity;
if (restrictions.position.cube.max.y === null) restrictions.position.cube.max.y = Infinity;
if (restrictions.position.cube.max.z === null) restrictions.position.cube.max.z = Infinity;
if (restrictions.position.sphere.radius === null) restrictions.position.sphere.radius = Infinity;
if (restrictions.target.cube.min.x === null) restrictions.target.cube.min.x = -Infinity;
if (restrictions.target.cube.min.y === null) restrictions.target.cube.min.y = -Infinity;
if (restrictions.target.cube.min.z === null) restrictions.target.cube.min.z = -Infinity;
if (restrictions.target.cube.max.x === null) restrictions.target.cube.max.x = Infinity;
if (restrictions.target.cube.max.y === null) restrictions.target.cube.max.y = Infinity;
if (restrictions.target.cube.max.z === null) restrictions.target.cube.max.z = Infinity;
if (restrictions.target.sphere.radius === null) restrictions.target.sphere.radius = Infinity;
if (restrictions.rotation.minAzimuthAngle === null) restrictions.rotation.minAzimuthAngle = -Infinity;
if (restrictions.rotation.maxAzimuthAngle === null) restrictions.rotation.maxAzimuthAngle = Infinity;
if (restrictions.zoom.maxDistance === null) restrictions.zoom.maxDistance = Infinity;
}

@@ -165,2 +154,34 @@ }

// #endregion Private Methods (1)
}
}
// #endregion Classes (1)
// #region Enums (1)
/**
* Session settings to be used by a viewport.
*
* The {@link https://help.shapediver.com/doc/Geometry-Backend.1863942173.html|ShapeDiver Geometry Backend}
* allows to persist settings of the viewer, individually for each model that it hosts. Persisting the settings
* of the viewer requires permissions which are typically only granted to the owner of the model. Editing
* of the settings typically happens on the model edit page of the ShapeDiver Platform.
*
* Whenever an instance of the viewer creates a session with a model, the settings are made available to the viewer.
* It is possible to use multiple sessions with different models from a single instance of the viewer.
* Therefore the viewer offers a choice on which settings to use.
*/
export enum SESSION_SETTINGS_MODE {
/** No settings of a session will be used for the viewport. */
NONE = 'none',
/**
* The settings of the very first session created will be used for the viewport.
*/
FIRST = 'first',
/**
* Use this mode in case you want to assign a specific session identifier
* to the viewport, whose settings will be used.
*/
MANUAL = 'manual',
}
// #endregion Enums (1)

@@ -1,30 +0,15 @@

import { StatePromise } from './StatePromise'
import { ISessionGlobalAccessObjectDefinition } from './ISessionGlobalAccessObjectDefinition';
import { IViewportGlobalAccessObjectDefinition } from './IViewportGlobalAccessObjectDefinition';
import { StatePromise } from './StatePromise';
export class StateEngine {
// #region Properties (6)
// #region Properties (4)
private readonly _fontLoaded: StatePromise<boolean> = new StatePromise();
private readonly _renderingEngines: {
[key: string]: {
id: string,
initialized: StatePromise<boolean>,
settingsAssigned: StatePromise<boolean>,
environmentMapLoaded: StatePromise<boolean>,
boundingBoxCreated: StatePromise<boolean>,
busy: string[],
update: (id: string) => void
}
} = {};
private readonly _sessionEngines: {
[key: string]: {
id: string,
initialized: StatePromise<boolean>,
initialOutputsLoaded: StatePromise<boolean>,
settingsRegistered: StatePromise<boolean>,
}
} = {};
private readonly _sessionEngines: { [key: string]: ISessionGlobalAccessObjectDefinition } = {};
private readonly _viewportEngines: { [key: string]: IViewportGlobalAccessObjectDefinition } = {};
private static _instance: StateEngine;
// #endregion Properties (6)
// #endregion Properties (4)

@@ -39,3 +24,3 @@ // #region Constructors (1)

// #region Public Static Accessors (1)
// #region Public Static Getters And Setters (1)

@@ -46,5 +31,5 @@ public static get instance() {

// #endregion Public Static Accessors (1)
// #endregion Public Static Getters And Setters (1)
// #region Public Accessors (3)
// #region Public Getters And Setters (3)

@@ -55,28 +40,11 @@ public get fontLoaded(): StatePromise<boolean> {

public get renderingEngines(): {
[key: string]: {
id: string,
initialized: StatePromise<boolean>,
settingsAssigned: StatePromise<boolean>,
environmentMapLoaded: StatePromise<boolean>,
boundingBoxCreated: StatePromise<boolean>,
busy: string[],
update: (id: string) => void
}
} {
return this._renderingEngines;
public get sessionEngines(): { [key: string]: ISessionGlobalAccessObjectDefinition } {
return this._sessionEngines;
}
public get sessionEngines(): {
[key: string]: {
id: string,
initialized: StatePromise<boolean>,
initialOutputsLoaded: StatePromise<boolean>,
settingsRegistered: StatePromise<boolean>,
}
} {
return this._sessionEngines;
public get viewportEngines(): { [key: string]: IViewportGlobalAccessObjectDefinition } {
return this._viewportEngines;
}
// #endregion Public Accessors (3)
}
// #endregion Public Getters And Setters (3)
}

@@ -94,3 +94,3 @@ import UAParser from 'ua-parser-js';

return osName === 'iOS' ||
(window.navigator && window.navigator.maxTouchPoints === 5 && window.navigator.platform === 'MacIntel');
(typeof window !== undefined && window.navigator && window.navigator.maxTouchPoints === 5 && window.navigator.platform === 'MacIntel');
}

@@ -97,0 +97,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc