diff --git a/README.md b/README.md
index a39eb2a..b0b816d 100644
--- a/README.md
+++ b/README.md
@@ -6,17 +6,17 @@ A Node.js control system for Nothing to See Here installation.
NTSH-Control provides centralized control and monitoring of:
-- [Camera Runner](https://git.morphix.nl/Nothing-to-See-Here/NTSH-CameraRunner) process via WebSocket communication
-- Unity application monitoring and lifecycle management
-- Real-time system status and calibration through a web dashboard
+- [Camera Runner](https://git.morphix.nl/Nothing-to-See-Here/NTSH-CameraRunner) process via WebSocket communication
+- Unity application monitoring and lifecycle management
+- Real-time system status and calibration through a web dashboard
## Features
-- **Web Dashboard**: Monitor system status and control components through a browser interface
-- **Camera Management**: Real-time connection monitoring and process control
-- **Unity Integration**: Automatic startup and WebSocket communication with Unity applications
-- **Calibration Tools**: Live image streaming and calibration interface
-- **Process Monitoring**: Track uptime, connection status, and system health
+- **Web Dashboard**: Monitor system status and control components through a browser interface
+- **Camera Management**: Real-time connection monitoring and process control
+- **Unity Integration**: Automatic startup and WebSocket communication with Unity applications
+- **Calibration Tools**: Live image streaming and calibration interface
+- **Process Monitoring**: Track uptime, connection status, and system health
## Installation & Setup
@@ -38,10 +38,10 @@ NTSH-Control provides centralized control and monitoring of:
Configuration is stored in `~/MorphixProductions/NTSHControl/config.json`. Default settings include:
-- Web server port: `6300`
-- Unity WebSocket: `127.0.0.1:3000`
-- [Camera Runner](https://git.morphix.nl/Nothing-to-See-Here/NTSH-CameraRunner) WebSocket: `127.0.0.1:6301`
-- Unity startup delay: `5000ms`
+- Web server port: `6300`
+- Unity WebSocket: `127.0.0.1:3000`
+- [Camera Runner](https://git.morphix.nl/Nothing-to-See-Here/NTSH-CameraRunner) WebSocket: `127.0.0.1:6301`
+- Unity startup delay: `5000ms`
## Usage
@@ -49,6 +49,7 @@ The system automatically starts the web server and attempts to connect to the co
## Project Structure
-- `src/` - TypeScript source code
-- `frontend/views/dashboard/` - Web interface
-- `dist/` - Compiled JavaScript output
+- `src/` - TypeScript source code
+- `frontend/views/dashboard/` - V2 web interface
+- `frontend/views/dashboard/` - Legacy web interface
+- `dist/` - Compiled JavaScript output
diff --git a/TODO.md b/TODO.md
index 4f9fd27..83336ff 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,13 +1,8 @@
-- **SMS Service met log**
-- ✅ Feedback van dataSensor array
-- ✅ dataSliders min/max and unit
-- ✅ Camera before Unity
-- ✅ Restart knop buiten service mode
-- ✅ Operator phonenumber button
-- ✅ Gracefull shutdown
-- ✅ Out of service control
-
-Checken met Sjoerd
-
-- Sliders opslaan
-- Camera error code
+- **SMS Service met log**
+- ✅ Feedback van dataSensor array
+- ✅ dataSliders min/max and unit
+- ✅ Camera before Unity
+- ✅ Restart knop buiten service mode
+- ✅ Operator phonenumber button
+- ✅ Gracefull shutdown
+- ✅ Out of service control
diff --git a/dist/Audio.js b/dist/Audio.js
new file mode 100644
index 0000000..162c51b
--- /dev/null
+++ b/dist/Audio.js
@@ -0,0 +1,132 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.AudioChecker = void 0;
+var fs_extra_1 = require("fs-extra");
+var path_1 = require("path");
+var portAudio = require('naudiodon');
+var PREFIX = '[Audio]';
+var AudioChecker = /** @class */ (function () {
+ function AudioChecker(Main) {
+ this.deviceName = null;
+ this._Main = Main;
+ this.configPath = (0, path_1.join)(this._Main.dataPath, 'audio.json');
+ this.load();
+ }
+ AudioChecker.prototype.waitForDevice = function () {
+ var _a;
+ return __awaiter(this, void 0, void 0, function () {
+ var counter;
+ var _this = this;
+ return __generator(this, function (_b) {
+ if (((_a = this.deviceName) !== null && _a !== void 0 ? _a : '').trim().length == 0) {
+ console.log(PREFIX, 'No audio device configured, skipping audio check. Available devices:');
+ portAudio
+ .getDevices()
+ .filter(function (device) { return device.maxOutputChannels > 0; })
+ .forEach(function (device) {
+ console.log(" - ".concat(device.name));
+ });
+ return [2 /*return*/];
+ }
+ console.log(PREFIX, "Waiting for device \"".concat(this.deviceName, "\"..."));
+ counter = 0;
+ return [2 /*return*/, new Promise(function (resolve) {
+ var c = setInterval(function () {
+ var _a;
+ counter++;
+ var availableDevices = portAudio
+ .getDevices()
+ .filter(function (device) { return device.maxOutputChannels > 0; })
+ .map(function (device) { return device.name; });
+ if (!availableDevices.includes(_this.deviceName)) {
+ if (counter == 3) {
+ console.log(PREFIX, 'Trouble finding the correct device. Available devices:');
+ availableDevices.forEach(function (device) {
+ console.log(" - ".concat(device));
+ });
+ }
+ return;
+ }
+ var hostApis = portAudio.getHostAPIs();
+ var defaultOutputDeviceId = hostApis.HostAPIs[hostApis.defaultHostAPI].defaultOutput;
+ var defaultOutputDeviceName = (_a = portAudio
+ .getDevices()
+ .find(function (device) { return device.id === defaultOutputDeviceId; })) === null || _a === void 0 ? void 0 : _a.name;
+ if (defaultOutputDeviceName !== _this.deviceName) {
+ console.warn(PREFIX, "The configured device \"".concat(_this.deviceName, "\" is not set as the default output device. Please set it as the default output device to ensure proper functionality. Current default output device: \"").concat(defaultOutputDeviceName, "\"."));
+ _this._Main.Twilio.sendError('Audio', "The configured device \"".concat(_this.deviceName, "\" is not set as the default output device. Current default output device: \"").concat(defaultOutputDeviceName, "\"."));
+ return;
+ }
+ clearInterval(c);
+ resolve();
+ console.log(PREFIX, "Device \"".concat(_this.deviceName, "\" is ready!"));
+ }, 1000);
+ })];
+ });
+ });
+ };
+ AudioChecker.prototype.load = function () {
+ console.log(PREFIX, 'Loading audio configuration...');
+ var exists = (0, fs_extra_1.pathExistsSync)(this.configPath);
+ if (!exists)
+ return this.save();
+ var data = (0, fs_extra_1.readJSONSync)(this.configPath);
+ this.deviceName = data.deviceName;
+ };
+ AudioChecker.prototype.save = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var _this = this;
+ return __generator(this, function (_a) {
+ if (this._save)
+ clearTimeout(this._save);
+ this._save = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
+ var _a;
+ return __generator(this, function (_b) {
+ (0, fs_extra_1.writeFile)(this.configPath, JSON.stringify({ deviceName: (_a = this.deviceName) !== null && _a !== void 0 ? _a : null }, null, 4));
+ return [2 /*return*/];
+ });
+ }); }, 1000);
+ return [2 /*return*/];
+ });
+ });
+ };
+ return AudioChecker;
+}());
+exports.AudioChecker = AudioChecker;
+//# sourceMappingURL=Audio.js.map
\ No newline at end of file
diff --git a/dist/Audio.js.map b/dist/Audio.js.map
new file mode 100644
index 0000000..aba68da
--- /dev/null
+++ b/dist/Audio.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Audio.js","sourceRoot":"","sources":["../src/Audio.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/CameraRunner.js b/dist/CameraRunner.js
index 467922c..6814a4f 100644
--- a/dist/CameraRunner.js
+++ b/dist/CameraRunner.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -36,9 +36,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
}
};
Object.defineProperty(exports, "__esModule", { value: true });
-exports.CameraRunner = void 0;
+exports.CameraProcessStateColors = exports.CameraPCStateColors = exports.CameraRunner = void 0;
var socket_io_client_1 = require("socket.io-client");
var Utils_1 = require("./Utils");
+var Status_1 = require("./Status");
var PREFIX = "[CameraRunner]";
var CameraRunner = /** @class */ (function () {
function CameraRunner(Main) {
@@ -93,6 +94,11 @@ var CameraRunner = /** @class */ (function () {
this.message = message;
this.error = error;
this.state = state;
+ this._Main.Status.update(Status_1.StatusType.CameraPC, exports.CameraPCStateColors[this.state], message, {
+ reboot: state === 'FAILED' ||
+ state === 'DISCONNECTED' ||
+ state == 'CONNECTED',
+ });
this.broadcastState();
if (error != null &&
Date.now() - this.bootTime > this.errorTriggerStartupDelay)
@@ -117,6 +123,11 @@ var CameraRunner = /** @class */ (function () {
case 1:
data = _a.sent();
this.processStatus = data;
+ this._Main.Status.update(Status_1.StatusType.CameraProcess, exports.CameraProcessStateColors[this.processStatus.state], this.processStatus.message, {
+ reboot: this.processStatus.state === 'PROBLEM' ||
+ this.processStatus.state === 'STOPPED' ||
+ this.processStatus.state === 'RUNNING',
+ });
this.broadcastState();
return [2 /*return*/];
}
@@ -126,6 +137,11 @@ var CameraRunner = /** @class */ (function () {
_this.processStatus.state = simpleStatus.state;
_this.processStatus.message = simpleStatus.message;
_this.processStatus.error = simpleStatus.error;
+ _this._Main.Status.update(Status_1.StatusType.CameraProcess, exports.CameraProcessStateColors[_this.processStatus.state], _this.processStatus.message, {
+ reboot: _this.processStatus.state === 'PROBLEM' ||
+ _this.processStatus.state === 'STOPPED' ||
+ _this.processStatus.state === 'RUNNING',
+ });
_this.broadcastState();
});
clearInterval(this.pollClock);
@@ -218,4 +234,16 @@ var CameraRunner = /** @class */ (function () {
return CameraRunner;
}());
exports.CameraRunner = CameraRunner;
+exports.CameraPCStateColors = {
+ CONNECTED: Status_1.State.Green,
+ DISCONNECTED: Status_1.State.Gray,
+ CONNECTING: Status_1.State.Yellow,
+ FAILED: Status_1.State.Red,
+};
+exports.CameraProcessStateColors = {
+ RUNNING: Status_1.State.Green,
+ STOPPED: Status_1.State.Gray,
+ STARTING: Status_1.State.Yellow,
+ PROBLEM: Status_1.State.Red,
+};
//# sourceMappingURL=CameraRunner.js.map
\ No newline at end of file
diff --git a/dist/CameraRunner.js.map b/dist/CameraRunner.js.map
index 6098210..ea65bd2 100644
--- a/dist/CameraRunner.js.map
+++ b/dist/CameraRunner.js.map
@@ -1 +1 @@
-{"version":3,"file":"CameraRunner.js","sourceRoot":"","sources":["../src/CameraRunner.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"CameraRunner.js","sourceRoot":"","sources":["../src/CameraRunner.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Configuration/ConfigurationManager.js b/dist/Configuration/ConfigurationManager.js
index 6d15f27..cdd150b 100644
--- a/dist/Configuration/ConfigurationManager.js
+++ b/dist/Configuration/ConfigurationManager.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
diff --git a/dist/Configuration/DefaultConfiguration.js b/dist/Configuration/DefaultConfiguration.js
index 366d543..d592e00 100644
--- a/dist/Configuration/DefaultConfiguration.js
+++ b/dist/Configuration/DefaultConfiguration.js
@@ -21,6 +21,7 @@ exports.DefaultConfiguration = {
},
heartbeatInterval: 1000,
calibrationImageInterval: 2000,
+ launchOnStartup: true,
},
cameraRunner: {
webSocket: {
diff --git a/dist/Configuration/DefaultConfiguration.js.map b/dist/Configuration/DefaultConfiguration.js.map
index b0ef4be..49fbec9 100644
--- a/dist/Configuration/DefaultConfiguration.js.map
+++ b/dist/Configuration/DefaultConfiguration.js.map
@@ -1 +1 @@
-{"version":3,"file":"DefaultConfiguration.js","sourceRoot":"","sources":["../../src/Configuration/DefaultConfiguration.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAW;IAC3C,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;KACV;IACD,MAAM,EAAE;QACP,EAAE,EAAE,EAAE;QACN,cAAc,EAAE,IAAI;KACpB;IACD,KAAK,EAAE;QACN,UAAU,EAAE;YACX,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SAClB;QAED,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;KAC9B;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,EAAE;KACrB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;CACD,CAAC"}
\ No newline at end of file
+{"version":3,"file":"DefaultConfiguration.js","sourceRoot":"","sources":["../../src/Configuration/DefaultConfiguration.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAW;IAC3C,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;KACV;IACD,MAAM,EAAE;QACP,EAAE,EAAE,EAAE;QACN,cAAc,EAAE,IAAI;KACpB;IACD,KAAK,EAAE;QACN,UAAU,EAAE;YACX,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SAClB;QAED,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;QAC9B,eAAe,EAAE,IAAI;KACrB;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,EAAE;KACrB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;CACD,CAAC"}
\ No newline at end of file
diff --git a/dist/Configuration/Timer copy.js b/dist/Configuration/Timer copy.js
new file mode 100644
index 0000000..ad5cb44
--- /dev/null
+++ b/dist/Configuration/Timer copy.js
@@ -0,0 +1,132 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Timer = void 0;
+var path_1 = require("path");
+var fs_extra_1 = require("fs-extra");
+var UnityRunner_1 = require("../Unity/UnityRunner");
+var PREFIX = '[Main]';
+var Timer = /** @class */ (function () {
+ function Timer(Main) {
+ this.start = {
+ hour: null,
+ minute: null,
+ };
+ this.end = {
+ hour: null,
+ minute: null,
+ };
+ this._Main = Main;
+ this.configPath = (0, path_1.join)(this._Main.dataPath, 'timer.json');
+ }
+ Timer.prototype.startClock = function () {
+ var _this = this;
+ setInterval(function () {
+ var startTime = new Date();
+ startTime.setHours(_this.start.hour, _this.start.minute, 0, 0);
+ var endTime = new Date();
+ endTime.setHours(_this.end.hour, _this.end.minute, 0, 0);
+ var shouldBeStarted = startTime <= new Date() && endTime > new Date();
+ if (shouldBeStarted) {
+ if (_this._Main.UnityRunner.state !== 'RUNNING' &&
+ _this._Main.UnityRunner.state !== 'STARTING') {
+ console.log(PREFIX, 'Starting Unity');
+ _this._Main.UnityRunner.start(UnityRunner_1.StartOrigin.Timer);
+ }
+ else if (_this._Main.UnityRunner.startOrigin !== UnityRunner_1.StartOrigin.Timer) {
+ console.log(PREFIX, 'Already running');
+ _this._Main.UnityRunner.startOrigin = UnityRunner_1.StartOrigin.Timer;
+ }
+ }
+ else {
+ if (_this._Main.UnityRunner.state === 'RUNNING' &&
+ _this._Main.UnityRunner.startOrigin === UnityRunner_1.StartOrigin.Timer) {
+ console.log(PREFIX, 'Stopping Unity');
+ _this._Main.UnityRunner.stop();
+ }
+ }
+ }, 5000);
+ };
+ Timer.prototype.load = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var exists, data;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ console.log(PREFIX, 'Loading timer configuration...');
+ return [4 /*yield*/, (0, fs_extra_1.pathExists)(this.configPath)];
+ case 1:
+ exists = _a.sent();
+ if (!exists) {
+ this.save();
+ return [2 /*return*/, this.startClock()];
+ }
+ return [4 /*yield*/, (0, fs_extra_1.readJSON)(this.configPath)];
+ case 2:
+ data = _a.sent();
+ this.start = data.start;
+ this.end = data.end;
+ this.startClock();
+ return [2 /*return*/];
+ }
+ });
+ });
+ };
+ Timer.prototype.save = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var _this = this;
+ return __generator(this, function (_a) {
+ if (this._save)
+ clearTimeout(this._save);
+ this._save = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ (0, fs_extra_1.writeJSON)(this.configPath, {
+ start: this.start,
+ end: this.end,
+ });
+ return [2 /*return*/];
+ });
+ }); }, 1000);
+ return [2 /*return*/];
+ });
+ });
+ };
+ return Timer;
+}());
+exports.Timer = Timer;
+//# sourceMappingURL=Timer%20copy.js.map
\ No newline at end of file
diff --git a/dist/Configuration/Timer copy.js.map b/dist/Configuration/Timer copy.js.map
new file mode 100644
index 0000000..f32cd40
--- /dev/null
+++ b/dist/Configuration/Timer copy.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Timer copy.js","sourceRoot":"","sources":["../../src/Configuration/Timer copy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA4B;AAE5B,qCAA2D;AAC3D,oDAAmD;AAEnD,IAAM,MAAM,GAAG,QAAQ,CAAC;AACxB;IAoBC,eAAY,IAAU;QAfd,UAAK,GAGT;YACH,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACZ,CAAC;QACM,QAAG,GAGP;YACH,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACZ,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,0BAAU,GAAV;QAAA,iBAkCC;QAjCA,WAAW,CAAC;YACX,IAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE7D,IAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,KAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvD,IAAM,eAAe,GACpB,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAEjD,IAAI,eAAe,EAAE,CAAC;gBACrB,IACC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS;oBAC1C,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,UAAU,EAC1C,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACtC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAW,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;qBAAM,IACN,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,yBAAW,CAAC,KAAK,EACvD,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;oBACvC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,yBAAW,CAAC,KAAK,CAAC;gBACxD,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IACC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS;oBAC1C,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,yBAAW,CAAC,KAAK,EACvD,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACtC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC/B,CAAC;YACF,CAAC;QACF,CAAC,EAAE,IAAI,CAAC,CAAC;IACV,CAAC;IAEK,oBAAI,GAAV;;;;;;wBACC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;wBACvC,qBAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wBAA1C,MAAM,GAAG,SAAiC;wBAChD,IAAI,CAAC,MAAM,EAAE,CAAC;4BACb,IAAI,CAAC,IAAI,EAAE,CAAC;4BACZ,sBAAO,IAAI,CAAC,UAAU,EAAE,EAAC;wBAC1B,CAAC;wBAEY,qBAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wBAAtC,IAAI,GAAG,SAA+B;wBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;wBACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;;;;;KAClB;IAGK,oBAAI,GAAV;;;;gBACC,IAAI,IAAI,CAAC,KAAK;oBAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEzC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;;wBACvB,IAAA,oBAAS,EAAC,IAAI,CAAC,UAAU,EAAE;4BAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,GAAG,EAAE,IAAI,CAAC,GAAG;yBACb,CAAC,CAAC;;;qBACH,EAAE,IAAI,CAAC,CAAC;;;;KACT;IACF,YAAC;AAAD,CAAC,AAvFD,IAuFC;AAvFY,sBAAK"}
\ No newline at end of file
diff --git a/dist/Configuration/Timer.js b/dist/Configuration/Timer.js
new file mode 100644
index 0000000..1622a6d
--- /dev/null
+++ b/dist/Configuration/Timer.js
@@ -0,0 +1,145 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Timer = void 0;
+var path_1 = require("path");
+var fs_extra_1 = require("fs-extra");
+var UnityRunner_1 = require("../Unity/UnityRunner");
+var PREFIX = '[Main]';
+var Timer = /** @class */ (function () {
+ function Timer(Main) {
+ this.start = {
+ hour: null,
+ minute: null,
+ };
+ this.end = {
+ hour: null,
+ minute: null,
+ };
+ this._Main = Main;
+ this.configPath = (0, path_1.join)(this._Main.dataPath, 'timer.json');
+ }
+ Timer.prototype.getState = function () {
+ return {
+ start: this.start,
+ end: this.end,
+ };
+ };
+ Timer.prototype.setStart = function (data) {
+ this.start = data;
+ this._Main.WebServer.socket.emit('timer', this.getState());
+ this.save();
+ };
+ Timer.prototype.setEnd = function (data) {
+ this.end = data;
+ this._Main.WebServer.socket.emit('timer', this.getState());
+ this.save();
+ };
+ Timer.prototype.startClock = function () {
+ var _this = this;
+ setInterval(function () {
+ var startTime = new Date();
+ startTime.setHours(_this.start.hour, _this.start.minute, 0, 0);
+ var endTime = new Date();
+ endTime.setHours(_this.end.hour, _this.end.minute, 0, 0);
+ var shouldBeStarted = startTime <= new Date() && endTime > new Date();
+ if (shouldBeStarted) {
+ if (_this._Main.UnityRunner.state !== 'RUNNING' &&
+ _this._Main.UnityRunner.state !== 'STARTING') {
+ console.log(PREFIX, 'Starting Unity');
+ _this._Main.UnityRunner.start(UnityRunner_1.StartOrigin.Timer);
+ }
+ else if (_this._Main.UnityRunner.startOrigin !== UnityRunner_1.StartOrigin.Timer) {
+ console.log(PREFIX, 'Already running');
+ _this._Main.UnityRunner.startOrigin = UnityRunner_1.StartOrigin.Timer;
+ }
+ }
+ else {
+ if (_this._Main.UnityRunner.state === 'RUNNING' &&
+ _this._Main.UnityRunner.startOrigin === UnityRunner_1.StartOrigin.Timer) {
+ console.log(PREFIX, 'Stopping Unity');
+ _this._Main.UnityRunner.stop();
+ }
+ }
+ }, 5000);
+ };
+ Timer.prototype.load = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var exists, data;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ console.log(PREFIX, 'Loading timer configuration...');
+ return [4 /*yield*/, (0, fs_extra_1.pathExists)(this.configPath)];
+ case 1:
+ exists = _a.sent();
+ if (!exists) {
+ this.save();
+ return [2 /*return*/, this.startClock()];
+ }
+ return [4 /*yield*/, (0, fs_extra_1.readJSON)(this.configPath)];
+ case 2:
+ data = _a.sent();
+ this.start = data.start;
+ this.end = data.end;
+ this.startClock();
+ return [2 /*return*/];
+ }
+ });
+ });
+ };
+ Timer.prototype.save = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var _this = this;
+ return __generator(this, function (_a) {
+ if (this._save)
+ clearTimeout(this._save);
+ this._save = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ (0, fs_extra_1.writeFile)(this.configPath, JSON.stringify({ start: this.start, end: this.end }, null, 4));
+ return [2 /*return*/];
+ });
+ }); }, 1000);
+ return [2 /*return*/];
+ });
+ });
+ };
+ return Timer;
+}());
+exports.Timer = Timer;
+//# sourceMappingURL=Timer.js.map
\ No newline at end of file
diff --git a/dist/Configuration/Timer.js.map b/dist/Configuration/Timer.js.map
new file mode 100644
index 0000000..3a494b4
--- /dev/null
+++ b/dist/Configuration/Timer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../src/Configuration/Timer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/ConfigurationManager.js b/dist/ConfigurationManager.js
deleted file mode 100644
index ead3306..0000000
--- a/dist/ConfigurationManager.js
+++ /dev/null
@@ -1,138 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ConfigurationManager = void 0;
-var fs_extra_1 = require("fs-extra");
-var path_1 = require("path");
-var DefaultConfiguration_1 = require("./Defaults/DefaultConfiguration");
-var PREFIX = '[ConfigurationManager]';
-var ConfigurationManager = /** @class */ (function () {
- function ConfigurationManager(Main) {
- this._Main = Main;
- }
- ConfigurationManager.prototype.load = function () {
- return __awaiter(this, void 0, void 0, function () {
- var configPath, configExists, config, _a;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- console.log(PREFIX, 'Loading');
- return [4 /*yield*/, (0, fs_extra_1.ensureDir)((0, path_1.join)(this._Main.dataPath))];
- case 1:
- _b.sent();
- configPath = (0, path_1.join)(this._Main.dataPath, 'config.json');
- return [4 /*yield*/, (0, fs_extra_1.pathExists)(configPath)];
- case 2:
- configExists = _b.sent();
- if (!!configExists) return [3 /*break*/, 4];
- return [4 /*yield*/, (0, fs_extra_1.writeFile)(configPath, JSON.stringify(DefaultConfiguration_1.DefaultConfiguration, null, 4))];
- case 3:
- _b.sent();
- this._Main.Config = DefaultConfiguration_1.DefaultConfiguration;
- console.log(PREFIX, 'Written default configuration');
- return [3 /*break*/, 7];
- case 4: return [4 /*yield*/, (0, fs_extra_1.readJSON)(configPath)];
- case 5:
- config = _b.sent();
- _a = this._Main;
- return [4 /*yield*/, this.validateConfig(config)];
- case 6:
- _a.Config = _b.sent();
- console.log(PREFIX, 'Loaded configuration');
- _b.label = 7;
- case 7: return [2 /*return*/];
- }
- });
- });
- };
- ConfigurationManager.prototype.validateConfig = function (config) {
- return __awaiter(this, void 0, void 0, function () {
- var normalizedConfig, hasChanges, configPath;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- normalizedConfig = this.normalizeConfig(config, DefaultConfiguration_1.DefaultConfiguration);
- hasChanges = JSON.stringify(config) !== JSON.stringify(normalizedConfig);
- if (!hasChanges) return [3 /*break*/, 2];
- this._Main.Config = normalizedConfig;
- configPath = (0, path_1.join)(this._Main.dataPath, 'config.json');
- return [4 /*yield*/, (0, fs_extra_1.writeFile)(configPath, JSON.stringify(normalizedConfig, null, 4))];
- case 1:
- _a.sent();
- console.log(PREFIX, 'Configuration updated and saved');
- _a.label = 2;
- case 2: return [2 /*return*/, normalizedConfig];
- }
- });
- });
- };
- ConfigurationManager.prototype.normalizeConfig = function (current, template) {
- var _this = this;
- if (template === null || template === undefined) {
- return template;
- }
- if (typeof template !== 'object' || Array.isArray(template)) {
- if (current !== null &&
- current !== undefined &&
- typeof current === typeof template) {
- if (Array.isArray(template) && Array.isArray(current)) {
- if (template.length > 0 &&
- typeof template[0] === 'object' &&
- !Array.isArray(template[0])) {
- return current.map(function (item) {
- return _this.normalizeConfig(item, template[0]);
- });
- }
- return current;
- }
- return current;
- }
- return template;
- }
- var result = {};
- for (var key in template) {
- if (template.hasOwnProperty(key)) {
- result[key] = this.normalizeConfig(current === null || current === void 0 ? void 0 : current[key], template[key]);
- }
- }
- return result;
- };
- return ConfigurationManager;
-}());
-exports.ConfigurationManager = ConfigurationManager;
-//# sourceMappingURL=ConfigurationManager.js.map
\ No newline at end of file
diff --git a/dist/ConfigurationManager.js.map b/dist/ConfigurationManager.js.map
deleted file mode 100644
index 1be6b05..0000000
--- a/dist/ConfigurationManager.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"ConfigurationManager.js","sourceRoot":"","sources":["../src/ConfigurationManager.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Main.js b/dist/Main.js
index d1e6096..2b47586 100644
--- a/dist/Main.js
+++ b/dist/Main.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -48,41 +48,57 @@ var Twilio_1 = require("./Twilio");
var Utils_1 = require("./Utils");
var ping = require("ping");
var Shutdown_1 = require("./Shutdown");
+var Timer_1 = require("./Configuration/Timer");
+var Status_1 = require("./Status");
+var Audio_1 = require("./Audio");
var PREFIX = '[Main]';
var Main = /** @class */ (function () {
function Main() {
this.dataPath = (0, path_1.join)((0, os_1.homedir)(), 'MorphixProductions', 'NTSHControl');
this.ConfigurationManager = new ConfigurationManager_1.ConfigurationManager(this);
+ this.Timer = new Timer_1.Timer(this);
+ this.Status = new Status_1.Status(this);
this.WebServer = new WebServer_1.WebServer(this);
this.Twilio = new Twilio_1.TwilioHandler(this);
+ this.Audio = new Audio_1.AudioChecker(this);
this.CameraRunner = new CameraRunner_1.CameraRunner(this);
this.UnityRunner = new UnityRunner_1.UnityRunner(this);
this.UnityWebSocket = new UnityWebSocket_1.UnityWebSocket(this);
}
Main.prototype.start = function () {
+ var _a, _b;
return __awaiter(this, void 0, void 0, function () {
var _this = this;
- var _a;
- return __generator(this, function (_b) {
- switch (_b.label) {
+ return __generator(this, function (_c) {
+ switch (_c.label) {
case 0: return [4 /*yield*/, this.ConfigurationManager.load()];
case 1:
- _b.sent();
+ _c.sent();
return [4 /*yield*/, this.waitForRouter()];
case 2:
- _b.sent();
+ _c.sent();
return [4 /*yield*/, this.WebServer.listen()];
case 3:
- _b.sent();
+ _c.sent();
return [4 /*yield*/, this.Twilio.load()];
case 4:
- _b.sent();
- return [4 /*yield*/, this.CameraRunner.connect()];
+ _c.sent();
+ return [4 /*yield*/, this.Audio.waitForDevice()];
case 5:
- _b.sent();
- setTimeout(function () {
- _this.UnityRunner.start();
- }, (_a = this.Config.unity.executable.startUpDelay) !== null && _a !== void 0 ? _a : 0);
+ _c.sent();
+ return [4 /*yield*/, this.CameraRunner.connect()];
+ case 6:
+ _c.sent();
+ return [4 /*yield*/, this.Timer.load()];
+ case 7:
+ _c.sent();
+ if (((_a = this.Config.unity.launchOnStartup) !== null && _a !== void 0 ? _a : true) === true)
+ setTimeout(function () {
+ _this.UnityRunner.start(UnityRunner_1.StartOrigin.Startup);
+ }, (_b = this.Config.unity.executable.startUpDelay) !== null && _b !== void 0 ? _b : 0);
+ else {
+ this.UnityRunner.setInfo('Not set to launch on startup. Waiting for timer or manual start...', null, 'STOPPED');
+ }
return [2 /*return*/];
}
});
@@ -123,7 +139,7 @@ var Main = /** @class */ (function () {
case 3:
_a.sent();
console.log('Starting UnityRunner...');
- return [4 /*yield*/, this.UnityRunner.start()];
+ return [4 /*yield*/, this.UnityRunner.start(this.UnityRunner.startOrigin)];
case 4:
_a.sent();
console.log('Restart complete.');
@@ -166,25 +182,27 @@ var Main = /** @class */ (function () {
return new Promise(function (resolve) {
var check = function () {
console.log(PREFIX, 'Waiting for router...');
- ping.sys.probe(_this.Config.router.ip, function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
- var alive = _b.alive;
- return __generator(this, function (_c) {
- switch (_c.label) {
- case 0:
- if (!alive) return [3 /*break*/, 2];
- console.log(PREFIX, 'Router is online');
- return [4 /*yield*/, (0, Utils_1.delay)(3000)];
- case 1:
- _c.sent();
- return [2 /*return*/, resolve()];
- case 2: return [4 /*yield*/, (0, Utils_1.delay)(1000)];
- case 3:
- _c.sent();
- check();
- return [2 /*return*/];
- }
+ ping.sys.probe(_this.Config.router.ip, function (_a) {
+ var alive = _a.alive;
+ return __awaiter(_this, void 0, void 0, function () {
+ return __generator(this, function (_b) {
+ switch (_b.label) {
+ case 0:
+ if (!alive) return [3 /*break*/, 2];
+ console.log(PREFIX, 'Router is online');
+ return [4 /*yield*/, (0, Utils_1.delay)(3000)];
+ case 1:
+ _b.sent();
+ return [2 /*return*/, resolve()];
+ case 2: return [4 /*yield*/, (0, Utils_1.delay)(1000)];
+ case 3:
+ _b.sent();
+ check();
+ return [2 /*return*/];
+ }
+ });
});
- }); });
+ });
};
check();
});
diff --git a/dist/Main.js.map b/dist/Main.js.map
index c2e3f18..d2e1359 100644
--- a/dist/Main.js.map
+++ b/dist/Main.js.map
@@ -1 +1 @@
-{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Reboot.js b/dist/Reboot.js
deleted file mode 100644
index 2b87f6a..0000000
--- a/dist/Reboot.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.shutdown = shutdown;
-var child_process_1 = require("child_process");
-function shutdown() {
- if (process.platform === 'win32') {
- return shutdownWindows();
- }
- return Promise.resolve({
- succeed: false,
- message: 'Platform not supported',
- });
-}
-function shutdownWindows() {
- return new Promise(function (resolve, reject) {
- (0, child_process_1.exec)('shutdown /s /t 5', function (error, stdout, stderr) {
- if (error) {
- console.error("Error shutting down Windows: ".concat(error.message));
- return resolve({ succeed: false, message: error.message });
- }
- if (stderr) {
- console.error("Error shutting down Windows: ".concat(stderr));
- return resolve({ succeed: false, message: stderr });
- }
- console.log("Windows shutdown command executed: ".concat(stdout));
- resolve({ succeed: true });
- });
- });
-}
-//# sourceMappingURL=Reboot.js.map
\ No newline at end of file
diff --git a/dist/Reboot.js.map b/dist/Reboot.js.map
deleted file mode 100644
index cb72f7b..0000000
--- a/dist/Reboot.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Reboot.js","sourceRoot":"","sources":["../src/Reboot.ts"],"names":[],"mappings":";;AAEA,4BASC;AAXD,+CAAqC;AAErC,SAAgB,QAAQ;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,wBAAwB;KACjC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,OAAO,CACjB,UAAC,OAAO,EAAE,MAAM;QACf,IAAA,oBAAI,EAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACZ,uCAAgC,KAAK,CAAC,OAAO,CAAE,CAC/C,CAAC;gBACF,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uCAAgC,MAAM,CAAE,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6CAAsC,MAAM,CAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CACD,CAAC;AACH,CAAC"}
\ No newline at end of file
diff --git a/dist/Shutdown.js b/dist/Shutdown.js
index 74bd916..c94e1c8 100644
--- a/dist/Shutdown.js
+++ b/dist/Shutdown.js
@@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.shutdown = shutdown;
+exports.shutdown = void 0;
var child_process_1 = require("child_process");
function shutdown() {
if (process.platform === 'win32') {
@@ -11,6 +11,7 @@ function shutdown() {
message: 'Platform not supported',
});
}
+exports.shutdown = shutdown;
function shutdownWindows() {
return new Promise(function (resolve, reject) {
(0, child_process_1.exec)('shutdown /s /t 5', function (error, stdout, stderr) {
diff --git a/dist/Shutdown.js.map b/dist/Shutdown.js.map
index d383f6f..e7a0a63 100644
--- a/dist/Shutdown.js.map
+++ b/dist/Shutdown.js.map
@@ -1 +1 @@
-{"version":3,"file":"Shutdown.js","sourceRoot":"","sources":["../src/Shutdown.ts"],"names":[],"mappings":";;AAEA,4BASC;AAXD,+CAAqC;AAErC,SAAgB,QAAQ;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,wBAAwB;KACjC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,OAAO,CACjB,UAAC,OAAO,EAAE,MAAM;QACf,IAAA,oBAAI,EAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACZ,uCAAgC,KAAK,CAAC,OAAO,CAAE,CAC/C,CAAC;gBACF,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uCAAgC,MAAM,CAAE,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6CAAsC,MAAM,CAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CACD,CAAC;AACH,CAAC"}
\ No newline at end of file
+{"version":3,"file":"Shutdown.js","sourceRoot":"","sources":["../src/Shutdown.ts"],"names":[],"mappings":";;;AAAA,+CAAqC;AAErC,SAAgB,QAAQ;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,wBAAwB;KACjC,CAAC,CAAC;AACJ,CAAC;AATD,4BASC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,OAAO,CACjB,UAAC,OAAO,EAAE,MAAM;QACf,IAAA,oBAAI,EAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACZ,uCAAgC,KAAK,CAAC,OAAO,CAAE,CAC/C,CAAC;gBACF,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uCAAgC,MAAM,CAAE,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6CAAsC,MAAM,CAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CACD,CAAC;AACH,CAAC"}
\ No newline at end of file
diff --git a/dist/Status.js b/dist/Status.js
new file mode 100644
index 0000000..241a7c1
--- /dev/null
+++ b/dist/Status.js
@@ -0,0 +1,120 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.StatusType = exports.State = exports.Status = void 0;
+var UnityRunner_1 = require("./Unity/UnityRunner");
+var Status = /** @class */ (function () {
+ function Status(Main) {
+ this.states = new Map();
+ this._Main = Main;
+ this.ensure();
+ this.startClock();
+ }
+ Status.prototype.update = function (type, state, message, buttons) {
+ this.states.set(type, { state: state, message: message, buttons: buttons });
+ this._Main.WebServer.socket.emit('status', this.getState());
+ };
+ Status.prototype.reboot = function (type) {
+ switch (type) {
+ case StatusType.CameraPC: {
+ this._Main.CameraRunner.sendCommand('reboot', function (response) {
+ console.log('CameraRunner reboot response:', response);
+ });
+ }
+ case StatusType.CameraProcess: {
+ this._Main.CameraRunner.sendCommand('restart', function (response) {
+ console.log('CameraRunner restart response:', response);
+ });
+ }
+ case StatusType.CameraUnityStream: {
+ this._Main.CameraRunner.sendCommand('restart', function (response) {
+ console.log('CameraRunner restart response:', response);
+ });
+ this._Main.UnityRunner.restart(UnityRunner_1.StartOrigin.Manual);
+ }
+ case StatusType.UnityBuild: {
+ this._Main.UnityRunner.restart(UnityRunner_1.StartOrigin.Manual);
+ }
+ case StatusType.ReplayFunction: {
+ console.log('ReplayFunction reboot requested. Not implemented.');
+ }
+ }
+ };
+ Status.prototype.start = function (type) {
+ switch (type) {
+ case StatusType.UnityBuild: {
+ this._Main.UnityRunner.requestStart(UnityRunner_1.StartOrigin.Manual);
+ }
+ }
+ };
+ Status.prototype.stop = function (type) {
+ switch (type) {
+ case StatusType.UnityBuild: {
+ this._Main.UnityRunner.requestStop();
+ }
+ }
+ };
+ Status.prototype.getState = function () {
+ var state = {};
+ this.states.forEach(function (value, key) {
+ state[key] = value;
+ });
+ return state;
+ };
+ Status.prototype.startClock = function () {
+ var _this = this;
+ var hadInvalidLastRound = false;
+ setInterval(function () {
+ var hasInvalid = false;
+ _this.states.forEach(function (state, key) {
+ if (state.state === State.Red)
+ hasInvalid = true;
+ });
+ if (hasInvalid && !hadInvalidLastRound) {
+ hadInvalidLastRound = true;
+ console.warn('One ore more status entries are invalid, waiting to see if they recover...');
+ }
+ else if (hasInvalid && hadInvalidLastRound) {
+ console.error('One ore more status entries are still invalid after 5 seconds, restarting system.');
+ _this._Main.Twilio.sendError('Status', 'One ore more status entries are still invalid after 5 seconds, restarting system.');
+ _this._Main.restart();
+ }
+ else {
+ _this._Main.Twilio.sendError('Status', null);
+ hadInvalidLastRound = false;
+ }
+ }, 5000);
+ };
+ Status.prototype.ensure = function () {
+ for (var type in StatusType) {
+ if (!this.states.has(StatusType[type]))
+ this.states.set(StatusType[type], {
+ state: State.Gray,
+ message: 'Loading...',
+ });
+ }
+ };
+ Status.prototype.doLog = function () {
+ console.clear();
+ this.states.forEach(function (state, key) {
+ console.log("[".concat(key, "] ").concat(state.state, " - ").concat(state.message));
+ });
+ };
+ return Status;
+}());
+exports.Status = Status;
+var State;
+(function (State) {
+ State["Green"] = "GREEN";
+ State["Yellow"] = "YELLOW";
+ State["Red"] = "RED";
+ State["Gray"] = "GRAY";
+})(State || (exports.State = State = {}));
+var StatusType;
+(function (StatusType) {
+ StatusType["CameraPC"] = "CAMERAPC";
+ StatusType["CameraProcess"] = "CAMERAPROCESS";
+ StatusType["CameraUnityStream"] = "CAMERAUNITYSTREAM";
+ StatusType["UnityBuild"] = "UNITYBUILD";
+ StatusType["ReplayFunction"] = "REPLAYFUNCTION";
+})(StatusType || (exports.StatusType = StatusType = {}));
+//# sourceMappingURL=Status.js.map
\ No newline at end of file
diff --git a/dist/Status.js.map b/dist/Status.js.map
new file mode 100644
index 0000000..8f60a29
--- /dev/null
+++ b/dist/Status.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Status.js","sourceRoot":"","sources":["../src/Status.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Twilio.js b/dist/Twilio.js
index ec13c70..b76df0b 100644
--- a/dist/Twilio.js
+++ b/dist/Twilio.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -148,7 +148,6 @@ var TwilioHandler = /** @class */ (function () {
};
TwilioHandler.prototype.sendMessage = function (to, message) {
var _this = this;
- return;
return new Promise(function (resolve) {
_this.client.messages
.create({
diff --git a/dist/Twilio.js.map b/dist/Twilio.js.map
index 6e6b024..d3600bc 100644
--- a/dist/Twilio.js.map
+++ b/dist/Twilio.js.map
@@ -1 +1 @@
-{"version":3,"file":"Twilio.js","sourceRoot":"","sources":["../src/Twilio.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA4B;AAE5B,qCAA2D;AAE3D,IAAM,MAAM,GAAG,UAAU,CAAC;AAC1B;IAaC,uBAAY,IAAU;QAVtB,YAAO,GAGH;YACH,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC5C,KAAK,EAAE,CAAC;SACR,CAAC;QAyCM,eAAU,GAAkC,IAAI,GAAG,EAAE,CAAC;QACtD,aAAQ,GAAa,EAAE,CAAC;QArC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,sCAAc,GAAd;QACC,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;IACzC,CAAC;IAEK,wCAAgB,GAAtB;;;;;;wBACO,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBACrD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;4BACjC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;4BAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;wBACxB,CAAC;wBACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACrB,qBAAM,IAAA,oBAAS,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAA;;wBAAvE,SAAuE,CAAC;;;;;KACxE;IAEK,4BAAI,GAAV;;;;;;wBACO,gBAAgB,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;wBACvC,qBAAM,IAAA,qBAAU,EAAC,gBAAgB,CAAC,EAAA;;wBAAvD,kBAAkB,GAAG,SAAkC;6BACzD,kBAAkB,EAAlB,wBAAkB;wBACrB,KAAA,IAAI,CAAA;wBAAW,qBAAM,IAAA,mBAAQ,EAAC,gBAAgB,CAAC,EAAA;;wBAA/C,GAAK,OAAO,GAAG,SAAgC,CAAC;;;wBAGjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAClC,CAAC;;;;;KACF;IAEK,kCAAU,GAAhB,UAAiB,QAA0B;;;gBAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,sBAAO;gBAC3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;;;KACjC;IAKK,iCAAS,GAAf,UAAgB,QAA0B,EAAE,KAAa;;;;gBACxD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK;oBAAE,sBAAO;gBAEpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACrC,IAAI,KAAK,IAAI,IAAI;oBAAE,sBAAO;gBAE1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAG,QAAQ,eAAK,KAAK,CAAE,CAAC,CAAC;gBAC5C,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;;;;;;gCACxB,YAAY,GAAG,IAAI,CAAC,QAAQ;qCAChC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,YAAK,KAAK,CAAE,EAAZ,CAAY,CAAC;qCAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;gCACb,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;gCAEnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;oCACzB,sBAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAAC;gCAC5D,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;gCAA7B,SAA6B,CAAC;gCAE9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,YAAY,CAAC,CAAC;gCAEpD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CACtD,UAAC,QAAQ,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAxC,CAAwC,CACtD,CAAC;gCACF,qBAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAA;;gCAA3B,SAA2B,CAAC;;;;qBAC5B,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;;;;KAC9C;IAED,mCAAW,GAAX,UAAY,EAAU,EAAE,OAAe;QAAvC,iBAkBC;QAjBA,OAAO;QACP,OAAO,IAAI,OAAO,CAAU,UAAC,OAAO;YACnC,KAAI,CAAC,MAAM,CAAC,QAAQ;iBAClB,MAAM,CAAC;gBACP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAE;gBAC9C,EAAE,EAAE,EAAE;aACN,CAAC;iBACD,IAAI,CAAC,UAAC,OAAY;gBAClB,OAAO,CAAC,GAAG,CAAC,wCAAiC,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,UAAC,KAAU;gBACjB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,oBAAC;AAAD,CAAC,AAnGD,IAmGC;AAnGY,sCAAa"}
\ No newline at end of file
+{"version":3,"file":"Twilio.js","sourceRoot":"","sources":["../src/Twilio.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Unity/CameraRunner.js b/dist/Unity/CameraRunner.js
deleted file mode 100644
index 2fc125b..0000000
--- a/dist/Unity/CameraRunner.js
+++ /dev/null
@@ -1,214 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CameraRunner = void 0;
-var socket_io_client_1 = require("socket.io-client");
-var Utils_1 = require("../Utils");
-var PREFIX = "[CameraRunner]";
-var CameraRunner = /** @class */ (function () {
- function CameraRunner(Main) {
- this.state = 'DISCONNECTED';
- this.processStatus = {
- state: 'STOPPED',
- startTime: -1,
- output: { current: [], last: [] },
- };
- this._Main = Main;
- }
- CameraRunner.prototype.handle = function (command) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- switch (command) {
- case 'restart':
- case 'reboot':
- var callback = args[0];
- if (typeof callback !== 'function')
- return;
- this.sendCommand(command, callback);
- break;
- }
- };
- CameraRunner.prototype.sendCommand = function (command, callback) {
- if (this.socket == null || !this.socket.connected)
- return callback({
- succeed: false,
- message: 'Not connected to CameraRunner',
- });
- this.socket.emit(command, function (response) {
- callback(response);
- });
- };
- CameraRunner.prototype.broadcastState = function () {
- this._Main.WebServer.socket.emit('cameraRunnerState', this.getState());
- };
- CameraRunner.prototype.getState = function () {
- return {
- state: this.state,
- message: this.message,
- error: this.error,
- processStatus: this.processStatus,
- };
- };
- CameraRunner.prototype.setInfo = function (message, error, state) {
- if (state === void 0) { state = 'FAILED'; }
- this.message = message;
- this.error = error;
- this.state = state;
- this.broadcastState();
- if (state == 'FAILED' || state == 'DISCONNECTED')
- console.warn(PREFIX, message !== null && message !== void 0 ? message : error);
- else
- console.log(PREFIX, message !== null && message !== void 0 ? message : error);
- };
- CameraRunner.prototype.startPollClock = function () {
- var _this = this;
- var poll = function () { return __awaiter(_this, void 0, void 0, function () {
- var data;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, new Promise(function (resolve) {
- _this.socket.emit('getStatus', function (response) {
- return resolve(response);
- });
- })];
- case 1:
- data = _a.sent();
- this.processStatus = data;
- this.broadcastState();
- return [2 /*return*/];
- }
- });
- }); };
- this.socket.on('simpleStatus', function (simpleStatus) {
- _this.processStatus.state = simpleStatus.state;
- _this.processStatus.message = simpleStatus.message;
- _this.processStatus.error = simpleStatus.error;
- _this.broadcastState();
- });
- clearInterval(this.pollClock);
- this.pollClock = setInterval(function () { return poll(); }, this._Main.Config.cameraRunner.pollInterval);
- poll();
- };
- CameraRunner.prototype.reconnect = function () {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- clearInterval(this.pollClock);
- if (this.socket != null) {
- this.socket.disconnect();
- this.socket.close();
- this.socket = null;
- }
- return [4 /*yield*/, (0, Utils_1.delay)(500)];
- case 1:
- _a.sent();
- this.setInfo("Reconnecting to CameraRunner in 5 seconds...", null, 'CONNECTING');
- return [4 /*yield*/, (0, Utils_1.delay)(5000)];
- case 2:
- _a.sent();
- return [4 /*yield*/, this.connect()];
- case 3:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- };
- CameraRunner.prototype.connect = function () {
- return __awaiter(this, void 0, void 0, function () {
- var ip, port;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- this.setInfo('Connecting to CameraRunner', null, 'CONNECTING');
- return [4 /*yield*/, (0, Utils_1.delay)(1000)];
- case 1:
- _a.sent();
- ip = this._Main.Config.cameraRunner.webSocket.ip;
- port = this._Main.Config.cameraRunner.webSocket.port;
- if (ip == null || port == null) {
- return [2 /*return*/, this.setInfo('Connection problem', 'Camera Runner WebSocket IP or port is not configured.')];
- }
- this.socket = (0, socket_io_client_1.io)("ws://".concat(ip, ":").concat(port), {
- reconnectionAttempts: 0,
- reconnectionDelay: 2000,
- });
- this.socket.on('connect', function () {
- _this.setInfo('Connected', null, 'CONNECTED');
- _this.startPollClock();
- });
- this.socket.on('disconnect', function () {
- _this.setInfo('Disconnected', null, 'DISCONNECTED');
- _this.reconnect();
- });
- this.socket.on('reconnect', function () {
- _this.setInfo('Connected (reconnection)', null, 'CONNECTED');
- });
- this.socket.on('connect_error', function (err) {
- _this.setInfo('Connection problem', "Connection error: ".concat(err));
- _this.reconnect();
- });
- this.socket.on('error', function (err) {
- _this.setInfo('Connection problem', "Socket error: ".concat(err));
- _this.reconnect();
- });
- this.socket.on('reconnect_attempt', function () {
- _this.setInfo('Reconnecting', null, 'CONNECTING');
- });
- this.socket.on('reconnect_failed', function () {
- _this.setInfo('Connection problem', 'Reconnection failed');
- _this.reconnect();
- });
- this.socket.on('close', function () {
- _this.setInfo('Disconnected', null, 'DISCONNECTED');
- _this.reconnect();
- });
- return [2 /*return*/];
- }
- });
- });
- };
- return CameraRunner;
-}());
-exports.CameraRunner = CameraRunner;
-//# sourceMappingURL=CameraRunner.js.map
\ No newline at end of file
diff --git a/dist/Unity/CameraRunner.js.map b/dist/Unity/CameraRunner.js.map
deleted file mode 100644
index b7b1474..0000000
--- a/dist/Unity/CameraRunner.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"CameraRunner.js","sourceRoot":"","sources":["../../src/Unity/CameraRunner.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Unity/Unity.js b/dist/Unity/Unity.js
deleted file mode 100644
index 6438c08..0000000
--- a/dist/Unity/Unity.js
+++ /dev/null
@@ -1,117 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Unity = void 0;
-var ws_1 = require("ws");
-var Utils_1 = require("../Utils");
-var PREFIX = '[Unity]';
-var Unity = /** @class */ (function () {
- function Unity(Main) {
- this.state = 'DISCONNECTED';
- this.restartRequested = false;
- this._Main = Main;
- }
- Unity.prototype.broadcastState = function () {
- this._Main.WebServer.socket.emit('unityState', this.getState());
- };
- Unity.prototype.setInfo = function (message, error, state) {
- if (state === void 0) { state = 'FAILED'; }
- this.message = message;
- this.error = error;
- this.state = state;
- this.broadcastState();
- if (state == 'FAILED' || state == 'DISCONNECTED')
- console.warn(PREFIX, message !== null && message !== void 0 ? message : error);
- else
- console.log(PREFIX, message !== null && message !== void 0 ? message : error);
- };
- Unity.prototype.reconnect = function () {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (this.restartRequested)
- return [2 /*return*/];
- this.restartRequested = true;
- if (this.socket != null) {
- this.socket.close();
- this.socket = null;
- }
- return [4 /*yield*/, (0, Utils_1.delay)(500)];
- case 1:
- _a.sent();
- this.setInfo("Reconnecting to Unity in 5 seconds...", null, 'CONNECTING');
- return [4 /*yield*/, (0, Utils_1.delay)(5000)];
- case 2:
- _a.sent();
- return [4 /*yield*/, this.connect()];
- case 3:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- };
- Unity.prototype.connect = function () {
- var _this = this;
- var ws = new ws_1.WebSocket("ws://".concat(this._Main.Config.unity.webSocket.ip, ":").concat(this._Main.Config.unity.webSocket.port));
- ws.on('error', function (error) {
- _this.setInfo('Connection error', "Could not connect: ".concat(error.message), 'FAILED');
- _this.reconnect();
- });
- ws.on('open', function () {
- _this.setInfo('Connected', null, 'CONNECTED');
- });
- ws.on('close', function () {
- if (_this.restartRequested)
- return;
- _this.setInfo('Disconnected', 'Unity was disconnected unexpectedly', 'DISCONNECTED');
- _this.reconnect();
- });
- };
- Unity.prototype.getState = function () {
- return {
- state: this.state,
- message: this.message,
- error: this.error,
- };
- };
- return Unity;
-}());
-exports.Unity = Unity;
-//# sourceMappingURL=Unity.js.map
\ No newline at end of file
diff --git a/dist/Unity/Unity.js.map b/dist/Unity/Unity.js.map
deleted file mode 100644
index 53a07e1..0000000
--- a/dist/Unity/Unity.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"Unity.js","sourceRoot":"","sources":["../../src/Unity/Unity.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Unity/UnityRunner.js b/dist/Unity/UnityRunner.js
index e55d668..f651067 100644
--- a/dist/Unity/UnityRunner.js
+++ b/dist/Unity/UnityRunner.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -45,10 +45,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
-exports.UnityRunner = void 0;
+exports.StartOrigin = exports.UnityBuildStateColors = exports.UnityRunner = void 0;
var fs_extra_1 = require("fs-extra");
var child_process_1 = require("child_process");
var Utils_1 = require("../Utils");
+var Status_1 = require("../Status");
var PREFIX = '[UnityRunner]';
var LOG_OUTPUT = !process.argv.includes('--no-output-log');
var UnityRunner = /** @class */ (function () {
@@ -70,11 +71,11 @@ var UnityRunner = /** @class */ (function () {
return;
switch (command) {
case 'restart':
- return callback(this.requestRestart());
+ return callback(this.requestRestart(StartOrigin.Manual));
case 'stop':
return callback(this.requestStop());
case 'start':
- return callback(this.requestStart());
+ return callback(this.requestStart(StartOrigin.Manual));
}
};
UnityRunner.prototype.startStatusClock = function () {
@@ -84,13 +85,13 @@ var UnityRunner = /** @class */ (function () {
_this.broadcastState();
}, 3000);
};
- UnityRunner.prototype.requestRestart = function () {
+ UnityRunner.prototype.requestRestart = function (startOrigin) {
if (this.state !== 'RUNNING')
return {
succeed: false,
message: 'Cannot restart when process is not running. It is probably restarting already.',
};
- this.restart(true);
+ this.restart(startOrigin, true);
return { succeed: true };
};
UnityRunner.prototype.requestStop = function () {
@@ -102,23 +103,29 @@ var UnityRunner = /** @class */ (function () {
this.stop();
return { succeed: true };
};
- UnityRunner.prototype.requestStart = function () {
+ UnityRunner.prototype.requestStart = function (startOrigin) {
if (this.state !== 'STOPPED')
return {
succeed: false,
message: 'Cannot start when process is already running.',
};
- this.start();
+ this.start(startOrigin);
return { succeed: true };
};
UnityRunner.prototype.broadcastState = function () {
this._Main.WebServer.socket.emit('unityRunnerState', this.getStatus());
};
UnityRunner.prototype.setInfo = function (message, error, state) {
+ var _a;
if (state === void 0) { state = 'PROBLEM'; }
this.message = message;
this.error = error;
this.state = state;
+ this._Main.Status.update(Status_1.StatusType.UnityBuild, exports.UnityBuildStateColors[state], (_a = message !== null && message !== void 0 ? message : error) !== null && _a !== void 0 ? _a : '', {
+ reboot: state === 'PROBLEM' || state === 'RUNNING',
+ start: state === 'STOPPED',
+ stop: state === 'RUNNING',
+ });
this.broadcastState();
if (error != null)
this._Main.Twilio.sendError('UnityRunner', error);
@@ -174,9 +181,9 @@ var UnityRunner = /** @class */ (function () {
});
});
};
- UnityRunner.prototype.restart = function () {
- return __awaiter(this, arguments, void 0, function (instant) {
- if (instant === void 0) { instant = false; }
+ UnityRunner.prototype.restart = function (origin, instant) {
+ if (instant === void 0) { instant = false; }
+ return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
@@ -186,6 +193,7 @@ var UnityRunner = /** @class */ (function () {
this._Main.WebServer.Calibration.hasCalibrationImage = false;
clearInterval(this.statusClock);
this.startTime = -1;
+ this.startOrigin = null;
this.broadcastState();
if (!!instant) return [3 /*break*/, 2];
return [4 /*yield*/, (0, Utils_1.delay)(2000)];
@@ -216,7 +224,7 @@ var UnityRunner = /** @class */ (function () {
case 7:
_a.sent();
_a.label = 8;
- case 8: return [4 /*yield*/, this.start()];
+ case 8: return [4 /*yield*/, this.start(this.startOrigin)];
case 9:
_a.sent();
return [2 /*return*/];
@@ -224,11 +232,11 @@ var UnityRunner = /** @class */ (function () {
});
});
};
- UnityRunner.prototype.start = function () {
+ UnityRunner.prototype.start = function (origin) {
+ var _a, _b, _c;
return __awaiter(this, void 0, void 0, function () {
var path, fileName;
var _this = this;
- var _a, _b, _c;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
@@ -285,11 +293,11 @@ var UnityRunner = /** @class */ (function () {
if (_this.restartTriggered)
return;
_this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'PROBLEM');
- _this.restart();
+ _this.restart(_this.startOrigin);
});
this.process.on('error', function (err) {
_this.setInfo('Process error', err.message);
- _this.restart();
+ _this.restart(_this.startOrigin);
});
(_b = this.process.stdout) === null || _b === void 0 ? void 0 : _b.on('data', function (data) {
var lines = data
@@ -317,6 +325,7 @@ var UnityRunner = /** @class */ (function () {
_this.output.current.push(formattedLine);
});
});
+ this.startOrigin = origin;
this.startStatusClock();
setTimeout(function () {
var _a, _b;
@@ -346,4 +355,23 @@ var UnityRunner = /** @class */ (function () {
return UnityRunner;
}());
exports.UnityRunner = UnityRunner;
+var State;
+(function (State) {
+ State["Green"] = "GREEN";
+ State["Yellow"] = "YELLOW";
+ State["Red"] = "RED";
+ State["Gray"] = "GRAY";
+})(State || (State = {}));
+exports.UnityBuildStateColors = {
+ RUNNING: State.Green,
+ STOPPED: State.Gray,
+ STARTING: State.Yellow,
+ PROBLEM: State.Red,
+};
+var StartOrigin;
+(function (StartOrigin) {
+ StartOrigin["Timer"] = "TIMER";
+ StartOrigin["Manual"] = "MANUAL";
+ StartOrigin["Startup"] = "STARTUP";
+})(StartOrigin || (exports.StartOrigin = StartOrigin = {}));
//# sourceMappingURL=UnityRunner.js.map
\ No newline at end of file
diff --git a/dist/Unity/UnityRunner.js.map b/dist/Unity/UnityRunner.js.map
index f5bc163..c29a734 100644
--- a/dist/Unity/UnityRunner.js.map
+++ b/dist/Unity/UnityRunner.js.map
@@ -1 +1 @@
-{"version":3,"file":"UnityRunner.js","sourceRoot":"","sources":["../../src/Unity/UnityRunner.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"UnityRunner.js","sourceRoot":"","sources":["../../src/Unity/UnityRunner.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Unity/UnityWebSocket.js b/dist/Unity/UnityWebSocket.js
index 3ab7041..66db478 100644
--- a/dist/Unity/UnityWebSocket.js
+++ b/dist/Unity/UnityWebSocket.js
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -47,9 +47,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
}
};
Object.defineProperty(exports, "__esModule", { value: true });
-exports.UnityWebSocket = void 0;
+exports.CameraUnityStateColors = exports.UnityWebSocket = void 0;
var ws_1 = require("ws");
var Utils_1 = require("../Utils");
+var Status_1 = require("../Status");
var PREFIX = '[Unity]';
var UnityWebSocket = /** @class */ (function () {
function UnityWebSocket(Main) {
@@ -71,6 +72,7 @@ var UnityWebSocket = /** @class */ (function () {
this.disconnected = false;
this.restartRequested = false;
this._Main = Main;
+ this.updateStatus();
}
UnityWebSocket.prototype.handle = function (command) {
var args = [];
@@ -150,11 +152,27 @@ var UnityWebSocket = /** @class */ (function () {
UnityWebSocket.prototype.broadcastState = function () {
this._Main.WebServer.socket.emit('unityWebSocketState', this.getState());
};
+ UnityWebSocket.prototype.updateStatus = function () {
+ if (this.state != 'CONNECTED') {
+ this._Main.Status.update(Status_1.StatusType.CameraUnityStream, exports.CameraUnityStateColors[this.state], this.message, {
+ reboot: this.state === 'FAILED',
+ });
+ }
+ else {
+ var status_1 = !this.parameters.zedReady
+ ? 'Waiting for ZED stream'
+ : this.message;
+ this._Main.Status.update(Status_1.StatusType.CameraUnityStream, this.parameters.zedReady ? Status_1.State.Green : Status_1.State.Yellow, status_1, {
+ reboot: this.parameters.zedReady,
+ });
+ }
+ };
UnityWebSocket.prototype.setInfo = function (message, error, state) {
if (state === void 0) { state = 'FAILED'; }
this.message = message;
this.error = error;
this.state = state;
+ this.updateStatus();
this.broadcastState();
if (error != null)
this._Main.Twilio.sendError('UnityWebSocket', error);
@@ -204,6 +222,7 @@ var UnityWebSocket = /** @class */ (function () {
? 2
: null });
});
+ this.updateStatus();
this.broadcastState();
break;
case 'response_camera_frame':
@@ -302,7 +321,10 @@ var UnityWebSocket = /** @class */ (function () {
};
UnityWebSocket.prototype.startFetchClocks = function () {
var _this = this;
- this.socket.send(JSON.stringify({ type: 'set_heartbeat_auto_send', autoSend: false }));
+ this.socket.send(JSON.stringify({
+ type: 'set_heartbeat_auto_send',
+ autoSend: false,
+ }));
this.heartbeatClock = setInterval(function () {
if (_this.socket == null ||
_this.socket.readyState !== ws_1.WebSocket.OPEN)
@@ -327,4 +349,10 @@ var UnityWebSocket = /** @class */ (function () {
return UnityWebSocket;
}());
exports.UnityWebSocket = UnityWebSocket;
+exports.CameraUnityStateColors = {
+ CONNECTED: Status_1.State.Green,
+ DISCONNECTED: Status_1.State.Gray,
+ CONNECTING: Status_1.State.Yellow,
+ FAILED: Status_1.State.Red,
+};
//# sourceMappingURL=UnityWebSocket.js.map
\ No newline at end of file
diff --git a/dist/Unity/UnityWebSocket.js.map b/dist/Unity/UnityWebSocket.js.map
index 53d38b9..91c7e06 100644
--- a/dist/Unity/UnityWebSocket.js.map
+++ b/dist/Unity/UnityWebSocket.js.map
@@ -1 +1 @@
-{"version":3,"file":"UnityWebSocket.js","sourceRoot":"","sources":["../../src/Unity/UnityWebSocket.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"UnityWebSocket.js","sourceRoot":"","sources":["../../src/Unity/UnityWebSocket.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/UnityRunner.js b/dist/UnityRunner.js
deleted file mode 100644
index 882f9f7..0000000
--- a/dist/UnityRunner.js
+++ /dev/null
@@ -1,207 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.UnityRunner = void 0;
-var fs_extra_1 = require("fs-extra");
-var child_process_1 = require("child_process");
-var Utils_1 = require("./Utils");
-var PREFIX = '[UnityRunner]';
-var LOG_OUTPUT = !process.argv.includes('--no-output-log');
-var UnityRunner = /** @class */ (function () {
- function UnityRunner(Main) {
- this.state = 'STOPPED';
- this.startTime = null;
- this.output = { current: [], last: [] };
- this.restartTriggered = false;
- this._Main = Main;
- }
- UnityRunner.prototype.requestRestart = function () {
- if (this.state !== 'RUNNING')
- return {
- succeed: false,
- message: 'Cannot restart when process is not running. It is probably restarting already.',
- };
- this.restart(true);
- return { succeed: true };
- };
- UnityRunner.prototype.broadcastState = function () {
- this._Main.WebServer.socket.emit('unityRunnerState', this.getStatus());
- };
- UnityRunner.prototype.setInfo = function (message, error, state) {
- if (state === void 0) { state = 'PROBLEM'; }
- this.message = message;
- this.error = error;
- this.state = state;
- this.broadcastState();
- this.output.current.push("[".concat(new Date().toLocaleTimeString('nl-NL'), "] [System] [").concat(state, "] ").concat(message !== null && message !== void 0 ? message : error));
- if (state == 'PROBLEM' || state == 'STOPPED')
- console.warn(PREFIX, message !== null && message !== void 0 ? message : error);
- else
- console.log(PREFIX, message !== null && message !== void 0 ? message : error);
- };
- UnityRunner.prototype.restart = function () {
- return __awaiter(this, arguments, void 0, function (instant) {
- if (instant === void 0) { instant = false; }
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (this.restartTriggered)
- return [2 /*return*/];
- if (this.output.current.length > 0) {
- this.output.last = __spreadArray([], this.output.current, true);
- this.output.current = [];
- }
- this.restartTriggered = true;
- this.startTime = -1;
- this.broadcastState();
- if (instant)
- this.setInfo('Process will restart shortly...', null, 'STOPPED');
- if (!(this.process != null)) return [3 /*break*/, 2];
- this.process.kill('SIGTERM');
- return [4 /*yield*/, (0, Utils_1.delay)(3000)];
- case 1:
- _a.sent();
- if (!this.process.killed && this.process.exitCode === null) {
- this.process.kill('SIGKILL');
- console.log(PREFIX, 'Sent SIGKILL to process.');
- }
- _a.label = 2;
- case 2:
- this.startTime = -1;
- if (!!instant) return [3 /*break*/, 4];
- this.setInfo("Restarting process in 5 seconds...", null, 'STOPPED');
- return [4 /*yield*/, (0, Utils_1.delay)(5000)];
- case 3:
- _a.sent();
- _a.label = 4;
- case 4: return [4 /*yield*/, this.start()];
- case 5:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- };
- UnityRunner.prototype.start = function () {
- var _this = this;
- var _a, _b;
- if (this.output.current.length > 0) {
- this.output.last = __spreadArray([], this.output.current, true);
- this.output.current = [];
- }
- this.startTime = Date.now();
- this.restartTriggered = false;
- this.broadcastState();
- var path = this._Main.Config.unity.executable.path;
- if (path == null || !(0, fs_extra_1.pathExistsSync)(path)) {
- this.setInfo('Executable problem', "Executable path is not set or does not exist: ".concat(path));
- return;
- }
- var fileName = path.split(/(\/|\\)/).pop();
- this.setInfo("Starting executable: ".concat(fileName), null, 'STARTING');
- this.process = (0, child_process_1.spawn)(path, this._Main.Config.unity.executable.arguments, {
- stdio: 'pipe',
- });
- this.process.on('exit', function (code, signal) {
- if (_this.restartTriggered)
- return;
- _this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'STOPPED');
- _this.restart();
- });
- this.process.on('error', function (err) {
- _this.setInfo('Process error', err.message);
- _this.restart();
- });
- (_a = this.process.stdout) === null || _a === void 0 ? void 0 : _a.on('data', function (data) {
- var lines = data
- .toString()
- .trim()
- .split('\n')
- .filter(function (line) { return line.length > 0; });
- lines.forEach(function (line) {
- var formattedLine = "[".concat(new Date().toLocaleTimeString('nl-NL'), "] [").concat(fileName, "] ").concat(line);
- if (LOG_OUTPUT)
- console.log(PREFIX, formattedLine);
- _this.output.current.push(formattedLine);
- });
- });
- (_b = this.process.stderr) === null || _b === void 0 ? void 0 : _b.on('data', function (data) {
- var lines = data
- .toString()
- .trim()
- .split('\n')
- .filter(function (line) { return line.length > 0; });
- lines.forEach(function (line) {
- var formattedLine = "[".concat(new Date().toLocaleTimeString('nl-NL'), "] [").concat(fileName, "] [ERROR] ").concat(line);
- if (LOG_OUTPUT)
- console.error(PREFIX, formattedLine);
- _this.output.current.push(formattedLine);
- });
- });
- setTimeout(function () {
- var _a, _b;
- if (_this.process == null ||
- ((_a = _this.process) === null || _a === void 0 ? void 0 : _a.killed) ||
- ((_b = _this.process) === null || _b === void 0 ? void 0 : _b.exitCode) != null ||
- _this.restartTriggered)
- return;
- _this.setInfo('Running', '', 'RUNNING');
- }, 5000);
- };
- UnityRunner.prototype.getStatus = function () {
- return {
- state: this.state,
- message: this.message,
- error: this.error,
- startTime: this.startTime,
- output: this.output,
- };
- };
- return UnityRunner;
-}());
-exports.UnityRunner = UnityRunner;
-//# sourceMappingURL=UnityRunner.js.map
\ No newline at end of file
diff --git a/dist/UnityRunner.js.map b/dist/UnityRunner.js.map
deleted file mode 100644
index ea9f62e..0000000
--- a/dist/UnityRunner.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"UnityRunner.js","sourceRoot":"","sources":["../src/UnityRunner.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/Utils.js b/dist/Utils.js
index f995540..0e675c4 100644
--- a/dist/Utils.js
+++ b/dist/Utils.js
@@ -1,7 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.delay = delay;
+exports.delay = void 0;
function delay(duration) {
return new Promise(function (resolve) { return setTimeout(resolve, duration); });
}
+exports.delay = delay;
//# sourceMappingURL=Utils.js.map
\ No newline at end of file
diff --git a/dist/Utils.js.map b/dist/Utils.js.map
index cd36e95..4c90012 100644
--- a/dist/Utils.js.map
+++ b/dist/Utils.js.map
@@ -1 +1 @@
-{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;AAMA,sBAEC;AAFD,SAAgB,KAAK,CAAC,QAAgB;IACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAChE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;;AAMA,SAAgB,KAAK,CAAC,QAAgB;IACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAChE,CAAC;AAFD,sBAEC"}
\ No newline at end of file
diff --git a/dist/WebServer.js b/dist/WebServer.js
deleted file mode 100644
index 8eeefac..0000000
--- a/dist/WebServer.js
+++ /dev/null
@@ -1,31 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.WebServer = void 0;
-var express = require("express");
-var socket_io_1 = require("socket.io");
-var http_1 = require("http");
-var PREFIX = '[WebServer]';
-var WebServer = /** @class */ (function () {
- function WebServer(Main) {
- this._Main = Main;
- this.prepare();
- }
- WebServer.prototype.prepare = function () {
- this.app = express();
- this.httpServer = (0, http_1.createServer)(this.app);
- this.socket = new socket_io_1.Server(this.httpServer);
- };
- WebServer.prototype.listen = function () {
- var _this = this;
- return new Promise(function (resolve) {
- var port = _this._Main.Config.webServer.port;
- _this.httpServer.listen(port, function () {
- console.log(PREFIX, "Listening on port http://127.0.0.1:".concat(port));
- resolve();
- });
- });
- };
- return WebServer;
-}());
-exports.WebServer = WebServer;
-//# sourceMappingURL=WebServer.js.map
\ No newline at end of file
diff --git a/dist/WebServer.js.map b/dist/WebServer.js.map
deleted file mode 100644
index f42f2be..0000000
--- a/dist/WebServer.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../src/WebServer.ts"],"names":[],"mappings":";;;AACA,iCAAmC;AACnC,uCAAqD;AACrD,6BAA0D;AAG1D,IAAM,MAAM,GAAG,aAAa,CAAC;AAC7B;IAOC,mBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAEO,2BAAO,GAAf;QACC,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAY,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,0BAAM,GAAN;QAAA,iBAWC;QAVA,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO;YAChC,IAAM,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9C,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC5B,OAAO,CAAC,GAAG,CACV,MAAM,EACN,6CAAsC,IAAI,CAAE,CAC5C,CAAC;gBACF,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,gBAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,8BAAS"}
\ No newline at end of file
diff --git a/dist/WebServer/CalibrationRouter.js b/dist/WebServer/CalibrationRouter.js
index 1a795eb..07ded8c 100644
--- a/dist/WebServer/CalibrationRouter.js
+++ b/dist/WebServer/CalibrationRouter.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
diff --git a/dist/WebServer/DahboardRouter.js b/dist/WebServer/ControlRouter.js
similarity index 86%
rename from dist/WebServer/DahboardRouter.js
rename to dist/WebServer/ControlRouter.js
index 9272a90..39394ef 100644
--- a/dist/WebServer/DahboardRouter.js
+++ b/dist/WebServer/ControlRouter.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -36,22 +36,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
}
};
Object.defineProperty(exports, "__esModule", { value: true });
-exports.DashboardRouter = void 0;
+exports.ControlRouter = void 0;
var express_1 = require("express");
var path_1 = require("path");
var fs_extra_1 = require("fs-extra");
-var DashboardRouter = /** @class */ (function () {
- function DashboardRouter(Main) {
+var ControlRouter = /** @class */ (function () {
+ function ControlRouter(Main) {
this._Main = Main;
this.Router = (0, express_1.Router)();
- this.path = (0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'views', 'dashboard');
+ this.path = (0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'views', 'control');
this.registerRoutes();
}
- DashboardRouter.prototype.registerRoutes = function () {
+ ControlRouter.prototype.registerRoutes = function () {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
- this.Router.get(['/', '/dashboard'], function (req, res) { return __awaiter(_this, void 0, void 0, function () {
+ this.Router.get('/', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
var htmlContent;
return __generator(this, function (_a) {
switch (_a.label) {
@@ -94,7 +94,7 @@ var DashboardRouter = /** @class */ (function () {
});
});
};
- return DashboardRouter;
+ return ControlRouter;
}());
-exports.DashboardRouter = DashboardRouter;
-//# sourceMappingURL=DahboardRouter.js.map
\ No newline at end of file
+exports.ControlRouter = ControlRouter;
+//# sourceMappingURL=ControlRouter.js.map
\ No newline at end of file
diff --git a/dist/WebServer/ControlRouter.js.map b/dist/WebServer/ControlRouter.js.map
new file mode 100644
index 0000000..3f9c48d
--- /dev/null
+++ b/dist/WebServer/ControlRouter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ControlRouter.js","sourceRoot":"","sources":["../../src/WebServer/ControlRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,uBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,SAAS,CACT,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,sCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACf,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAA;;gCAA3D,WAAW,GAAG,SAA6C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACvB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACtB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,oBAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,sCAAa"}
\ No newline at end of file
diff --git a/dist/WebServer/DahboardRouter.js.map b/dist/WebServer/DahboardRouter.js.map
deleted file mode 100644
index 64b8def..0000000
--- a/dist/WebServer/DahboardRouter.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"DahboardRouter.js","sourceRoot":"","sources":["../../src/WebServer/DahboardRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,yBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,wCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCAC/B,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAA;;gCAA3D,WAAW,GAAG,SAA6C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACvB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACtB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,sBAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,0CAAe"}
\ No newline at end of file
diff --git a/dist/WebServer/DashboardRouter.js b/dist/WebServer/DashboardRouter.js
index 53eb9ec..468beb4 100644
--- a/dist/WebServer/DashboardRouter.js
+++ b/dist/WebServer/DashboardRouter.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -51,7 +51,7 @@ var DashboardRouter = /** @class */ (function () {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
- this.Router.get(['/', '/dashboard', '/calibration', '/cameralogs', '/unitylogs'], function (req, res) { return __awaiter(_this, void 0, void 0, function () {
+ this.Router.get(['/dashboard', '/calibration', '/cameralogs', '/unitylogs'], function (req, res) { return __awaiter(_this, void 0, void 0, function () {
var htmlContent;
return __generator(this, function (_a) {
switch (_a.label) {
@@ -64,7 +64,7 @@ var DashboardRouter = /** @class */ (function () {
}
});
}); });
- this.Router.get('/style.css', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
+ this.Router.get('/dashboard/style.css', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
var styleContent;
return __generator(this, function (_a) {
switch (_a.label) {
@@ -77,7 +77,7 @@ var DashboardRouter = /** @class */ (function () {
}
});
}); });
- this.Router.get('/script.js', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
+ this.Router.get('/dashboard/script.js', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
var scriptContent;
return __generator(this, function (_a) {
switch (_a.label) {
diff --git a/dist/WebServer/DashboardRouter.js.map b/dist/WebServer/DashboardRouter.js.map
index b7505c9..f081865 100644
--- a/dist/WebServer/DashboardRouter.js.map
+++ b/dist/WebServer/DashboardRouter.js.map
@@ -1 +1 @@
-{"version":3,"file":"DashboardRouter.js","sourceRoot":"","sources":["../../src/WebServer/DashboardRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,yBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,wCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,CAAC,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,EAChE,UAAO,GAAG,EAAE,GAAG;;;;oCACM,qBAAM,IAAA,mBAAQ,EACjC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAC7B,EAAA;;gCAFK,WAAW,GAAG,SAEnB;gCACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CACD,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACvB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACtB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,sBAAC;AAAD,CAAC,AA7CD,IA6CC;AA7CY,0CAAe"}
\ No newline at end of file
+{"version":3,"file":"DashboardRouter.js","sourceRoot":"","sources":["../../src/WebServer/DashboardRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,yBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,wCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,EAC3D,UAAO,GAAG,EAAE,GAAG;;;;oCACM,qBAAM,IAAA,mBAAQ,EACjC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAC7B,EAAA;;gCAFK,WAAW,GAAG,SAEnB;gCACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CACD,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACjC,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCAChC,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,sBAAC;AAAD,CAAC,AA7CD,IA6CC;AA7CY,0CAAe"}
\ No newline at end of file
diff --git a/dist/WebServer/WebServer.js b/dist/WebServer/WebServer.js
index dde9217..ac75f58 100644
--- a/dist/WebServer/WebServer.js
+++ b/dist/WebServer/WebServer.js
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
@@ -53,12 +53,14 @@ var DashboardRouter_1 = require("./DashboardRouter");
var path_1 = require("path");
var CalibrationRouter_1 = require("./CalibrationRouter");
var Utils_1 = require("../Utils");
+var ControlRouter_1 = require("./ControlRouter");
var PREFIX = '[WebServer]';
var WebServer = /** @class */ (function () {
function WebServer(Main) {
this._Main = Main;
this.Dashboard = new DashboardRouter_1.DashboardRouter(this._Main);
this.Calibration = new CalibrationRouter_1.CalibrationRouter(this._Main);
+ this.Control = new ControlRouter_1.ControlRouter(this._Main);
this.prepare();
}
WebServer.prototype.prepare = function () {
@@ -68,8 +70,11 @@ var WebServer = /** @class */ (function () {
this.socket = new socket_io_1.Server(this.httpServer);
this.app.use(express.static((0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'static')));
this.app.use(this.Dashboard.Router);
+ this.app.use(this.Control.Router);
this.app.use(this.Calibration.Router);
this.socket.on('connection', function (socket) {
+ socket.emit('status', _this._Main.Status.getState());
+ socket.emit('timer', _this._Main.Timer.getState());
socket.emit('cameraRunnerState', _this._Main.CameraRunner.getState());
socket.emit('unityRunnerState', _this._Main.UnityRunner.getStatus());
socket.emit('unityWebSocketState', _this._Main.UnityWebSocket.getState());
@@ -119,6 +124,24 @@ var WebServer = /** @class */ (function () {
}
return (_a = _this._Main.UnityWebSocket).handle.apply(_a, __spreadArray([command], args, false));
});
+ socket.on('status', function (action, type) {
+ switch (action) {
+ case 'fullreboot':
+ return _this._Main.restart();
+ case 'reboot':
+ return _this._Main.Status.reboot(type);
+ case 'start':
+ return _this._Main.Status.start(type);
+ case 'stop':
+ return _this._Main.Status.stop(type);
+ }
+ });
+ socket.on('setTimerStart', function (data) {
+ _this._Main.Timer.setStart(data);
+ });
+ socket.on('setTimerEnd', function (data) {
+ _this._Main.Timer.setEnd(data);
+ });
});
};
WebServer.prototype.listen = function () {
diff --git a/dist/WebServer/WebServer.js.map b/dist/WebServer/WebServer.js.map
index a18d530..1494bd9 100644
--- a/dist/WebServer/WebServer.js.map
+++ b/dist/WebServer/WebServer.js.map
@@ -1 +1 @@
-{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/WebServer/WebServer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iCAAmC;AACnC,uCAAqD;AACrD,6BAA0D;AAE1D,qDAAoD;AACpD,6BAA4B;AAC5B,yDAAwD;AACxD,kCAAiC;AAEjC,IAAM,MAAM,GAAG,aAAa,CAAC;AAC7B;IAUC,mBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,iCAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAEO,2BAAO,GAAf;QAAA,iBAwEC;QAvEA,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAY,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,CAAC,GAAG,CAAC,GAAG,CACX,OAAO,CAAC,MAAM,CACb,IAAA,WAAI,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CACxD,CACD,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,UAAC,MAAM;YACnC,MAAM,CAAC,IAAI,CACV,mBAAmB,EACnB,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAClC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,IAAI,CACV,qBAAqB,EACrB,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CACpC,CAAC;YACF,MAAM,CAAC,IAAI,CACV,eAAe,EACf,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CACpD,CAAC;YAEF,MAAM,CAAC,EAAE,CACR,qBAAqB,EACrB,UACC,QAGU;gBAEV,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW;oBAChD,OAAO,QAAQ,CAAC;wBACf,OAAO,EAAE,KAAK;wBACd,OAAO,EACN,0DAA0D;qBAC3D,CAAC,CAAC;gBAEJ,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACrB,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC,CACD,CAAC;YAEF,MAAM,CAAC,EAAE,CACR,sBAAsB,EACtB,UACC,QAGU;;;gCAEV,qBAAM,IAAA,aAAK,EAAC,IAAI,CAAC,EAAA;;4BAAjB,SAAiB,CAAC;4BAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;;;iBACtB,CACD,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,OAAe;;gBAAE,cAAc;qBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;oBAAd,6BAAc;;gBACzD,OAAA,CAAA,KAAA,KAAI,CAAC,KAAK,CAAC,YAAY,CAAA,CAAC,MAAM,0BAAC,OAAO,GAAK,IAAI;YAA/C,CAAgD,CAChD,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,UAAC,OAAe;;gBAAE,cAAc;qBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;oBAAd,6BAAc;;gBACxD,OAAA,CAAA,KAAA,KAAI,CAAC,KAAK,CAAC,WAAW,CAAA,CAAC,MAAM,0BAAC,OAAO,GAAK,IAAI;YAA9C,CAA+C,CAC/C,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAC,OAAe;;gBAAE,cAAc;qBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;oBAAd,6BAAc;;gBAC3D,OAAA,CAAA,KAAA,KAAI,CAAC,KAAK,CAAC,cAAc,CAAA,CAAC,MAAM,0BAAC,OAAO,GAAK,IAAI;YAAjD,CAAkD,CAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,0BAAM,GAAN;QAAA,iBAWC;QAVA,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO;YAChC,IAAM,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9C,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC5B,OAAO,CAAC,GAAG,CACV,MAAM,EACN,6CAAsC,IAAI,CAAE,CAC5C,CAAC;gBACF,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,gBAAC;AAAD,CAAC,AAxGD,IAwGC;AAxGY,8BAAS"}
\ No newline at end of file
+{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/WebServer/WebServer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/frontend/static/font/RidleyGrotesk-Bold.otf b/frontend/static/font/RidleyGrotesk-Bold.otf
new file mode 100644
index 0000000..aabcc0c
Binary files /dev/null and b/frontend/static/font/RidleyGrotesk-Bold.otf differ
diff --git a/frontend/static/font/RidleyGrotesk-Regular.otf b/frontend/static/font/RidleyGrotesk-Regular.otf
new file mode 100644
index 0000000..d18e26a
Binary files /dev/null and b/frontend/static/font/RidleyGrotesk-Regular.otf differ
diff --git a/frontend/static/font/Roboto-Italic-VariableFont_wdth,wght.ttf b/frontend/static/font/Roboto-Italic-VariableFont_wdth,wght.ttf
new file mode 100644
index 0000000..fb3c626
Binary files /dev/null and b/frontend/static/font/Roboto-Italic-VariableFont_wdth,wght.ttf differ
diff --git a/frontend/static/font/Roboto-VariableFont_wdth,wght.ttf b/frontend/static/font/Roboto-VariableFont_wdth,wght.ttf
new file mode 100644
index 0000000..01656a3
Binary files /dev/null and b/frontend/static/font/Roboto-VariableFont_wdth,wght.ttf differ
diff --git a/frontend/static/font/ScothBrace.ttf b/frontend/static/font/ScothBrace.ttf
new file mode 100644
index 0000000..c682069
Binary files /dev/null and b/frontend/static/font/ScothBrace.ttf differ
diff --git a/frontend/static/img/call.png b/frontend/static/img/call.png
new file mode 100644
index 0000000..a2d0a00
Binary files /dev/null and b/frontend/static/img/call.png differ
diff --git a/frontend/static/img/logo.png b/frontend/static/img/logo.png
new file mode 100644
index 0000000..0a30ca2
Binary files /dev/null and b/frontend/static/img/logo.png differ
diff --git a/frontend/views/control/dist/calibration.js b/frontend/views/control/dist/calibration.js
new file mode 100644
index 0000000..dfdf536
--- /dev/null
+++ b/frontend/views/control/dist/calibration.js
@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Calibration = void 0;
+var Calibration = /** @class */ (function () {
+ function Calibration(Main) {
+ this.visible = false;
+ this.container = document.querySelector('.ntsh-calibration');
+ this.image = this.container.querySelector('img');
+ this._Main = Main;
+ this.registerListeners();
+ this.startClock();
+ }
+ Calibration.prototype.startClock = function () {
+ var _this = this;
+ setInterval(function () {
+ if (_this.visible && _this.image)
+ _this.image.src = "/calibrationImage?t=".concat(Date.now());
+ }, 1000);
+ };
+ Calibration.prototype.registerListeners = function () {
+ var _this = this;
+ this.observer = new IntersectionObserver(function (entries) {
+ entries.forEach(function (entry) {
+ if (entry.isIntersecting) {
+ _this.visible = true;
+ console.log('Calibration visible');
+ }
+ else {
+ _this.visible = false;
+ console.log('Calibration not visible');
+ }
+ });
+ });
+ this.observer.observe(this.container);
+ };
+ return Calibration;
+}());
+exports.Calibration = Calibration;
+//# sourceMappingURL=calibration.js.map
\ No newline at end of file
diff --git a/frontend/views/control/dist/calibration.js.map b/frontend/views/control/dist/calibration.js.map
new file mode 100644
index 0000000..1867e19
--- /dev/null
+++ b/frontend/views/control/dist/calibration.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"calibration.js","sourceRoot":"","sources":["../ts/calibration.ts"],"names":[],"mappings":";;;AAEA;IASC,qBAAY,IAAU;QALtB,YAAO,GAAY,KAAK,CAAC;QAEzB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACxE,UAAK,GAAqB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAG7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,gCAAU,GAAlB;QAAA,iBAKC;QAJA,WAAW,CAAC;YACX,IAAI,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,KAAK;gBAC7B,KAAI,CAAC,KAAK,CAAC,GAAG,GAAG,8BAAuB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;QACvD,CAAC,EAAE,IAAI,CAAC,CAAC;IACV,CAAC;IAEO,uCAAiB,GAAzB;QAAA,iBAaC;QAZA,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,UAAC,OAAO;YAChD,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK;gBACrB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1B,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACP,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACxC,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IACF,kBAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,kCAAW"}
\ No newline at end of file
diff --git a/frontend/views/control/dist/checklist.js b/frontend/views/control/dist/checklist.js
new file mode 100644
index 0000000..39aa0f5
--- /dev/null
+++ b/frontend/views/control/dist/checklist.js
@@ -0,0 +1,96 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Checklist = void 0;
+var morphux_1 = require("morphux");
+var Checklist = /** @class */ (function () {
+ function Checklist(Main) {
+ this.Rows = {
+ CAMERAPC: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPC\"]"),
+ CAMERAPROCESS: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPROCESS\"]"),
+ CAMERAUNITYSTREAM: document.querySelector(".ntsh-checklist-row[status=\"CAMERAUNITYSTREAM\"]"),
+ UNITYBUILD: document.querySelector(".ntsh-checklist-row[status=\"UNITYBUILD\"]"),
+ REPLAYFUNCTION: document.querySelector(".ntsh-checklist-row[status=\"REPLAYFUNCTION\"]"),
+ };
+ this.FullReboot = document.querySelector('.ntsh-fullreboot-button');
+ this._Main = Main;
+ this.registerListeners();
+ }
+ Checklist.prototype.update = function (status) {
+ this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);
+ this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);
+ this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);
+ this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);
+ this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);
+ console.log('Updated checklist:', status);
+ };
+ Checklist.prototype.updateRow = function (row, state) {
+ var _a, _b, _c;
+ var status = row.querySelector('.ntsh-checklist-row-status');
+ var message = row.querySelector('p');
+ var startButton = row.querySelector('.ntsh-checklist-row-button.start');
+ var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
+ var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
+ status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');
+ status.classList.add(state.state);
+ message.innerText = state.message;
+ startButton.style.display = ((_a = state.buttons) === null || _a === void 0 ? void 0 : _a.start) ? 'block' : 'none';
+ stopButton.style.display = ((_b = state.buttons) === null || _b === void 0 ? void 0 : _b.stop) ? 'block' : 'none';
+ rebootButton.style.display = ((_c = state.buttons) === null || _c === void 0 ? void 0 : _c.reboot) ? 'block' : 'none';
+ };
+ Checklist.prototype.registerListeners = function () {
+ var _this = this;
+ this.FullReboot.onclick = function () {
+ morphux_1.MorphFeature.Confirm({
+ title: 'Full Reboot',
+ message: 'Are you sure you want to perform a full reboot?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'fullreboot');
+ });
+ };
+ var _loop_1 = function (key) {
+ var row = this_1.Rows[key];
+ var startButton = row.querySelector('.ntsh-checklist-row-button.start');
+ startButton.onclick = function () {
+ return morphux_1.MorphFeature.Confirm({
+ title: 'Start',
+ message: 'Are you sure you want to start?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'start', key);
+ });
+ };
+ var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
+ stopButton.onclick = function () {
+ return morphux_1.MorphFeature.Confirm({
+ title: 'Stop',
+ message: 'Are you sure you want to stop?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'stop', key);
+ });
+ };
+ var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
+ rebootButton.onclick = function () {
+ return morphux_1.MorphFeature.Confirm({
+ title: 'Reboot',
+ message: 'Are you sure you want to reboot?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'reboot', key);
+ });
+ };
+ };
+ var this_1 = this;
+ for (var key in this.Rows) {
+ _loop_1(key);
+ }
+ };
+ return Checklist;
+}());
+exports.Checklist = Checklist;
+//# sourceMappingURL=checklist.js.map
\ No newline at end of file
diff --git a/frontend/views/control/dist/checklist.js.map b/frontend/views/control/dist/checklist.js.map
new file mode 100644
index 0000000..143e28e
--- /dev/null
+++ b/frontend/views/control/dist/checklist.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../ts/checklist.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/frontend/views/control/dist/main.js b/frontend/views/control/dist/main.js
new file mode 100644
index 0000000..b4dc1d2
--- /dev/null
+++ b/frontend/views/control/dist/main.js
@@ -0,0 +1,144 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Main = void 0;
+var socket_io_client_1 = require("socket.io-client");
+var menu_1 = require("./menu");
+var checklist_1 = require("./checklist");
+var calibration_1 = require("./calibration");
+var morphux_1 = require("morphux");
+var outOfServiceMode_1 = require("./outOfServiceMode");
+var timer_1 = require("./timer");
+var socket = (0, socket_io_client_1.io)('/');
+var Main = /** @class */ (function () {
+ function Main() {
+ this.Menu = new menu_1.Menu();
+ this.CheckList = new checklist_1.Checklist(this);
+ this.Calibration = new calibration_1.Calibration(this);
+ this.OutOfServiceMode = new outOfServiceMode_1.OutOfServiceMode(this);
+ this.Timer = new timer_1.Timer(this);
+ this.socket = socket;
+ this.supportButton = document.querySelector('.ntsh-support img');
+ this.supportNumber = '';
+ this.registerListeners();
+ }
+ Main.prototype.registerListeners = function () {
+ var _this = this;
+ this.supportButton.onclick = function () { return _this.showSupport(); };
+ socket.on('status', function (data) {
+ _this.CheckList.update(data);
+ });
+ socket.on('supportNumber', function (number) {
+ _this.supportNumber = number;
+ });
+ socket.on('unityWebSocketState', function (state) {
+ var _a, _b, _c, _d;
+ _this.OutOfServiceMode.input.checked =
+ (_b = (_a = state === null || state === void 0 ? void 0 : state.parameters) === null || _a === void 0 ? void 0 : _a.outOfService) !== null && _b !== void 0 ? _b : false;
+ _this.OutOfServiceMode.state =
+ (_d = (_c = state === null || state === void 0 ? void 0 : state.parameters) === null || _c === void 0 ? void 0 : _c.outOfService) !== null && _d !== void 0 ? _d : false;
+ });
+ socket.on('timer', function (data) {
+ _this.Timer.update(data);
+ });
+ };
+ Main.prototype.executeCommand = function (command, message, type) {
+ if (type === void 0) { type = 'unityRunner'; }
+ return __awaiter(this, void 0, void 0, function () {
+ var _this = this;
+ return __generator(this, function (_a) {
+ return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
+ var confirmed;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
+ title: 'Are you sure?',
+ message: message,
+ })];
+ case 1:
+ confirmed = _a.sent();
+ if (!confirmed)
+ return [2 /*return*/, resolve(false)];
+ morphux_1.MorphFeature.Loader({
+ active: true,
+ message: "Dispatching command...",
+ });
+ socket.emit(type, command, function (response) {
+ morphux_1.MorphFeature.Loader({ active: false });
+ if (!response.succeed)
+ return morphux_1.MorphFeature.Alert({
+ title: 'Error',
+ message: response.message,
+ });
+ morphux_1.MorphFeature.Notification({
+ level: 'success',
+ message: "Dispatched command",
+ });
+ });
+ resolve(true);
+ return [2 /*return*/];
+ }
+ });
+ }); })];
+ });
+ });
+ };
+ Main.prototype.showSupport = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var dialog, callAnchor;
+ return __generator(this, function (_a) {
+ dialog = new morphux_1.MorphComponent.Dialog({
+ title: 'Contact Support',
+ width: 'medium',
+ height: 'auto',
+ okButtonVisible: false,
+ cancelButtonVisible: false,
+ });
+ this.supportNumber.slice();
+ callAnchor = (0, morphux_1.ce)('a', 'ntsh_callanchor', { href: "tel:".concat(this.supportNumber) }, "+".concat(this.supportNumber));
+ dialog.content.appendChild(callAnchor);
+ setTimeout(function () { return callAnchor.click(); }, 100);
+ return [2 /*return*/];
+ });
+ });
+ };
+ return Main;
+}());
+exports.Main = Main;
+var _Main = new Main();
+//# sourceMappingURL=main.js.map
\ No newline at end of file
diff --git a/frontend/views/control/dist/main.js.map b/frontend/views/control/dist/main.js.map
new file mode 100644
index 0000000..8ae228d
--- /dev/null
+++ b/frontend/views/control/dist/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","sourceRoot":"","sources":["../ts/main.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/frontend/views/control/dist/menu.js b/frontend/views/control/dist/menu.js
new file mode 100644
index 0000000..28f6f3e
--- /dev/null
+++ b/frontend/views/control/dist/menu.js
@@ -0,0 +1,46 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Menu = void 0;
+var Menu = /** @class */ (function () {
+ function Menu() {
+ this.menuContainer = document.querySelector('.ntsh_menubar');
+ this.tabContainer = document.querySelector('.ntsh_tabs');
+ this.registerListeners();
+ if (window.location.search.includes('advanced'))
+ this.selectTab('advanced');
+ }
+ Menu.prototype.selectTab = function (tabId) {
+ this.menuContainer
+ .querySelectorAll('.ntsh_menubar-item')
+ .forEach(function (item) {
+ if (item.getAttribute('tabid') === tabId) {
+ item.classList.add('selected');
+ }
+ else {
+ item.classList.remove('selected');
+ }
+ });
+ this.tabContainer.querySelectorAll('.ntsh_tab').forEach(function (tab) {
+ if (tab.getAttribute('tabid') === tabId) {
+ tab.classList.add('visible');
+ }
+ else {
+ tab.classList.remove('visible');
+ }
+ });
+ };
+ Menu.prototype.registerListeners = function () {
+ var _this = this;
+ this.menuContainer
+ .querySelectorAll('.ntsh_menubar-item')
+ .forEach(function (item) {
+ item.addEventListener('click', function () {
+ var itemId = item.getAttribute('tabid');
+ _this.selectTab(itemId);
+ });
+ });
+ };
+ return Menu;
+}());
+exports.Menu = Menu;
+//# sourceMappingURL=menu.js.map
\ No newline at end of file
diff --git a/frontend/views/control/dist/menu.js.map b/frontend/views/control/dist/menu.js.map
new file mode 100644
index 0000000..d30023e
--- /dev/null
+++ b/frontend/views/control/dist/menu.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"menu.js","sourceRoot":"","sources":["../ts/menu.ts"],"names":[],"mappings":";;;AAAA;IAIC;QAHA,kBAAa,GAAmB,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACxE,iBAAY,GAAmB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAGnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,wBAAS,GAAT,UAAU,KAAa;QACtB,IAAI,CAAC,aAAa;aAChB,gBAAgB,CAAC,oBAAoB,CAAC;aACtC,OAAO,CAAC,UAAC,IAAI;YACb,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;QACF,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YAC3D,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,gCAAiB,GAAzB;QAAA,iBASC;QARA,IAAI,CAAC,aAAa;aAChB,gBAAgB,CAAC,oBAAoB,CAAC;aACtC,OAAO,CAAC,UAAC,IAAI;YACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAC9B,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC1C,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACF,WAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,oBAAI"}
\ No newline at end of file
diff --git a/frontend/views/control/dist/outOfServiceMode.js b/frontend/views/control/dist/outOfServiceMode.js
new file mode 100644
index 0000000..679d85c
--- /dev/null
+++ b/frontend/views/control/dist/outOfServiceMode.js
@@ -0,0 +1,67 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.OutOfServiceMode = void 0;
+var OutOfServiceMode = /** @class */ (function () {
+ function OutOfServiceMode(Main) {
+ this.state = false;
+ this.input = document.querySelector('.ntsh-outofservicemode-input');
+ this._Main = Main;
+ this.registerListeners();
+ }
+ OutOfServiceMode.prototype.registerListeners = function () {
+ var _this = this;
+ this.input.addEventListener('change', function () { return __awaiter(_this, void 0, void 0, function () {
+ var valid;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0: return [4 /*yield*/, this._Main.executeCommand(this.state ? 'disableOutOfService' : 'enableOutOfService', "Are you sure you want to set the installation to \"".concat(this.state ? 'Out of Service' : 'Operational', "\"?"), 'unityWebSocket')];
+ case 1:
+ valid = _a.sent();
+ if (!valid)
+ this.input.checked = this.state;
+ this.state = this.input.checked;
+ return [2 /*return*/];
+ }
+ });
+ }); });
+ };
+ return OutOfServiceMode;
+}());
+exports.OutOfServiceMode = OutOfServiceMode;
+//# sourceMappingURL=outOfServiceMode.js.map
\ No newline at end of file
diff --git a/frontend/views/control/dist/outOfServiceMode.js.map b/frontend/views/control/dist/outOfServiceMode.js.map
new file mode 100644
index 0000000..7b96942
--- /dev/null
+++ b/frontend/views/control/dist/outOfServiceMode.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"outOfServiceMode.js","sourceRoot":"","sources":["../ts/outOfServiceMode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IAQC,0BAAY,IAAU;QALtB,UAAK,GAAY,KAAK,CAAC;QACvB,UAAK,GAAqB,QAAQ,CAAC,aAAa,CAC/C,8BAA8B,CAC9B,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAEO,4CAAiB,GAAzB;QAAA,iBAUC;QATA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;;;4BACvB,qBAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,EACzD,6DAAqD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,QAAI,EACtG,gBAAgB,CAChB,EAAA;;wBAJK,KAAK,GAAG,SAIb;wBACD,IAAI,CAAC,KAAK;4BAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;;aAChC,CAAC,CAAC;IACJ,CAAC;IACF,uBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,4CAAgB"}
\ No newline at end of file
diff --git a/frontend/views/control/dist/timer.js b/frontend/views/control/dist/timer.js
new file mode 100644
index 0000000..06f3cf5
--- /dev/null
+++ b/frontend/views/control/dist/timer.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Timer = void 0;
+var Timer = /** @class */ (function () {
+ function Timer(Main) {
+ this.startup = document.querySelector('.ntsh-timer-startup');
+ this.shutdown = document.querySelector('.ntsh-timer-shutdown');
+ this._Main = Main;
+ this.registerListeners();
+ }
+ Timer.prototype.update = function (data) {
+ var start = "".concat(data.start.hour.toString().padStart(2, '0'), ":").concat(data.start.minute.toString().padStart(2, '0'));
+ var end = "".concat(data.end.hour.toString().padStart(2, '0'), ":").concat(data.end.minute.toString().padStart(2, '0'));
+ this.startup.value = start;
+ this.shutdown.value = end;
+ };
+ Timer.prototype.registerListeners = function () {
+ var _this = this;
+ this.startup.onchange = function () {
+ var _a = _this.startup.value.split(':').map(Number), hour = _a[0], minute = _a[1];
+ _this._Main.socket.emit('setTimerStart', { hour: hour, minute: minute });
+ };
+ this.shutdown.onchange = function () {
+ var _a = _this.shutdown.value.split(':').map(Number), hour = _a[0], minute = _a[1];
+ _this._Main.socket.emit('setTimerEnd', { hour: hour, minute: minute });
+ };
+ };
+ return Timer;
+}());
+exports.Timer = Timer;
+//# sourceMappingURL=timer.js.map
\ No newline at end of file
diff --git a/frontend/views/control/dist/timer.js.map b/frontend/views/control/dist/timer.js.map
new file mode 100644
index 0000000..e7e9cad
--- /dev/null
+++ b/frontend/views/control/dist/timer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"timer.js","sourceRoot":"","sources":["../ts/timer.ts"],"names":[],"mappings":";;;AAEA;IAMC,eAAY,IAAU;QAHtB,YAAO,GAAqB,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC1E,aAAQ,GAAqB,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAG3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,sBAAM,GAAN,UAAO,IAGN;QACA,IAAM,KAAK,GAAG,UAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,cAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAChH,IAAM,GAAG,GAAG,UAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,cAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAE1G,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;IAC3B,CAAC;IAED,iCAAiB,GAAjB;QAAA,iBASC;QARA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG;YACjB,IAAA,KAAiB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAzD,IAAI,QAAA,EAAE,MAAM,QAA6C,CAAC;YACjE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;YAClB,IAAA,KAAiB,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1D,IAAI,QAAA,EAAE,MAAM,QAA8C,CAAC;YAClE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;IACH,CAAC;IACF,YAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,sBAAK"}
\ No newline at end of file
diff --git a/frontend/views/control/index.html b/frontend/views/control/index.html
new file mode 100644
index 0000000..33fd390
--- /dev/null
+++ b/frontend/views/control/index.html
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+ NTSH Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
1. SYSTEM CHECKLIST
+
+ Check if all lights are green.
+
+ If not? Reboot!
+
+
+
+
+
+
+
+
CAMERA PC
+
Status...
+
+
+
+
+
+
+
+
+
+
CAMERA PROCESS
+
Status...
+
+
+
+
+
+
+
+
+
+
CAMERA/UNITY STREAM
+
Status...
+
+
+
+
+
+
+
+
+
+
UNITY BUILD
+
Status...
+
+
+
+
+
+
+
+
+
+
REPLAY FUNCTION
+
Status...
+
+
+
+
+
+
+
+
+
+
If reboot doesn't help:
+

+
+
+
+
2. CALIBRATION CHECK
+
+ Look if the top plate of the installation precisely aligns with the pink rectangle.
+
+ If not? Reposition the physical installation.
+
+
+
+

+
+
+
Thank you for checking! :)
+
+
+
+
OUT OF SERVICE MODE
+
Display the 'out of service' message and mute the sound.
+
+
OUT OF SERVICE MODE
+
+
+
+
+
+
+
SET TIMER
+
Please set timer in order to schedule the daily reboot.
+
+
Advise: fill in 30 minutes before opening and 30 minutes after closing of exhibition.
+
+
+
+
+
+
COLOR SETTINGS
+
If lighting at the exhibition location changes during the day (for example in daylight)
+
+
+
AUTO LIGHTING
+
+
+
+
+
FIXED LIGHTING SETTINGS
+
+
+
+
+
+
SOUND SETTINGS
+
Adjust sound settings according to acoustics of location. (Take in account changes during
+ the
+ day and adjust to an average.)
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/views/control/package-lock.json b/frontend/views/control/package-lock.json
new file mode 100644
index 0000000..a510cb6
--- /dev/null
+++ b/frontend/views/control/package-lock.json
@@ -0,0 +1,919 @@
+{
+ "name": "control",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "license": "ISC",
+ "dependencies": {
+ "@rollup/plugin-commonjs": "^25.0.7",
+ "@rollup/plugin-json": "^6.1.0",
+ "@rollup/plugin-node-resolve": "^15.1.0",
+ "@types/node": "^20.12.8",
+ "ansi_up": "^6.0.6",
+ "material-symbols": "^0.17.4",
+ "morphux": "file:../../../../MorphUX",
+ "rollup": "^2.79.1",
+ "rollup-plugin-terser": "^7.0.2",
+ "socket.io-client": "^4.8.1"
+ },
+ "devDependencies": {
+ "@types/sortablejs": "^1.15.8",
+ "dts-bundle-generator": "^9.5.1"
+ }
+ },
+ "../../../../MorphUX": {
+ "name": "morphux",
+ "version": "2026.3.1",
+ "license": "ISC",
+ "dependencies": {
+ "@egjs/hammerjs": "^2.0.17",
+ "@rollup/plugin-commonjs": "^25.0.7",
+ "@rollup/plugin-json": "^6.1.0",
+ "@rollup/plugin-node-resolve": "^15.1.0",
+ "@types/node": "^20.12.8",
+ "material-symbols": "^0.17.4",
+ "rollup": "^2.79.1",
+ "rollup-plugin-terser": "^7.0.2",
+ "sortablejs": "^1.2.1"
+ },
+ "devDependencies": {
+ "@types/sortablejs": "^1.15.8",
+ "dts-bundle-generator": "^9.5.1"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs": {
+ "version": "25.0.8",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz",
+ "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.2",
+ "glob": "^8.0.3",
+ "is-reference": "1.2.1",
+ "magic-string": "^0.30.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.68.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-json": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz",
+ "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-node-resolve": {
+ "version": "15.3.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
+ "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "@types/resolve": "1.20.2",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.22.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.78.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
+ "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
+ },
+ "node_modules/@types/node": {
+ "version": "20.19.37",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz",
+ "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/resolve": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
+ },
+ "node_modules/@types/sortablejs": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz",
+ "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ansi_up": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-6.0.6.tgz",
+ "integrity": "sha512-yIa1x3Ecf8jWP4UWEunNjqNX6gzE4vg2gGz+xqRGY+TBSucnYp6RRdPV4brmtg6bQ1ljD48mZ5iGSEj7QEpRKA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/dts-bundle-generator": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-9.5.1.tgz",
+ "integrity": "sha512-DxpJOb2FNnEyOzMkG11sxO2dmxPjthoVWxfKqWYJ/bI/rT1rvTMktF5EKjAYrRZu6Z6t3NhOUZ0sZ5ZXevOfbA==",
+ "dev": true,
+ "dependencies": {
+ "typescript": ">=5.0.2",
+ "yargs": "^17.6.0"
+ },
+ "bin": {
+ "dts-bundle-generator": "dist/bin/dts-bundle-generator.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/engine.io-client": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz",
+ "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.4.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.18.3",
+ "xmlhttprequest-ssl": "~2.1.1"
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
+ },
+ "node_modules/is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/material-symbols": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/material-symbols/-/material-symbols-0.17.4.tgz",
+ "integrity": "sha512-5zI+rSzAidMJxAIrQCVwnp4rMjFnx8aQg68lfFXtaDeksZzJ7m8eDl16y9bRNxMosuYbLKeDHDbOWHPJJTSLhQ=="
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "node_modules/minimatch": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/morphux": {
+ "resolved": "../../../../MorphUX",
+ "link": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.80.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz",
+ "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+ "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/socket.io-client": {
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz",
+ "integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.4.1",
+ "engine.io-client": "~6.6.1",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz",
+ "integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.4.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.46.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz",
+ "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.15.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xmlhttprequest-ssl": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
+ "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ }
+}
diff --git a/frontend/views/control/package.json b/frontend/views/control/package.json
new file mode 100644
index 0000000..ef9226c
--- /dev/null
+++ b/frontend/views/control/package.json
@@ -0,0 +1,27 @@
+{
+ "scripts": {
+ "build": "sass scss/index.scss style.css && tsc && npm run bundle",
+ "watch-ts": "tsc -w",
+ "watch-scss": "sass scss/index.scss style.css -w",
+ "watch-rollup": "rollup -c --watch",
+ "watch-rebuildscss": "rm style.css && npm run watch-scss"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "@rollup/plugin-commonjs": "^25.0.7",
+ "@rollup/plugin-json": "^6.1.0",
+ "@rollup/plugin-node-resolve": "^15.1.0",
+ "@types/node": "^20.12.8",
+ "ansi_up": "^6.0.6",
+ "material-symbols": "^0.17.4",
+ "morphux": "file:../../../../MorphUX",
+ "rollup": "^2.79.1",
+ "rollup-plugin-terser": "^7.0.2",
+ "socket.io-client": "^4.8.1"
+ },
+ "devDependencies": {
+ "@types/sortablejs": "^1.15.8",
+ "dts-bundle-generator": "^9.5.1"
+ }
+}
diff --git a/frontend/views/control/rollup.config.js b/frontend/views/control/rollup.config.js
new file mode 100644
index 0000000..1fa702c
--- /dev/null
+++ b/frontend/views/control/rollup.config.js
@@ -0,0 +1,19 @@
+import cjs from '@rollup/plugin-commonjs';
+import node from '@rollup/plugin-node-resolve';
+import { terser } from 'rollup-plugin-terser';
+import json from '@rollup/plugin-json';
+
+const production = !process.env.ROLLUP_WATCH;
+
+export default {
+ input: 'dist/main.js',
+ output: [
+ { file: 'script.js', format: 'iife', sourcemap: true, inlineDynamicImports: true }
+ ],
+ plugins: [
+ node({ browser: true }),
+ cjs(),
+ production && terser(),
+ json()
+ ],
+};
\ No newline at end of file
diff --git a/frontend/views/control/script.js b/frontend/views/control/script.js
new file mode 100644
index 0000000..bd4872a
--- /dev/null
+++ b/frontend/views/control/script.js
@@ -0,0 +1,14895 @@
+(function (exports) {
+ 'use strict';
+
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+ function getAugmentedNamespace(n) {
+ if (n.__esModule) return n;
+ var f = n.default;
+ if (typeof f == "function") {
+ var a = function a () {
+ if (this instanceof a) {
+ return Reflect.construct(f, arguments, this.constructor);
+ }
+ return f.apply(this, arguments);
+ };
+ a.prototype = f.prototype;
+ } else a = {};
+ Object.defineProperty(a, '__esModule', {value: true});
+ Object.keys(n).forEach(function (k) {
+ var d = Object.getOwnPropertyDescriptor(n, k);
+ Object.defineProperty(a, k, d.get ? d : {
+ enumerable: true,
+ get: function () {
+ return n[k];
+ }
+ });
+ });
+ return a;
+ }
+
+ var main$1 = {};
+
+ var cjs$3 = {exports: {}};
+
+ var url$1 = {};
+
+ var cjs$2 = {};
+
+ var socket$2 = {};
+
+ var transports = {};
+
+ var pollingXhr = {};
+
+ var polling = {};
+
+ var transport = {};
+
+ var cjs$1 = {};
+
+ var encodePacket_browser = {};
+
+ var commons = {};
+
+ Object.defineProperty(commons, "__esModule", { value: true });
+ commons.ERROR_PACKET = commons.PACKET_TYPES_REVERSE = commons.PACKET_TYPES = void 0;
+ const PACKET_TYPES = Object.create(null); // no Map = no polyfill
+ commons.PACKET_TYPES = PACKET_TYPES;
+ PACKET_TYPES["open"] = "0";
+ PACKET_TYPES["close"] = "1";
+ PACKET_TYPES["ping"] = "2";
+ PACKET_TYPES["pong"] = "3";
+ PACKET_TYPES["message"] = "4";
+ PACKET_TYPES["upgrade"] = "5";
+ PACKET_TYPES["noop"] = "6";
+ const PACKET_TYPES_REVERSE = Object.create(null);
+ commons.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE;
+ Object.keys(PACKET_TYPES).forEach((key) => {
+ PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;
+ });
+ const ERROR_PACKET = { type: "error", data: "parser error" };
+ commons.ERROR_PACKET = ERROR_PACKET;
+
+ Object.defineProperty(encodePacket_browser, "__esModule", { value: true });
+ encodePacket_browser.encodePacket = void 0;
+ encodePacket_browser.encodePacketToBinary = encodePacketToBinary;
+ const commons_js_1$1 = commons;
+ const withNativeBlob$1 = typeof Blob === "function" ||
+ (typeof Blob !== "undefined" &&
+ Object.prototype.toString.call(Blob) === "[object BlobConstructor]");
+ const withNativeArrayBuffer$2 = typeof ArrayBuffer === "function";
+ // ArrayBuffer.isView method is not defined in IE10
+ const isView$1 = (obj) => {
+ return typeof ArrayBuffer.isView === "function"
+ ? ArrayBuffer.isView(obj)
+ : obj && obj.buffer instanceof ArrayBuffer;
+ };
+ const encodePacket = ({ type, data }, supportsBinary, callback) => {
+ if (withNativeBlob$1 && data instanceof Blob) {
+ if (supportsBinary) {
+ return callback(data);
+ }
+ else {
+ return encodeBlobAsBase64(data, callback);
+ }
+ }
+ else if (withNativeArrayBuffer$2 &&
+ (data instanceof ArrayBuffer || isView$1(data))) {
+ if (supportsBinary) {
+ return callback(data);
+ }
+ else {
+ return encodeBlobAsBase64(new Blob([data]), callback);
+ }
+ }
+ // plain string
+ return callback(commons_js_1$1.PACKET_TYPES[type] + (data || ""));
+ };
+ encodePacket_browser.encodePacket = encodePacket;
+ const encodeBlobAsBase64 = (data, callback) => {
+ const fileReader = new FileReader();
+ fileReader.onload = function () {
+ const content = fileReader.result.split(",")[1];
+ callback("b" + (content || ""));
+ };
+ return fileReader.readAsDataURL(data);
+ };
+ function toArray$1(data) {
+ if (data instanceof Uint8Array) {
+ return data;
+ }
+ else if (data instanceof ArrayBuffer) {
+ return new Uint8Array(data);
+ }
+ else {
+ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
+ }
+ }
+ let TEXT_ENCODER;
+ function encodePacketToBinary(packet, callback) {
+ if (withNativeBlob$1 && packet.data instanceof Blob) {
+ return packet.data.arrayBuffer().then(toArray$1).then(callback);
+ }
+ else if (withNativeArrayBuffer$2 &&
+ (packet.data instanceof ArrayBuffer || isView$1(packet.data))) {
+ return callback(toArray$1(packet.data));
+ }
+ encodePacket(packet, false, (encoded) => {
+ if (!TEXT_ENCODER) {
+ TEXT_ENCODER = new TextEncoder();
+ }
+ callback(TEXT_ENCODER.encode(encoded));
+ });
+ }
+
+ var decodePacket_browser = {};
+
+ var base64Arraybuffer = {};
+
+ Object.defineProperty(base64Arraybuffer, "__esModule", { value: true });
+ base64Arraybuffer.decode = base64Arraybuffer.encode = void 0;
+ // imported from https://github.com/socketio/base64-arraybuffer
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+ // Use a lookup table to find the index.
+ const lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
+ for (let i = 0; i < chars.length; i++) {
+ lookup[chars.charCodeAt(i)] = i;
+ }
+ const encode$1 = (arraybuffer) => {
+ let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';
+ for (i = 0; i < len; i += 3) {
+ base64 += chars[bytes[i] >> 2];
+ base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
+ base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
+ base64 += chars[bytes[i + 2] & 63];
+ }
+ if (len % 3 === 2) {
+ base64 = base64.substring(0, base64.length - 1) + '=';
+ }
+ else if (len % 3 === 1) {
+ base64 = base64.substring(0, base64.length - 2) + '==';
+ }
+ return base64;
+ };
+ base64Arraybuffer.encode = encode$1;
+ const decode$1 = (base64) => {
+ let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
+ if (base64[base64.length - 1] === '=') {
+ bufferLength--;
+ if (base64[base64.length - 2] === '=') {
+ bufferLength--;
+ }
+ }
+ const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
+ for (i = 0; i < len; i += 4) {
+ encoded1 = lookup[base64.charCodeAt(i)];
+ encoded2 = lookup[base64.charCodeAt(i + 1)];
+ encoded3 = lookup[base64.charCodeAt(i + 2)];
+ encoded4 = lookup[base64.charCodeAt(i + 3)];
+ bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
+ bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
+ bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
+ }
+ return arraybuffer;
+ };
+ base64Arraybuffer.decode = decode$1;
+
+ Object.defineProperty(decodePacket_browser, "__esModule", { value: true });
+ decodePacket_browser.decodePacket = void 0;
+ const commons_js_1 = commons;
+ const base64_arraybuffer_js_1 = base64Arraybuffer;
+ const withNativeArrayBuffer$1 = typeof ArrayBuffer === "function";
+ const decodePacket = (encodedPacket, binaryType) => {
+ if (typeof encodedPacket !== "string") {
+ return {
+ type: "message",
+ data: mapBinary(encodedPacket, binaryType),
+ };
+ }
+ const type = encodedPacket.charAt(0);
+ if (type === "b") {
+ return {
+ type: "message",
+ data: decodeBase64Packet(encodedPacket.substring(1), binaryType),
+ };
+ }
+ const packetType = commons_js_1.PACKET_TYPES_REVERSE[type];
+ if (!packetType) {
+ return commons_js_1.ERROR_PACKET;
+ }
+ return encodedPacket.length > 1
+ ? {
+ type: commons_js_1.PACKET_TYPES_REVERSE[type],
+ data: encodedPacket.substring(1),
+ }
+ : {
+ type: commons_js_1.PACKET_TYPES_REVERSE[type],
+ };
+ };
+ decodePacket_browser.decodePacket = decodePacket;
+ const decodeBase64Packet = (data, binaryType) => {
+ if (withNativeArrayBuffer$1) {
+ const decoded = (0, base64_arraybuffer_js_1.decode)(data);
+ return mapBinary(decoded, binaryType);
+ }
+ else {
+ return { base64: true, data }; // fallback for old browsers
+ }
+ };
+ const mapBinary = (data, binaryType) => {
+ switch (binaryType) {
+ case "blob":
+ if (data instanceof Blob) {
+ // from WebSocket + binaryType "blob"
+ return data;
+ }
+ else {
+ // from HTTP long-polling or WebTransport
+ return new Blob([data]);
+ }
+ case "arraybuffer":
+ default:
+ if (data instanceof ArrayBuffer) {
+ // from HTTP long-polling (base64) or WebSocket + binaryType "arraybuffer"
+ return data;
+ }
+ else {
+ // from WebTransport (Uint8Array)
+ return data.buffer;
+ }
+ }
+ };
+
+ (function (exports) {
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0;
+ exports.createPacketEncoderStream = createPacketEncoderStream;
+ exports.createPacketDecoderStream = createPacketDecoderStream;
+ const encodePacket_js_1 = encodePacket_browser;
+ Object.defineProperty(exports, "encodePacket", { enumerable: true, get: function () { return encodePacket_js_1.encodePacket; } });
+ const decodePacket_js_1 = decodePacket_browser;
+ Object.defineProperty(exports, "decodePacket", { enumerable: true, get: function () { return decodePacket_js_1.decodePacket; } });
+ const commons_js_1 = commons;
+ const SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text
+ const encodePayload = (packets, callback) => {
+ // some packets may be added to the array while encoding, so the initial length must be saved
+ const length = packets.length;
+ const encodedPackets = new Array(length);
+ let count = 0;
+ packets.forEach((packet, i) => {
+ // force base64 encoding for binary packets
+ (0, encodePacket_js_1.encodePacket)(packet, false, (encodedPacket) => {
+ encodedPackets[i] = encodedPacket;
+ if (++count === length) {
+ callback(encodedPackets.join(SEPARATOR));
+ }
+ });
+ });
+ };
+ exports.encodePayload = encodePayload;
+ const decodePayload = (encodedPayload, binaryType) => {
+ const encodedPackets = encodedPayload.split(SEPARATOR);
+ const packets = [];
+ for (let i = 0; i < encodedPackets.length; i++) {
+ const decodedPacket = (0, decodePacket_js_1.decodePacket)(encodedPackets[i], binaryType);
+ packets.push(decodedPacket);
+ if (decodedPacket.type === "error") {
+ break;
+ }
+ }
+ return packets;
+ };
+ exports.decodePayload = decodePayload;
+ function createPacketEncoderStream() {
+ return new TransformStream({
+ transform(packet, controller) {
+ (0, encodePacket_js_1.encodePacketToBinary)(packet, (encodedPacket) => {
+ const payloadLength = encodedPacket.length;
+ let header;
+ // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length
+ if (payloadLength < 126) {
+ header = new Uint8Array(1);
+ new DataView(header.buffer).setUint8(0, payloadLength);
+ }
+ else if (payloadLength < 65536) {
+ header = new Uint8Array(3);
+ const view = new DataView(header.buffer);
+ view.setUint8(0, 126);
+ view.setUint16(1, payloadLength);
+ }
+ else {
+ header = new Uint8Array(9);
+ const view = new DataView(header.buffer);
+ view.setUint8(0, 127);
+ view.setBigUint64(1, BigInt(payloadLength));
+ }
+ // first bit indicates whether the payload is plain text (0) or binary (1)
+ if (packet.data && typeof packet.data !== "string") {
+ header[0] |= 0x80;
+ }
+ controller.enqueue(header);
+ controller.enqueue(encodedPacket);
+ });
+ },
+ });
+ }
+ let TEXT_DECODER;
+ function totalLength(chunks) {
+ return chunks.reduce((acc, chunk) => acc + chunk.length, 0);
+ }
+ function concatChunks(chunks, size) {
+ if (chunks[0].length === size) {
+ return chunks.shift();
+ }
+ const buffer = new Uint8Array(size);
+ let j = 0;
+ for (let i = 0; i < size; i++) {
+ buffer[i] = chunks[0][j++];
+ if (j === chunks[0].length) {
+ chunks.shift();
+ j = 0;
+ }
+ }
+ if (chunks.length && j < chunks[0].length) {
+ chunks[0] = chunks[0].slice(j);
+ }
+ return buffer;
+ }
+ function createPacketDecoderStream(maxPayload, binaryType) {
+ if (!TEXT_DECODER) {
+ TEXT_DECODER = new TextDecoder();
+ }
+ const chunks = [];
+ let state = 0 /* State.READ_HEADER */;
+ let expectedLength = -1;
+ let isBinary = false;
+ return new TransformStream({
+ transform(chunk, controller) {
+ chunks.push(chunk);
+ while (true) {
+ if (state === 0 /* State.READ_HEADER */) {
+ if (totalLength(chunks) < 1) {
+ break;
+ }
+ const header = concatChunks(chunks, 1);
+ isBinary = (header[0] & 0x80) === 0x80;
+ expectedLength = header[0] & 0x7f;
+ if (expectedLength < 126) {
+ state = 3 /* State.READ_PAYLOAD */;
+ }
+ else if (expectedLength === 126) {
+ state = 1 /* State.READ_EXTENDED_LENGTH_16 */;
+ }
+ else {
+ state = 2 /* State.READ_EXTENDED_LENGTH_64 */;
+ }
+ }
+ else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {
+ if (totalLength(chunks) < 2) {
+ break;
+ }
+ const headerArray = concatChunks(chunks, 2);
+ expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);
+ state = 3 /* State.READ_PAYLOAD */;
+ }
+ else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {
+ if (totalLength(chunks) < 8) {
+ break;
+ }
+ const headerArray = concatChunks(chunks, 8);
+ const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);
+ const n = view.getUint32(0);
+ if (n > Math.pow(2, 53 - 32) - 1) {
+ // the maximum safe integer in JavaScript is 2^53 - 1
+ controller.enqueue(commons_js_1.ERROR_PACKET);
+ break;
+ }
+ expectedLength = n * Math.pow(2, 32) + view.getUint32(4);
+ state = 3 /* State.READ_PAYLOAD */;
+ }
+ else {
+ if (totalLength(chunks) < expectedLength) {
+ break;
+ }
+ const data = concatChunks(chunks, expectedLength);
+ controller.enqueue((0, decodePacket_js_1.decodePacket)(isBinary ? data : TEXT_DECODER.decode(data), binaryType));
+ state = 0 /* State.READ_HEADER */;
+ }
+ if (expectedLength === 0 || expectedLength > maxPayload) {
+ controller.enqueue(commons_js_1.ERROR_PACKET);
+ break;
+ }
+ }
+ },
+ });
+ }
+ exports.protocol = 4;
+ } (cjs$1));
+
+ /**
+ * Initialize a new `Emitter`.
+ *
+ * @api public
+ */
+
+ function Emitter(obj) {
+ if (obj) return mixin(obj);
+ }
+
+ /**
+ * Mixin the emitter properties.
+ *
+ * @param {Object} obj
+ * @return {Object}
+ * @api private
+ */
+
+ function mixin(obj) {
+ for (var key in Emitter.prototype) {
+ obj[key] = Emitter.prototype[key];
+ }
+ return obj;
+ }
+
+ /**
+ * Listen on the given `event` with `fn`.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.on =
+ Emitter.prototype.addEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+ (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
+ .push(fn);
+ return this;
+ };
+
+ /**
+ * Adds an `event` listener that will be invoked a single
+ * time then automatically removed.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.once = function(event, fn){
+ function on() {
+ this.off(event, on);
+ fn.apply(this, arguments);
+ }
+
+ on.fn = fn;
+ this.on(event, on);
+ return this;
+ };
+
+ /**
+ * Remove the given callback for `event` or all
+ * registered callbacks.
+ *
+ * @param {String} event
+ * @param {Function} fn
+ * @return {Emitter}
+ * @api public
+ */
+
+ Emitter.prototype.off =
+ Emitter.prototype.removeListener =
+ Emitter.prototype.removeAllListeners =
+ Emitter.prototype.removeEventListener = function(event, fn){
+ this._callbacks = this._callbacks || {};
+
+ // all
+ if (0 == arguments.length) {
+ this._callbacks = {};
+ return this;
+ }
+
+ // specific event
+ var callbacks = this._callbacks['$' + event];
+ if (!callbacks) return this;
+
+ // remove all handlers
+ if (1 == arguments.length) {
+ delete this._callbacks['$' + event];
+ return this;
+ }
+
+ // remove specific handler
+ var cb;
+ for (var i = 0; i < callbacks.length; i++) {
+ cb = callbacks[i];
+ if (cb === fn || cb.fn === fn) {
+ callbacks.splice(i, 1);
+ break;
+ }
+ }
+
+ // Remove event specific arrays for event types that no
+ // one is subscribed for to avoid memory leak.
+ if (callbacks.length === 0) {
+ delete this._callbacks['$' + event];
+ }
+
+ return this;
+ };
+
+ /**
+ * Emit `event` with the given args.
+ *
+ * @param {String} event
+ * @param {Mixed} ...
+ * @return {Emitter}
+ */
+
+ Emitter.prototype.emit = function(event){
+ this._callbacks = this._callbacks || {};
+
+ var args = new Array(arguments.length - 1)
+ , callbacks = this._callbacks['$' + event];
+
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+
+ if (callbacks) {
+ callbacks = callbacks.slice(0);
+ for (var i = 0, len = callbacks.length; i < len; ++i) {
+ callbacks[i].apply(this, args);
+ }
+ }
+
+ return this;
+ };
+
+ // alias used for reserved events (protected method)
+ Emitter.prototype.emitReserved = Emitter.prototype.emit;
+
+ /**
+ * Return array of callbacks for `event`.
+ *
+ * @param {String} event
+ * @return {Array}
+ * @api public
+ */
+
+ Emitter.prototype.listeners = function(event){
+ this._callbacks = this._callbacks || {};
+ return this._callbacks['$' + event] || [];
+ };
+
+ /**
+ * Check if this emitter has `event` handlers.
+ *
+ * @param {String} event
+ * @return {Boolean}
+ * @api public
+ */
+
+ Emitter.prototype.hasListeners = function(event){
+ return !! this.listeners(event).length;
+ };
+
+ var esm = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ Emitter: Emitter
+ });
+
+ var require$$5 = /*@__PURE__*/getAugmentedNamespace(esm);
+
+ var util = {};
+
+ var globals = {};
+
+ Object.defineProperty(globals, "__esModule", { value: true });
+ globals.defaultBinaryType = globals.globalThisShim = globals.nextTick = void 0;
+ globals.createCookieJar = createCookieJar;
+ globals.nextTick = (() => {
+ const isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function";
+ if (isPromiseAvailable) {
+ return (cb) => Promise.resolve().then(cb);
+ }
+ else {
+ return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);
+ }
+ })();
+ globals.globalThisShim = (() => {
+ if (typeof self !== "undefined") {
+ return self;
+ }
+ else if (typeof window !== "undefined") {
+ return window;
+ }
+ else {
+ return Function("return this")();
+ }
+ })();
+ globals.defaultBinaryType = "arraybuffer";
+ function createCookieJar() { }
+
+ Object.defineProperty(util, "__esModule", { value: true });
+ util.pick = pick;
+ util.installTimerFunctions = installTimerFunctions;
+ util.byteLength = byteLength;
+ util.randomString = randomString;
+ const globals_node_js_1$4 = globals;
+ function pick(obj, ...attr) {
+ return attr.reduce((acc, k) => {
+ if (obj.hasOwnProperty(k)) {
+ acc[k] = obj[k];
+ }
+ return acc;
+ }, {});
+ }
+ // Keep a reference to the real timeout functions so they can be used when overridden
+ const NATIVE_SET_TIMEOUT = globals_node_js_1$4.globalThisShim.setTimeout;
+ const NATIVE_CLEAR_TIMEOUT = globals_node_js_1$4.globalThisShim.clearTimeout;
+ function installTimerFunctions(obj, opts) {
+ if (opts.useNativeTimers) {
+ obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globals_node_js_1$4.globalThisShim);
+ obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globals_node_js_1$4.globalThisShim);
+ }
+ else {
+ obj.setTimeoutFn = globals_node_js_1$4.globalThisShim.setTimeout.bind(globals_node_js_1$4.globalThisShim);
+ obj.clearTimeoutFn = globals_node_js_1$4.globalThisShim.clearTimeout.bind(globals_node_js_1$4.globalThisShim);
+ }
+ }
+ // base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)
+ const BASE64_OVERHEAD = 1.33;
+ // we could also have used `new Blob([obj]).size`, but it isn't supported in IE9
+ function byteLength(obj) {
+ if (typeof obj === "string") {
+ return utf8Length(obj);
+ }
+ // arraybuffer or blob
+ return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);
+ }
+ function utf8Length(str) {
+ let c = 0, length = 0;
+ for (let i = 0, l = str.length; i < l; i++) {
+ c = str.charCodeAt(i);
+ if (c < 0x80) {
+ length += 1;
+ }
+ else if (c < 0x800) {
+ length += 2;
+ }
+ else if (c < 0xd800 || c >= 0xe000) {
+ length += 3;
+ }
+ else {
+ i++;
+ length += 4;
+ }
+ }
+ return length;
+ }
+ /**
+ * Generates a random 8-characters string.
+ */
+ function randomString() {
+ return (Date.now().toString(36).substring(3) +
+ Math.random().toString(36).substring(2, 5));
+ }
+
+ var parseqs = {};
+
+ // imported from https://github.com/galkn/querystring
+ /**
+ * Compiles a querystring
+ * Returns string representation of the object
+ *
+ * @param {Object}
+ * @api private
+ */
+ Object.defineProperty(parseqs, "__esModule", { value: true });
+ parseqs.encode = encode;
+ parseqs.decode = decode;
+ function encode(obj) {
+ let str = '';
+ for (let i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ if (str.length)
+ str += '&';
+ str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);
+ }
+ }
+ return str;
+ }
+ /**
+ * Parses a simple querystring into an object
+ *
+ * @param {String} qs
+ * @api private
+ */
+ function decode(qs) {
+ let qry = {};
+ let pairs = qs.split('&');
+ for (let i = 0, l = pairs.length; i < l; i++) {
+ let pair = pairs[i].split('=');
+ qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
+ }
+ return qry;
+ }
+
+ var browser = {exports: {}};
+
+ /**
+ * Helpers.
+ */
+
+ var ms;
+ var hasRequiredMs;
+
+ function requireMs () {
+ if (hasRequiredMs) return ms;
+ hasRequiredMs = 1;
+ var s = 1000;
+ var m = s * 60;
+ var h = m * 60;
+ var d = h * 24;
+ var w = d * 7;
+ var y = d * 365.25;
+
+ /**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} [options]
+ * @throws {Error} throw an error if val is not a non-empty string or a number
+ * @return {String|Number}
+ * @api public
+ */
+
+ ms = function (val, options) {
+ options = options || {};
+ var type = typeof val;
+ if (type === 'string' && val.length > 0) {
+ return parse(val);
+ } else if (type === 'number' && isFinite(val)) {
+ return options.long ? fmtLong(val) : fmtShort(val);
+ }
+ throw new Error(
+ 'val is not a non-empty string or a valid number. val=' +
+ JSON.stringify(val)
+ );
+ };
+
+ /**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+ function parse(str) {
+ str = String(str);
+ if (str.length > 100) {
+ return;
+ }
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
+ str
+ );
+ if (!match) {
+ return;
+ }
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'weeks':
+ case 'week':
+ case 'w':
+ return n * w;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ default:
+ return undefined;
+ }
+ }
+
+ /**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+ function fmtShort(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return Math.round(ms / d) + 'd';
+ }
+ if (msAbs >= h) {
+ return Math.round(ms / h) + 'h';
+ }
+ if (msAbs >= m) {
+ return Math.round(ms / m) + 'm';
+ }
+ if (msAbs >= s) {
+ return Math.round(ms / s) + 's';
+ }
+ return ms + 'ms';
+ }
+
+ /**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+ function fmtLong(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return plural(ms, msAbs, d, 'day');
+ }
+ if (msAbs >= h) {
+ return plural(ms, msAbs, h, 'hour');
+ }
+ if (msAbs >= m) {
+ return plural(ms, msAbs, m, 'minute');
+ }
+ if (msAbs >= s) {
+ return plural(ms, msAbs, s, 'second');
+ }
+ return ms + ' ms';
+ }
+
+ /**
+ * Pluralization helper.
+ */
+
+ function plural(ms, msAbs, n, name) {
+ var isPlural = msAbs >= n * 1.5;
+ return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
+ }
+ return ms;
+ }
+
+ /**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ */
+
+ function setup(env) {
+ createDebug.debug = createDebug;
+ createDebug.default = createDebug;
+ createDebug.coerce = coerce;
+ createDebug.disable = disable;
+ createDebug.enable = enable;
+ createDebug.enabled = enabled;
+ createDebug.humanize = requireMs();
+ createDebug.destroy = destroy;
+
+ Object.keys(env).forEach(key => {
+ createDebug[key] = env[key];
+ });
+
+ /**
+ * The currently active debug mode names, and names to skip.
+ */
+
+ createDebug.names = [];
+ createDebug.skips = [];
+
+ /**
+ * Map of special "%n" handling functions, for the debug "format" argument.
+ *
+ * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
+ */
+ createDebug.formatters = {};
+
+ /**
+ * Selects a color for a debug namespace
+ * @param {String} namespace The namespace string for the debug instance to be colored
+ * @return {Number|String} An ANSI color code for the given namespace
+ * @api private
+ */
+ function selectColor(namespace) {
+ let hash = 0;
+
+ for (let i = 0; i < namespace.length; i++) {
+ hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
+ hash |= 0; // Convert to 32bit integer
+ }
+
+ return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
+ }
+ createDebug.selectColor = selectColor;
+
+ /**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
+ function createDebug(namespace) {
+ let prevTime;
+ let enableOverride = null;
+ let namespacesCache;
+ let enabledCache;
+
+ function debug(...args) {
+ // Disabled?
+ if (!debug.enabled) {
+ return;
+ }
+
+ const self = debug;
+
+ // Set `diff` timestamp
+ const curr = Number(new Date());
+ const ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ args[0] = createDebug.coerce(args[0]);
+
+ if (typeof args[0] !== 'string') {
+ // Anything else let's inspect with %O
+ args.unshift('%O');
+ }
+
+ // Apply any `formatters` transformations
+ let index = 0;
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
+ // If we encounter an escaped % then don't increase the array index
+ if (match === '%%') {
+ return '%';
+ }
+ index++;
+ const formatter = createDebug.formatters[format];
+ if (typeof formatter === 'function') {
+ const val = args[index];
+ match = formatter.call(self, val);
+
+ // Now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+
+ // Apply env-specific formatting (colors, etc.)
+ createDebug.formatArgs.call(self, args);
+
+ const logFn = self.log || createDebug.log;
+ logFn.apply(self, args);
+ }
+
+ debug.namespace = namespace;
+ debug.useColors = createDebug.useColors();
+ debug.color = createDebug.selectColor(namespace);
+ debug.extend = extend;
+ debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.
+
+ Object.defineProperty(debug, 'enabled', {
+ enumerable: true,
+ configurable: false,
+ get: () => {
+ if (enableOverride !== null) {
+ return enableOverride;
+ }
+ if (namespacesCache !== createDebug.namespaces) {
+ namespacesCache = createDebug.namespaces;
+ enabledCache = createDebug.enabled(namespace);
+ }
+
+ return enabledCache;
+ },
+ set: v => {
+ enableOverride = v;
+ }
+ });
+
+ // Env-specific initialization logic for debug instances
+ if (typeof createDebug.init === 'function') {
+ createDebug.init(debug);
+ }
+
+ return debug;
+ }
+
+ function extend(namespace, delimiter) {
+ const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
+ newDebug.log = this.log;
+ return newDebug;
+ }
+
+ /**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
+ function enable(namespaces) {
+ createDebug.save(namespaces);
+ createDebug.namespaces = namespaces;
+
+ createDebug.names = [];
+ createDebug.skips = [];
+
+ const split = (typeof namespaces === 'string' ? namespaces : '')
+ .trim()
+ .replace(/\s+/g, ',')
+ .split(',')
+ .filter(Boolean);
+
+ for (const ns of split) {
+ if (ns[0] === '-') {
+ createDebug.skips.push(ns.slice(1));
+ } else {
+ createDebug.names.push(ns);
+ }
+ }
+ }
+
+ /**
+ * Checks if the given string matches a namespace template, honoring
+ * asterisks as wildcards.
+ *
+ * @param {String} search
+ * @param {String} template
+ * @return {Boolean}
+ */
+ function matchesTemplate(search, template) {
+ let searchIndex = 0;
+ let templateIndex = 0;
+ let starIndex = -1;
+ let matchIndex = 0;
+
+ while (searchIndex < search.length) {
+ if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {
+ // Match character or proceed with wildcard
+ if (template[templateIndex] === '*') {
+ starIndex = templateIndex;
+ matchIndex = searchIndex;
+ templateIndex++; // Skip the '*'
+ } else {
+ searchIndex++;
+ templateIndex++;
+ }
+ } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition
+ // Backtrack to the last '*' and try to match more characters
+ templateIndex = starIndex + 1;
+ matchIndex++;
+ searchIndex = matchIndex;
+ } else {
+ return false; // No match
+ }
+ }
+
+ // Handle trailing '*' in template
+ while (templateIndex < template.length && template[templateIndex] === '*') {
+ templateIndex++;
+ }
+
+ return templateIndex === template.length;
+ }
+
+ /**
+ * Disable debug output.
+ *
+ * @return {String} namespaces
+ * @api public
+ */
+ function disable() {
+ const namespaces = [
+ ...createDebug.names,
+ ...createDebug.skips.map(namespace => '-' + namespace)
+ ].join(',');
+ createDebug.enable('');
+ return namespaces;
+ }
+
+ /**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
+ function enabled(name) {
+ for (const skip of createDebug.skips) {
+ if (matchesTemplate(name, skip)) {
+ return false;
+ }
+ }
+
+ for (const ns of createDebug.names) {
+ if (matchesTemplate(name, ns)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+ function coerce(val) {
+ if (val instanceof Error) {
+ return val.stack || val.message;
+ }
+ return val;
+ }
+
+ /**
+ * XXX DO NOT USE. This is a temporary stub function.
+ * XXX It WILL be removed in the next major release.
+ */
+ function destroy() {
+ console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
+ }
+
+ createDebug.enable(createDebug.load());
+
+ return createDebug;
+ }
+
+ var common = setup;
+
+ /* eslint-env browser */
+ browser.exports;
+
+ (function (module, exports) {
+ /**
+ * This is the web browser implementation of `debug()`.
+ */
+
+ exports.formatArgs = formatArgs;
+ exports.save = save;
+ exports.load = load;
+ exports.useColors = useColors;
+ exports.storage = localstorage();
+ exports.destroy = (() => {
+ let warned = false;
+
+ return () => {
+ if (!warned) {
+ warned = true;
+ console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
+ }
+ };
+ })();
+
+ /**
+ * Colors.
+ */
+
+ exports.colors = [
+ '#0000CC',
+ '#0000FF',
+ '#0033CC',
+ '#0033FF',
+ '#0066CC',
+ '#0066FF',
+ '#0099CC',
+ '#0099FF',
+ '#00CC00',
+ '#00CC33',
+ '#00CC66',
+ '#00CC99',
+ '#00CCCC',
+ '#00CCFF',
+ '#3300CC',
+ '#3300FF',
+ '#3333CC',
+ '#3333FF',
+ '#3366CC',
+ '#3366FF',
+ '#3399CC',
+ '#3399FF',
+ '#33CC00',
+ '#33CC33',
+ '#33CC66',
+ '#33CC99',
+ '#33CCCC',
+ '#33CCFF',
+ '#6600CC',
+ '#6600FF',
+ '#6633CC',
+ '#6633FF',
+ '#66CC00',
+ '#66CC33',
+ '#9900CC',
+ '#9900FF',
+ '#9933CC',
+ '#9933FF',
+ '#99CC00',
+ '#99CC33',
+ '#CC0000',
+ '#CC0033',
+ '#CC0066',
+ '#CC0099',
+ '#CC00CC',
+ '#CC00FF',
+ '#CC3300',
+ '#CC3333',
+ '#CC3366',
+ '#CC3399',
+ '#CC33CC',
+ '#CC33FF',
+ '#CC6600',
+ '#CC6633',
+ '#CC9900',
+ '#CC9933',
+ '#CCCC00',
+ '#CCCC33',
+ '#FF0000',
+ '#FF0033',
+ '#FF0066',
+ '#FF0099',
+ '#FF00CC',
+ '#FF00FF',
+ '#FF3300',
+ '#FF3333',
+ '#FF3366',
+ '#FF3399',
+ '#FF33CC',
+ '#FF33FF',
+ '#FF6600',
+ '#FF6633',
+ '#FF9900',
+ '#FF9933',
+ '#FFCC00',
+ '#FFCC33'
+ ];
+
+ /**
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
+ * and the Firebug extension (any Firefox version) are known
+ * to support "%c" CSS customizations.
+ *
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
+ */
+
+ // eslint-disable-next-line complexity
+ function useColors() {
+ // NB: In an Electron preload script, document will be defined but not fully
+ // initialized. Since we know we're in Chrome, we'll just detect this case
+ // explicitly
+ if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
+ return true;
+ }
+
+ // Internet Explorer and Edge do not support colors.
+ if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
+ return false;
+ }
+
+ let m;
+
+ // Is webkit? http://stackoverflow.com/a/16459606/376773
+ // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
+ // eslint-disable-next-line no-return-assign
+ return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
+ // Is firebug? http://stackoverflow.com/a/398120/376773
+ (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
+ // Is firefox >= v31?
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+ (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) ||
+ // Double check webkit in userAgent just in case we are in a worker
+ (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
+ }
+
+ /**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
+
+ function formatArgs(args) {
+ args[0] = (this.useColors ? '%c' : '') +
+ this.namespace +
+ (this.useColors ? ' %c' : ' ') +
+ args[0] +
+ (this.useColors ? '%c ' : ' ') +
+ '+' + module.exports.humanize(this.diff);
+
+ if (!this.useColors) {
+ return;
+ }
+
+ const c = 'color: ' + this.color;
+ args.splice(1, 0, c, 'color: inherit');
+
+ // The final "%c" is somewhat tricky, because there could be other
+ // arguments passed either before or after the %c, so we need to
+ // figure out the correct index to insert the CSS into
+ let index = 0;
+ let lastC = 0;
+ args[0].replace(/%[a-zA-Z%]/g, match => {
+ if (match === '%%') {
+ return;
+ }
+ index++;
+ if (match === '%c') {
+ // We only are interested in the *last* %c
+ // (the user may have provided their own)
+ lastC = index;
+ }
+ });
+
+ args.splice(lastC, 0, c);
+ }
+
+ /**
+ * Invokes `console.debug()` when available.
+ * No-op when `console.debug` is not a "function".
+ * If `console.debug` is not available, falls back
+ * to `console.log`.
+ *
+ * @api public
+ */
+ exports.log = console.debug || console.log || (() => {});
+
+ /**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+ function save(namespaces) {
+ try {
+ if (namespaces) {
+ exports.storage.setItem('debug', namespaces);
+ } else {
+ exports.storage.removeItem('debug');
+ }
+ } catch (error) {
+ // Swallow
+ // XXX (@Qix-) should we be logging these?
+ }
+ }
+
+ /**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+ function load() {
+ let r;
+ try {
+ r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;
+ } catch (error) {
+ // Swallow
+ // XXX (@Qix-) should we be logging these?
+ }
+
+ // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
+ if (!r && typeof process !== 'undefined' && 'env' in process) {
+ r = process.env.DEBUG;
+ }
+
+ return r;
+ }
+
+ /**
+ * Localstorage attempts to return the localstorage.
+ *
+ * This is necessary because safari throws
+ * when a user disables cookies/localstorage
+ * and you attempt to access it.
+ *
+ * @return {LocalStorage}
+ * @api private
+ */
+
+ function localstorage() {
+ try {
+ // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
+ // The Browser also has localStorage in the global context.
+ return localStorage;
+ } catch (error) {
+ // Swallow
+ // XXX (@Qix-) should we be logging these?
+ }
+ }
+
+ module.exports = common(exports);
+
+ const {formatters} = module.exports;
+
+ /**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
+
+ formatters.j = function (v) {
+ try {
+ return JSON.stringify(v);
+ } catch (error) {
+ return '[UnexpectedJSONParseError]: ' + error.message;
+ }
+ };
+ } (browser, browser.exports));
+
+ var browserExports = browser.exports;
+
+ var __importDefault$8 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(transport, "__esModule", { value: true });
+ transport.Transport = transport.TransportError = void 0;
+ const engine_io_parser_1$4 = cjs$1;
+ const component_emitter_1$5 = require$$5;
+ const util_js_1$4 = util;
+ const parseqs_js_1$1 = parseqs;
+ const debug_1$9 = __importDefault$8(browserExports); // debug()
+ const debug$9 = (0, debug_1$9.default)("engine.io-client:transport"); // debug()
+ class TransportError extends Error {
+ constructor(reason, description, context) {
+ super(reason);
+ this.description = description;
+ this.context = context;
+ this.type = "TransportError";
+ }
+ }
+ transport.TransportError = TransportError;
+ class Transport extends component_emitter_1$5.Emitter {
+ /**
+ * Transport abstract constructor.
+ *
+ * @param {Object} opts - options
+ * @protected
+ */
+ constructor(opts) {
+ super();
+ this.writable = false;
+ (0, util_js_1$4.installTimerFunctions)(this, opts);
+ this.opts = opts;
+ this.query = opts.query;
+ this.socket = opts.socket;
+ this.supportsBinary = !opts.forceBase64;
+ }
+ /**
+ * Emits an error.
+ *
+ * @param {String} reason
+ * @param description
+ * @param context - the error context
+ * @return {Transport} for chaining
+ * @protected
+ */
+ onError(reason, description, context) {
+ super.emitReserved("error", new TransportError(reason, description, context));
+ return this;
+ }
+ /**
+ * Opens the transport.
+ */
+ open() {
+ this.readyState = "opening";
+ this.doOpen();
+ return this;
+ }
+ /**
+ * Closes the transport.
+ */
+ close() {
+ if (this.readyState === "opening" || this.readyState === "open") {
+ this.doClose();
+ this.onClose();
+ }
+ return this;
+ }
+ /**
+ * Sends multiple packets.
+ *
+ * @param {Array} packets
+ */
+ send(packets) {
+ if (this.readyState === "open") {
+ this.write(packets);
+ }
+ else {
+ // this might happen if the transport was silently closed in the beforeunload event handler
+ debug$9("transport is not open, discarding packets");
+ }
+ }
+ /**
+ * Called upon open
+ *
+ * @protected
+ */
+ onOpen() {
+ this.readyState = "open";
+ this.writable = true;
+ super.emitReserved("open");
+ }
+ /**
+ * Called with data.
+ *
+ * @param {String} data
+ * @protected
+ */
+ onData(data) {
+ const packet = (0, engine_io_parser_1$4.decodePacket)(data, this.socket.binaryType);
+ this.onPacket(packet);
+ }
+ /**
+ * Called with a decoded packet.
+ *
+ * @protected
+ */
+ onPacket(packet) {
+ super.emitReserved("packet", packet);
+ }
+ /**
+ * Called upon close.
+ *
+ * @protected
+ */
+ onClose(details) {
+ this.readyState = "closed";
+ super.emitReserved("close", details);
+ }
+ /**
+ * Pauses the transport, in order not to lose packets during an upgrade.
+ *
+ * @param onPause
+ */
+ pause(onPause) { }
+ createUri(schema, query = {}) {
+ return (schema +
+ "://" +
+ this._hostname() +
+ this._port() +
+ this.opts.path +
+ this._query(query));
+ }
+ _hostname() {
+ const hostname = this.opts.hostname;
+ return hostname.indexOf(":") === -1 ? hostname : "[" + hostname + "]";
+ }
+ _port() {
+ if (this.opts.port &&
+ ((this.opts.secure && Number(this.opts.port) !== 443) ||
+ (!this.opts.secure && Number(this.opts.port) !== 80))) {
+ return ":" + this.opts.port;
+ }
+ else {
+ return "";
+ }
+ }
+ _query(query) {
+ const encodedQuery = (0, parseqs_js_1$1.encode)(query);
+ return encodedQuery.length ? "?" + encodedQuery : "";
+ }
+ }
+ transport.Transport = Transport;
+
+ var __importDefault$7 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(polling, "__esModule", { value: true });
+ polling.Polling = void 0;
+ const transport_js_1$2 = transport;
+ const util_js_1$3 = util;
+ const engine_io_parser_1$3 = cjs$1;
+ const debug_1$8 = __importDefault$7(browserExports); // debug()
+ const debug$8 = (0, debug_1$8.default)("engine.io-client:polling"); // debug()
+ class Polling extends transport_js_1$2.Transport {
+ constructor() {
+ super(...arguments);
+ this._polling = false;
+ }
+ get name() {
+ return "polling";
+ }
+ /**
+ * Opens the socket (triggers polling). We write a PING message to determine
+ * when the transport is open.
+ *
+ * @protected
+ */
+ doOpen() {
+ this._poll();
+ }
+ /**
+ * Pauses polling.
+ *
+ * @param {Function} onPause - callback upon buffers are flushed and transport is paused
+ * @package
+ */
+ pause(onPause) {
+ this.readyState = "pausing";
+ const pause = () => {
+ debug$8("paused");
+ this.readyState = "paused";
+ onPause();
+ };
+ if (this._polling || !this.writable) {
+ let total = 0;
+ if (this._polling) {
+ debug$8("we are currently polling - waiting to pause");
+ total++;
+ this.once("pollComplete", function () {
+ debug$8("pre-pause polling complete");
+ --total || pause();
+ });
+ }
+ if (!this.writable) {
+ debug$8("we are currently writing - waiting to pause");
+ total++;
+ this.once("drain", function () {
+ debug$8("pre-pause writing complete");
+ --total || pause();
+ });
+ }
+ }
+ else {
+ pause();
+ }
+ }
+ /**
+ * Starts polling cycle.
+ *
+ * @private
+ */
+ _poll() {
+ debug$8("polling");
+ this._polling = true;
+ this.doPoll();
+ this.emitReserved("poll");
+ }
+ /**
+ * Overloads onData to detect payloads.
+ *
+ * @protected
+ */
+ onData(data) {
+ debug$8("polling got data %s", data);
+ const callback = (packet) => {
+ // if its the first message we consider the transport open
+ if ("opening" === this.readyState && packet.type === "open") {
+ this.onOpen();
+ }
+ // if its a close packet, we close the ongoing requests
+ if ("close" === packet.type) {
+ this.onClose({ description: "transport closed by the server" });
+ return false;
+ }
+ // otherwise bypass onData and handle the message
+ this.onPacket(packet);
+ };
+ // decode payload
+ (0, engine_io_parser_1$3.decodePayload)(data, this.socket.binaryType).forEach(callback);
+ // if an event did not trigger closing
+ if ("closed" !== this.readyState) {
+ // if we got data we're not polling
+ this._polling = false;
+ this.emitReserved("pollComplete");
+ if ("open" === this.readyState) {
+ this._poll();
+ }
+ else {
+ debug$8('ignoring poll - transport state "%s"', this.readyState);
+ }
+ }
+ }
+ /**
+ * For polling, send a close packet.
+ *
+ * @protected
+ */
+ doClose() {
+ const close = () => {
+ debug$8("writing close packet");
+ this.write([{ type: "close" }]);
+ };
+ if ("open" === this.readyState) {
+ debug$8("transport open - closing");
+ close();
+ }
+ else {
+ // in case we're trying to close while
+ // handshaking is in progress (GH-164)
+ debug$8("transport not open - deferring close");
+ this.once("open", close);
+ }
+ }
+ /**
+ * Writes a packets payload.
+ *
+ * @param {Array} packets - data packets
+ * @protected
+ */
+ write(packets) {
+ this.writable = false;
+ (0, engine_io_parser_1$3.encodePayload)(packets, (data) => {
+ this.doWrite(data, () => {
+ this.writable = true;
+ this.emitReserved("drain");
+ });
+ });
+ }
+ /**
+ * Generates uri for connection.
+ *
+ * @private
+ */
+ uri() {
+ const schema = this.opts.secure ? "https" : "http";
+ const query = this.query || {};
+ // cache busting is forced
+ if (false !== this.opts.timestampRequests) {
+ query[this.opts.timestampParam] = (0, util_js_1$3.randomString)();
+ }
+ if (!this.supportsBinary && !query.sid) {
+ query.b64 = 1;
+ }
+ return this.createUri(schema, query);
+ }
+ }
+ polling.Polling = Polling;
+
+ var hasCors = {};
+
+ Object.defineProperty(hasCors, "__esModule", { value: true });
+ hasCors.hasCORS = void 0;
+ // imported from https://github.com/component/has-cors
+ let value = false;
+ try {
+ value = typeof XMLHttpRequest !== 'undefined' &&
+ 'withCredentials' in new XMLHttpRequest();
+ }
+ catch (err) {
+ // if XMLHttp support is disabled in IE then it will throw
+ // when trying to create
+ }
+ hasCors.hasCORS = value;
+
+ var __importDefault$6 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(pollingXhr, "__esModule", { value: true });
+ pollingXhr.XHR = pollingXhr.Request = pollingXhr.BaseXHR = void 0;
+ const polling_js_1$1 = polling;
+ const component_emitter_1$4 = require$$5;
+ const util_js_1$2 = util;
+ const globals_node_js_1$3 = globals;
+ const has_cors_js_1 = hasCors;
+ const debug_1$7 = __importDefault$6(browserExports); // debug()
+ const debug$7 = (0, debug_1$7.default)("engine.io-client:polling"); // debug()
+ function empty() { }
+ class BaseXHR extends polling_js_1$1.Polling {
+ /**
+ * XHR Polling constructor.
+ *
+ * @param {Object} opts
+ * @package
+ */
+ constructor(opts) {
+ super(opts);
+ if (typeof location !== "undefined") {
+ const isSSL = "https:" === location.protocol;
+ let port = location.port;
+ // some user agents have empty `location.port`
+ if (!port) {
+ port = isSSL ? "443" : "80";
+ }
+ this.xd =
+ (typeof location !== "undefined" &&
+ opts.hostname !== location.hostname) ||
+ port !== opts.port;
+ }
+ }
+ /**
+ * Sends data.
+ *
+ * @param {String} data to send.
+ * @param {Function} called upon flush.
+ * @private
+ */
+ doWrite(data, fn) {
+ const req = this.request({
+ method: "POST",
+ data: data,
+ });
+ req.on("success", fn);
+ req.on("error", (xhrStatus, context) => {
+ this.onError("xhr post error", xhrStatus, context);
+ });
+ }
+ /**
+ * Starts a poll cycle.
+ *
+ * @private
+ */
+ doPoll() {
+ debug$7("xhr poll");
+ const req = this.request();
+ req.on("data", this.onData.bind(this));
+ req.on("error", (xhrStatus, context) => {
+ this.onError("xhr poll error", xhrStatus, context);
+ });
+ this.pollXhr = req;
+ }
+ }
+ pollingXhr.BaseXHR = BaseXHR;
+ class Request extends component_emitter_1$4.Emitter {
+ /**
+ * Request constructor
+ *
+ * @param {Object} options
+ * @package
+ */
+ constructor(createRequest, uri, opts) {
+ super();
+ this.createRequest = createRequest;
+ (0, util_js_1$2.installTimerFunctions)(this, opts);
+ this._opts = opts;
+ this._method = opts.method || "GET";
+ this._uri = uri;
+ this._data = undefined !== opts.data ? opts.data : null;
+ this._create();
+ }
+ /**
+ * Creates the XHR object and sends the request.
+ *
+ * @private
+ */
+ _create() {
+ var _a;
+ const opts = (0, util_js_1$2.pick)(this._opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref");
+ opts.xdomain = !!this._opts.xd;
+ const xhr = (this._xhr = this.createRequest(opts));
+ try {
+ debug$7("xhr open %s: %s", this._method, this._uri);
+ xhr.open(this._method, this._uri, true);
+ try {
+ if (this._opts.extraHeaders) {
+ // @ts-ignore
+ xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
+ for (let i in this._opts.extraHeaders) {
+ if (this._opts.extraHeaders.hasOwnProperty(i)) {
+ xhr.setRequestHeader(i, this._opts.extraHeaders[i]);
+ }
+ }
+ }
+ }
+ catch (e) { }
+ if ("POST" === this._method) {
+ try {
+ xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
+ }
+ catch (e) { }
+ }
+ try {
+ xhr.setRequestHeader("Accept", "*/*");
+ }
+ catch (e) { }
+ (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);
+ // ie6 check
+ if ("withCredentials" in xhr) {
+ xhr.withCredentials = this._opts.withCredentials;
+ }
+ if (this._opts.requestTimeout) {
+ xhr.timeout = this._opts.requestTimeout;
+ }
+ xhr.onreadystatechange = () => {
+ var _a;
+ if (xhr.readyState === 3) {
+ (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(
+ // @ts-ignore
+ xhr.getResponseHeader("set-cookie"));
+ }
+ if (4 !== xhr.readyState)
+ return;
+ if (200 === xhr.status || 1223 === xhr.status) {
+ this._onLoad();
+ }
+ else {
+ // make sure the `error` event handler that's user-set
+ // does not throw in the same tick and gets caught here
+ this.setTimeoutFn(() => {
+ this._onError(typeof xhr.status === "number" ? xhr.status : 0);
+ }, 0);
+ }
+ };
+ debug$7("xhr data %s", this._data);
+ xhr.send(this._data);
+ }
+ catch (e) {
+ // Need to defer since .create() is called directly from the constructor
+ // and thus the 'error' event can only be only bound *after* this exception
+ // occurs. Therefore, also, we cannot throw here at all.
+ this.setTimeoutFn(() => {
+ this._onError(e);
+ }, 0);
+ return;
+ }
+ if (typeof document !== "undefined") {
+ this._index = Request.requestsCount++;
+ Request.requests[this._index] = this;
+ }
+ }
+ /**
+ * Called upon error.
+ *
+ * @private
+ */
+ _onError(err) {
+ this.emitReserved("error", err, this._xhr);
+ this._cleanup(true);
+ }
+ /**
+ * Cleans up house.
+ *
+ * @private
+ */
+ _cleanup(fromError) {
+ if ("undefined" === typeof this._xhr || null === this._xhr) {
+ return;
+ }
+ this._xhr.onreadystatechange = empty;
+ if (fromError) {
+ try {
+ this._xhr.abort();
+ }
+ catch (e) { }
+ }
+ if (typeof document !== "undefined") {
+ delete Request.requests[this._index];
+ }
+ this._xhr = null;
+ }
+ /**
+ * Called upon load.
+ *
+ * @private
+ */
+ _onLoad() {
+ const data = this._xhr.responseText;
+ if (data !== null) {
+ this.emitReserved("data", data);
+ this.emitReserved("success");
+ this._cleanup();
+ }
+ }
+ /**
+ * Aborts the request.
+ *
+ * @package
+ */
+ abort() {
+ this._cleanup();
+ }
+ }
+ pollingXhr.Request = Request;
+ Request.requestsCount = 0;
+ Request.requests = {};
+ /**
+ * Aborts pending requests when unloading the window. This is needed to prevent
+ * memory leaks (e.g. when using IE) and to ensure that no spurious error is
+ * emitted.
+ */
+ if (typeof document !== "undefined") {
+ // @ts-ignore
+ if (typeof attachEvent === "function") {
+ // @ts-ignore
+ attachEvent("onunload", unloadHandler);
+ }
+ else if (typeof addEventListener === "function") {
+ const terminationEvent = "onpagehide" in globals_node_js_1$3.globalThisShim ? "pagehide" : "unload";
+ addEventListener(terminationEvent, unloadHandler, false);
+ }
+ }
+ function unloadHandler() {
+ for (let i in Request.requests) {
+ if (Request.requests.hasOwnProperty(i)) {
+ Request.requests[i].abort();
+ }
+ }
+ }
+ const hasXHR2 = (function () {
+ const xhr = newRequest({
+ xdomain: false,
+ });
+ return xhr && xhr.responseType !== null;
+ })();
+ /**
+ * HTTP long-polling based on the built-in `XMLHttpRequest` object.
+ *
+ * Usage: browser
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
+ */
+ class XHR extends BaseXHR {
+ constructor(opts) {
+ super(opts);
+ const forceBase64 = opts && opts.forceBase64;
+ this.supportsBinary = hasXHR2 && !forceBase64;
+ }
+ request(opts = {}) {
+ Object.assign(opts, { xd: this.xd }, this.opts);
+ return new Request(newRequest, this.uri(), opts);
+ }
+ }
+ pollingXhr.XHR = XHR;
+ function newRequest(opts) {
+ const xdomain = opts.xdomain;
+ // XMLHttpRequest can be disabled on IE
+ try {
+ if ("undefined" !== typeof XMLHttpRequest && (!xdomain || has_cors_js_1.hasCORS)) {
+ return new XMLHttpRequest();
+ }
+ }
+ catch (e) { }
+ if (!xdomain) {
+ try {
+ return new globals_node_js_1$3.globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP");
+ }
+ catch (e) { }
+ }
+ }
+
+ var websocket = {};
+
+ var __importDefault$5 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(websocket, "__esModule", { value: true });
+ websocket.WS = websocket.BaseWS = void 0;
+ const transport_js_1$1 = transport;
+ const util_js_1$1 = util;
+ const engine_io_parser_1$2 = cjs$1;
+ const globals_node_js_1$2 = globals;
+ const debug_1$6 = __importDefault$5(browserExports); // debug()
+ const debug$6 = (0, debug_1$6.default)("engine.io-client:websocket"); // debug()
+ // detect ReactNative environment
+ const isReactNative = typeof navigator !== "undefined" &&
+ typeof navigator.product === "string" &&
+ navigator.product.toLowerCase() === "reactnative";
+ class BaseWS extends transport_js_1$1.Transport {
+ get name() {
+ return "websocket";
+ }
+ doOpen() {
+ const uri = this.uri();
+ const protocols = this.opts.protocols;
+ // React Native only supports the 'headers' option, and will print a warning if anything else is passed
+ const opts = isReactNative
+ ? {}
+ : (0, util_js_1$1.pick)(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity");
+ if (this.opts.extraHeaders) {
+ opts.headers = this.opts.extraHeaders;
+ }
+ try {
+ this.ws = this.createSocket(uri, protocols, opts);
+ }
+ catch (err) {
+ return this.emitReserved("error", err);
+ }
+ this.ws.binaryType = this.socket.binaryType;
+ this.addEventListeners();
+ }
+ /**
+ * Adds event listeners to the socket
+ *
+ * @private
+ */
+ addEventListeners() {
+ this.ws.onopen = () => {
+ if (this.opts.autoUnref) {
+ this.ws._socket.unref();
+ }
+ this.onOpen();
+ };
+ this.ws.onclose = (closeEvent) => this.onClose({
+ description: "websocket connection closed",
+ context: closeEvent,
+ });
+ this.ws.onmessage = (ev) => this.onData(ev.data);
+ this.ws.onerror = (e) => this.onError("websocket error", e);
+ }
+ write(packets) {
+ this.writable = false;
+ // encodePacket efficient as it uses WS framing
+ // no need for encodePayload
+ for (let i = 0; i < packets.length; i++) {
+ const packet = packets[i];
+ const lastPacket = i === packets.length - 1;
+ (0, engine_io_parser_1$2.encodePacket)(packet, this.supportsBinary, (data) => {
+ // Sometimes the websocket has already been closed but the browser didn't
+ // have a chance of informing us about it yet, in that case send will
+ // throw an error
+ try {
+ this.doWrite(packet, data);
+ }
+ catch (e) {
+ debug$6("websocket closed before onclose event");
+ }
+ if (lastPacket) {
+ // fake drain
+ // defer to next tick to allow Socket to clear writeBuffer
+ (0, globals_node_js_1$2.nextTick)(() => {
+ this.writable = true;
+ this.emitReserved("drain");
+ }, this.setTimeoutFn);
+ }
+ });
+ }
+ }
+ doClose() {
+ if (typeof this.ws !== "undefined") {
+ this.ws.onerror = () => { };
+ this.ws.close();
+ this.ws = null;
+ }
+ }
+ /**
+ * Generates uri for connection.
+ *
+ * @private
+ */
+ uri() {
+ const schema = this.opts.secure ? "wss" : "ws";
+ const query = this.query || {};
+ // append timestamp to URI
+ if (this.opts.timestampRequests) {
+ query[this.opts.timestampParam] = (0, util_js_1$1.randomString)();
+ }
+ // communicate binary support capabilities
+ if (!this.supportsBinary) {
+ query.b64 = 1;
+ }
+ return this.createUri(schema, query);
+ }
+ }
+ websocket.BaseWS = BaseWS;
+ const WebSocketCtor = globals_node_js_1$2.globalThisShim.WebSocket || globals_node_js_1$2.globalThisShim.MozWebSocket;
+ /**
+ * WebSocket transport based on the built-in `WebSocket` object.
+ *
+ * Usage: browser, Node.js (since v21), Deno, Bun
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
+ * @see https://caniuse.com/mdn-api_websocket
+ * @see https://nodejs.org/api/globals.html#websocket
+ */
+ class WS extends BaseWS {
+ createSocket(uri, protocols, opts) {
+ return !isReactNative
+ ? protocols
+ ? new WebSocketCtor(uri, protocols)
+ : new WebSocketCtor(uri)
+ : new WebSocketCtor(uri, protocols, opts);
+ }
+ doWrite(_packet, data) {
+ this.ws.send(data);
+ }
+ }
+ websocket.WS = WS;
+
+ var webtransport = {};
+
+ var __importDefault$4 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(webtransport, "__esModule", { value: true });
+ webtransport.WT = void 0;
+ const transport_js_1 = transport;
+ const globals_node_js_1$1 = globals;
+ const engine_io_parser_1$1 = cjs$1;
+ const debug_1$5 = __importDefault$4(browserExports); // debug()
+ const debug$5 = (0, debug_1$5.default)("engine.io-client:webtransport"); // debug()
+ /**
+ * WebTransport transport based on the built-in `WebTransport` object.
+ *
+ * Usage: browser, Node.js (with the `@fails-components/webtransport` package)
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport
+ * @see https://caniuse.com/webtransport
+ */
+ class WT extends transport_js_1.Transport {
+ get name() {
+ return "webtransport";
+ }
+ doOpen() {
+ try {
+ // @ts-ignore
+ this._transport = new WebTransport(this.createUri("https"), this.opts.transportOptions[this.name]);
+ }
+ catch (err) {
+ return this.emitReserved("error", err);
+ }
+ this._transport.closed
+ .then(() => {
+ debug$5("transport closed gracefully");
+ this.onClose();
+ })
+ .catch((err) => {
+ debug$5("transport closed due to %s", err);
+ this.onError("webtransport error", err);
+ });
+ // note: we could have used async/await, but that would require some additional polyfills
+ this._transport.ready.then(() => {
+ this._transport.createBidirectionalStream().then((stream) => {
+ const decoderStream = (0, engine_io_parser_1$1.createPacketDecoderStream)(Number.MAX_SAFE_INTEGER, this.socket.binaryType);
+ const reader = stream.readable.pipeThrough(decoderStream).getReader();
+ const encoderStream = (0, engine_io_parser_1$1.createPacketEncoderStream)();
+ encoderStream.readable.pipeTo(stream.writable);
+ this._writer = encoderStream.writable.getWriter();
+ const read = () => {
+ reader
+ .read()
+ .then(({ done, value }) => {
+ if (done) {
+ debug$5("session is closed");
+ return;
+ }
+ debug$5("received chunk: %o", value);
+ this.onPacket(value);
+ read();
+ })
+ .catch((err) => {
+ debug$5("an error occurred while reading: %s", err);
+ });
+ };
+ read();
+ const packet = { type: "open" };
+ if (this.query.sid) {
+ packet.data = `{"sid":"${this.query.sid}"}`;
+ }
+ this._writer.write(packet).then(() => this.onOpen());
+ });
+ });
+ }
+ write(packets) {
+ this.writable = false;
+ for (let i = 0; i < packets.length; i++) {
+ const packet = packets[i];
+ const lastPacket = i === packets.length - 1;
+ this._writer.write(packet).then(() => {
+ if (lastPacket) {
+ (0, globals_node_js_1$1.nextTick)(() => {
+ this.writable = true;
+ this.emitReserved("drain");
+ }, this.setTimeoutFn);
+ }
+ });
+ }
+ }
+ doClose() {
+ var _a;
+ (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();
+ }
+ }
+ webtransport.WT = WT;
+
+ Object.defineProperty(transports, "__esModule", { value: true });
+ transports.transports = void 0;
+ const polling_xhr_node_js_1 = pollingXhr;
+ const websocket_node_js_1 = websocket;
+ const webtransport_js_1 = webtransport;
+ transports.transports = {
+ websocket: websocket_node_js_1.WS,
+ webtransport: webtransport_js_1.WT,
+ polling: polling_xhr_node_js_1.XHR,
+ };
+
+ var parseuri = {};
+
+ Object.defineProperty(parseuri, "__esModule", { value: true });
+ parseuri.parse = parse;
+ // imported from https://github.com/galkn/parseuri
+ /**
+ * Parses a URI
+ *
+ * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.
+ *
+ * See:
+ * - https://developer.mozilla.org/en-US/docs/Web/API/URL
+ * - https://caniuse.com/url
+ * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B
+ *
+ * History of the parse() method:
+ * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c
+ * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3
+ * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242
+ *
+ * @author Steven Levithan (MIT license)
+ * @api private
+ */
+ const re = /^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
+ const parts = [
+ 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'
+ ];
+ function parse(str) {
+ if (str.length > 8000) {
+ throw "URI too long";
+ }
+ const src = str, b = str.indexOf('['), e = str.indexOf(']');
+ if (b != -1 && e != -1) {
+ str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);
+ }
+ let m = re.exec(str || ''), uri = {}, i = 14;
+ while (i--) {
+ uri[parts[i]] = m[i] || '';
+ }
+ if (b != -1 && e != -1) {
+ uri.source = src;
+ uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');
+ uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');
+ uri.ipv6uri = true;
+ }
+ uri.pathNames = pathNames(uri, uri['path']);
+ uri.queryKey = queryKey(uri, uri['query']);
+ return uri;
+ }
+ function pathNames(obj, path) {
+ const regx = /\/{2,9}/g, names = path.replace(regx, "/").split("/");
+ if (path.slice(0, 1) == '/' || path.length === 0) {
+ names.splice(0, 1);
+ }
+ if (path.slice(-1) == '/') {
+ names.splice(names.length - 1, 1);
+ }
+ return names;
+ }
+ function queryKey(uri, query) {
+ const data = {};
+ query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {
+ if ($1) {
+ data[$1] = $2;
+ }
+ });
+ return data;
+ }
+
+ var __importDefault$3 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(socket$2, "__esModule", { value: true });
+ socket$2.Socket = socket$2.SocketWithUpgrade = socket$2.SocketWithoutUpgrade = void 0;
+ const index_js_1 = transports;
+ const util_js_1 = util;
+ const parseqs_js_1 = parseqs;
+ const parseuri_js_1 = parseuri;
+ const component_emitter_1$3 = require$$5;
+ const engine_io_parser_1 = cjs$1;
+ const globals_node_js_1 = globals;
+ const debug_1$4 = __importDefault$3(browserExports); // debug()
+ const debug$4 = (0, debug_1$4.default)("engine.io-client:socket"); // debug()
+ const withEventListeners = typeof addEventListener === "function" &&
+ typeof removeEventListener === "function";
+ const OFFLINE_EVENT_LISTENERS = [];
+ if (withEventListeners) {
+ // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the
+ // script, so we create one single event listener here which will forward the event to the socket instances
+ addEventListener("offline", () => {
+ debug$4("closing %d connection(s) because the network was lost", OFFLINE_EVENT_LISTENERS.length);
+ OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());
+ }, false);
+ }
+ /**
+ * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established
+ * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.
+ *
+ * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that
+ * successfully establishes the connection.
+ *
+ * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.
+ *
+ * @example
+ * import { SocketWithoutUpgrade, WebSocket } from "engine.io-client";
+ *
+ * const socket = new SocketWithoutUpgrade({
+ * transports: [WebSocket]
+ * });
+ *
+ * socket.on("open", () => {
+ * socket.send("hello");
+ * });
+ *
+ * @see SocketWithUpgrade
+ * @see Socket
+ */
+ class SocketWithoutUpgrade extends component_emitter_1$3.Emitter {
+ /**
+ * Socket constructor.
+ *
+ * @param {String|Object} uri - uri or options
+ * @param {Object} opts - options
+ */
+ constructor(uri, opts) {
+ super();
+ this.binaryType = globals_node_js_1.defaultBinaryType;
+ this.writeBuffer = [];
+ this._prevBufferLen = 0;
+ this._pingInterval = -1;
+ this._pingTimeout = -1;
+ this._maxPayload = -1;
+ /**
+ * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the
+ * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.
+ */
+ this._pingTimeoutTime = Infinity;
+ if (uri && "object" === typeof uri) {
+ opts = uri;
+ uri = null;
+ }
+ if (uri) {
+ const parsedUri = (0, parseuri_js_1.parse)(uri);
+ opts.hostname = parsedUri.host;
+ opts.secure =
+ parsedUri.protocol === "https" || parsedUri.protocol === "wss";
+ opts.port = parsedUri.port;
+ if (parsedUri.query)
+ opts.query = parsedUri.query;
+ }
+ else if (opts.host) {
+ opts.hostname = (0, parseuri_js_1.parse)(opts.host).host;
+ }
+ (0, util_js_1.installTimerFunctions)(this, opts);
+ this.secure =
+ null != opts.secure
+ ? opts.secure
+ : typeof location !== "undefined" && "https:" === location.protocol;
+ if (opts.hostname && !opts.port) {
+ // if no port is specified manually, use the protocol default
+ opts.port = this.secure ? "443" : "80";
+ }
+ this.hostname =
+ opts.hostname ||
+ (typeof location !== "undefined" ? location.hostname : "localhost");
+ this.port =
+ opts.port ||
+ (typeof location !== "undefined" && location.port
+ ? location.port
+ : this.secure
+ ? "443"
+ : "80");
+ this.transports = [];
+ this._transportsByName = {};
+ opts.transports.forEach((t) => {
+ const transportName = t.prototype.name;
+ this.transports.push(transportName);
+ this._transportsByName[transportName] = t;
+ });
+ this.opts = Object.assign({
+ path: "/engine.io",
+ agent: false,
+ withCredentials: false,
+ upgrade: true,
+ timestampParam: "t",
+ rememberUpgrade: false,
+ addTrailingSlash: true,
+ rejectUnauthorized: true,
+ perMessageDeflate: {
+ threshold: 1024,
+ },
+ transportOptions: {},
+ closeOnBeforeunload: false,
+ }, opts);
+ this.opts.path =
+ this.opts.path.replace(/\/$/, "") +
+ (this.opts.addTrailingSlash ? "/" : "");
+ if (typeof this.opts.query === "string") {
+ this.opts.query = (0, parseqs_js_1.decode)(this.opts.query);
+ }
+ if (withEventListeners) {
+ if (this.opts.closeOnBeforeunload) {
+ // Firefox closes the connection when the "beforeunload" event is emitted but not Chrome. This event listener
+ // ensures every browser behaves the same (no "disconnect" event at the Socket.IO level when the page is
+ // closed/reloaded)
+ this._beforeunloadEventListener = () => {
+ if (this.transport) {
+ // silently close the transport
+ this.transport.removeAllListeners();
+ this.transport.close();
+ }
+ };
+ addEventListener("beforeunload", this._beforeunloadEventListener, false);
+ }
+ if (this.hostname !== "localhost") {
+ debug$4("adding listener for the 'offline' event");
+ this._offlineEventListener = () => {
+ this._onClose("transport close", {
+ description: "network connection lost",
+ });
+ };
+ OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);
+ }
+ }
+ if (this.opts.withCredentials) {
+ this._cookieJar = (0, globals_node_js_1.createCookieJar)();
+ }
+ this._open();
+ }
+ /**
+ * Creates transport of the given type.
+ *
+ * @param {String} name - transport name
+ * @return {Transport}
+ * @private
+ */
+ createTransport(name) {
+ debug$4('creating transport "%s"', name);
+ const query = Object.assign({}, this.opts.query);
+ // append engine.io protocol identifier
+ query.EIO = engine_io_parser_1.protocol;
+ // transport name
+ query.transport = name;
+ // session id if we already have one
+ if (this.id)
+ query.sid = this.id;
+ const opts = Object.assign({}, this.opts, {
+ query,
+ socket: this,
+ hostname: this.hostname,
+ secure: this.secure,
+ port: this.port,
+ }, this.opts.transportOptions[name]);
+ debug$4("options: %j", opts);
+ return new this._transportsByName[name](opts);
+ }
+ /**
+ * Initializes transport to use and starts probe.
+ *
+ * @private
+ */
+ _open() {
+ if (this.transports.length === 0) {
+ // Emit error on next tick so it can be listened to
+ this.setTimeoutFn(() => {
+ this.emitReserved("error", "No transports available");
+ }, 0);
+ return;
+ }
+ const transportName = this.opts.rememberUpgrade &&
+ SocketWithoutUpgrade.priorWebsocketSuccess &&
+ this.transports.indexOf("websocket") !== -1
+ ? "websocket"
+ : this.transports[0];
+ this.readyState = "opening";
+ const transport = this.createTransport(transportName);
+ transport.open();
+ this.setTransport(transport);
+ }
+ /**
+ * Sets the current transport. Disables the existing one (if any).
+ *
+ * @private
+ */
+ setTransport(transport) {
+ debug$4("setting transport %s", transport.name);
+ if (this.transport) {
+ debug$4("clearing existing transport %s", this.transport.name);
+ this.transport.removeAllListeners();
+ }
+ // set up transport
+ this.transport = transport;
+ // set up transport listeners
+ transport
+ .on("drain", this._onDrain.bind(this))
+ .on("packet", this._onPacket.bind(this))
+ .on("error", this._onError.bind(this))
+ .on("close", (reason) => this._onClose("transport close", reason));
+ }
+ /**
+ * Called when connection is deemed open.
+ *
+ * @private
+ */
+ onOpen() {
+ debug$4("socket open");
+ this.readyState = "open";
+ SocketWithoutUpgrade.priorWebsocketSuccess =
+ "websocket" === this.transport.name;
+ this.emitReserved("open");
+ this.flush();
+ }
+ /**
+ * Handles a packet.
+ *
+ * @private
+ */
+ _onPacket(packet) {
+ if ("opening" === this.readyState ||
+ "open" === this.readyState ||
+ "closing" === this.readyState) {
+ debug$4('socket receive: type "%s", data "%s"', packet.type, packet.data);
+ this.emitReserved("packet", packet);
+ // Socket is live - any packet counts
+ this.emitReserved("heartbeat");
+ switch (packet.type) {
+ case "open":
+ this.onHandshake(JSON.parse(packet.data));
+ break;
+ case "ping":
+ this._sendPacket("pong");
+ this.emitReserved("ping");
+ this.emitReserved("pong");
+ this._resetPingTimeout();
+ break;
+ case "error":
+ const err = new Error("server error");
+ // @ts-ignore
+ err.code = packet.data;
+ this._onError(err);
+ break;
+ case "message":
+ this.emitReserved("data", packet.data);
+ this.emitReserved("message", packet.data);
+ break;
+ }
+ }
+ else {
+ debug$4('packet received with socket readyState "%s"', this.readyState);
+ }
+ }
+ /**
+ * Called upon handshake completion.
+ *
+ * @param {Object} data - handshake obj
+ * @private
+ */
+ onHandshake(data) {
+ this.emitReserved("handshake", data);
+ this.id = data.sid;
+ this.transport.query.sid = data.sid;
+ this._pingInterval = data.pingInterval;
+ this._pingTimeout = data.pingTimeout;
+ this._maxPayload = data.maxPayload;
+ this.onOpen();
+ // In case open handler closes socket
+ if ("closed" === this.readyState)
+ return;
+ this._resetPingTimeout();
+ }
+ /**
+ * Sets and resets ping timeout timer based on server pings.
+ *
+ * @private
+ */
+ _resetPingTimeout() {
+ this.clearTimeoutFn(this._pingTimeoutTimer);
+ const delay = this._pingInterval + this._pingTimeout;
+ this._pingTimeoutTime = Date.now() + delay;
+ this._pingTimeoutTimer = this.setTimeoutFn(() => {
+ this._onClose("ping timeout");
+ }, delay);
+ if (this.opts.autoUnref) {
+ this._pingTimeoutTimer.unref();
+ }
+ }
+ /**
+ * Called on `drain` event
+ *
+ * @private
+ */
+ _onDrain() {
+ this.writeBuffer.splice(0, this._prevBufferLen);
+ // setting prevBufferLen = 0 is very important
+ // for example, when upgrading, upgrade packet is sent over,
+ // and a nonzero prevBufferLen could cause problems on `drain`
+ this._prevBufferLen = 0;
+ if (0 === this.writeBuffer.length) {
+ this.emitReserved("drain");
+ }
+ else {
+ this.flush();
+ }
+ }
+ /**
+ * Flush write buffers.
+ *
+ * @private
+ */
+ flush() {
+ if ("closed" !== this.readyState &&
+ this.transport.writable &&
+ !this.upgrading &&
+ this.writeBuffer.length) {
+ const packets = this._getWritablePackets();
+ debug$4("flushing %d packets in socket", packets.length);
+ this.transport.send(packets);
+ // keep track of current length of writeBuffer
+ // splice writeBuffer and callbackBuffer on `drain`
+ this._prevBufferLen = packets.length;
+ this.emitReserved("flush");
+ }
+ }
+ /**
+ * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP
+ * long-polling)
+ *
+ * @private
+ */
+ _getWritablePackets() {
+ const shouldCheckPayloadSize = this._maxPayload &&
+ this.transport.name === "polling" &&
+ this.writeBuffer.length > 1;
+ if (!shouldCheckPayloadSize) {
+ return this.writeBuffer;
+ }
+ let payloadSize = 1; // first packet type
+ for (let i = 0; i < this.writeBuffer.length; i++) {
+ const data = this.writeBuffer[i].data;
+ if (data) {
+ payloadSize += (0, util_js_1.byteLength)(data);
+ }
+ if (i > 0 && payloadSize > this._maxPayload) {
+ debug$4("only send %d out of %d packets", i, this.writeBuffer.length);
+ return this.writeBuffer.slice(0, i);
+ }
+ payloadSize += 2; // separator + packet type
+ }
+ debug$4("payload size is %d (max: %d)", payloadSize, this._maxPayload);
+ return this.writeBuffer;
+ }
+ /**
+ * Checks whether the heartbeat timer has expired but the socket has not yet been notified.
+ *
+ * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the
+ * `write()` method then the message would not be buffered by the Socket.IO client.
+ *
+ * @return {boolean}
+ * @private
+ */
+ /* private */ _hasPingExpired() {
+ if (!this._pingTimeoutTime)
+ return true;
+ const hasExpired = Date.now() > this._pingTimeoutTime;
+ if (hasExpired) {
+ debug$4("throttled timer detected, scheduling connection close");
+ this._pingTimeoutTime = 0;
+ (0, globals_node_js_1.nextTick)(() => {
+ this._onClose("ping timeout");
+ }, this.setTimeoutFn);
+ }
+ return hasExpired;
+ }
+ /**
+ * Sends a message.
+ *
+ * @param {String} msg - message.
+ * @param {Object} options.
+ * @param {Function} fn - callback function.
+ * @return {Socket} for chaining.
+ */
+ write(msg, options, fn) {
+ this._sendPacket("message", msg, options, fn);
+ return this;
+ }
+ /**
+ * Sends a message. Alias of {@link Socket#write}.
+ *
+ * @param {String} msg - message.
+ * @param {Object} options.
+ * @param {Function} fn - callback function.
+ * @return {Socket} for chaining.
+ */
+ send(msg, options, fn) {
+ this._sendPacket("message", msg, options, fn);
+ return this;
+ }
+ /**
+ * Sends a packet.
+ *
+ * @param {String} type: packet type.
+ * @param {String} data.
+ * @param {Object} options.
+ * @param {Function} fn - callback function.
+ * @private
+ */
+ _sendPacket(type, data, options, fn) {
+ if ("function" === typeof data) {
+ fn = data;
+ data = undefined;
+ }
+ if ("function" === typeof options) {
+ fn = options;
+ options = null;
+ }
+ if ("closing" === this.readyState || "closed" === this.readyState) {
+ return;
+ }
+ options = options || {};
+ options.compress = false !== options.compress;
+ const packet = {
+ type: type,
+ data: data,
+ options: options,
+ };
+ this.emitReserved("packetCreate", packet);
+ this.writeBuffer.push(packet);
+ if (fn)
+ this.once("flush", fn);
+ this.flush();
+ }
+ /**
+ * Closes the connection.
+ */
+ close() {
+ const close = () => {
+ this._onClose("forced close");
+ debug$4("socket closing - telling transport to close");
+ this.transport.close();
+ };
+ const cleanupAndClose = () => {
+ this.off("upgrade", cleanupAndClose);
+ this.off("upgradeError", cleanupAndClose);
+ close();
+ };
+ const waitForUpgrade = () => {
+ // wait for upgrade to finish since we can't send packets while pausing a transport
+ this.once("upgrade", cleanupAndClose);
+ this.once("upgradeError", cleanupAndClose);
+ };
+ if ("opening" === this.readyState || "open" === this.readyState) {
+ this.readyState = "closing";
+ if (this.writeBuffer.length) {
+ this.once("drain", () => {
+ if (this.upgrading) {
+ waitForUpgrade();
+ }
+ else {
+ close();
+ }
+ });
+ }
+ else if (this.upgrading) {
+ waitForUpgrade();
+ }
+ else {
+ close();
+ }
+ }
+ return this;
+ }
+ /**
+ * Called upon transport error
+ *
+ * @private
+ */
+ _onError(err) {
+ debug$4("socket error %j", err);
+ SocketWithoutUpgrade.priorWebsocketSuccess = false;
+ if (this.opts.tryAllTransports &&
+ this.transports.length > 1 &&
+ this.readyState === "opening") {
+ debug$4("trying next transport");
+ this.transports.shift();
+ return this._open();
+ }
+ this.emitReserved("error", err);
+ this._onClose("transport error", err);
+ }
+ /**
+ * Called upon transport close.
+ *
+ * @private
+ */
+ _onClose(reason, description) {
+ if ("opening" === this.readyState ||
+ "open" === this.readyState ||
+ "closing" === this.readyState) {
+ debug$4('socket close with reason: "%s"', reason);
+ // clear timers
+ this.clearTimeoutFn(this._pingTimeoutTimer);
+ // stop event from firing again for transport
+ this.transport.removeAllListeners("close");
+ // ensure transport won't stay open
+ this.transport.close();
+ // ignore further transport communication
+ this.transport.removeAllListeners();
+ if (withEventListeners) {
+ if (this._beforeunloadEventListener) {
+ removeEventListener("beforeunload", this._beforeunloadEventListener, false);
+ }
+ if (this._offlineEventListener) {
+ const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);
+ if (i !== -1) {
+ debug$4("removing listener for the 'offline' event");
+ OFFLINE_EVENT_LISTENERS.splice(i, 1);
+ }
+ }
+ }
+ // set ready state
+ this.readyState = "closed";
+ // clear session id
+ this.id = null;
+ // emit close event
+ this.emitReserved("close", reason, description);
+ // clean buffers after, so users can still
+ // grab the buffers on `close` event
+ this.writeBuffer = [];
+ this._prevBufferLen = 0;
+ }
+ }
+ }
+ socket$2.SocketWithoutUpgrade = SocketWithoutUpgrade;
+ SocketWithoutUpgrade.protocol = engine_io_parser_1.protocol;
+ /**
+ * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established
+ * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.
+ *
+ * This class comes with an upgrade mechanism, which means that once the connection is established with the first
+ * low-level transport, it will try to upgrade to a better transport.
+ *
+ * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.
+ *
+ * @example
+ * import { SocketWithUpgrade, WebSocket } from "engine.io-client";
+ *
+ * const socket = new SocketWithUpgrade({
+ * transports: [WebSocket]
+ * });
+ *
+ * socket.on("open", () => {
+ * socket.send("hello");
+ * });
+ *
+ * @see SocketWithoutUpgrade
+ * @see Socket
+ */
+ class SocketWithUpgrade extends SocketWithoutUpgrade {
+ constructor() {
+ super(...arguments);
+ this._upgrades = [];
+ }
+ onOpen() {
+ super.onOpen();
+ if ("open" === this.readyState && this.opts.upgrade) {
+ debug$4("starting upgrade probes");
+ for (let i = 0; i < this._upgrades.length; i++) {
+ this._probe(this._upgrades[i]);
+ }
+ }
+ }
+ /**
+ * Probes a transport.
+ *
+ * @param {String} name - transport name
+ * @private
+ */
+ _probe(name) {
+ debug$4('probing transport "%s"', name);
+ let transport = this.createTransport(name);
+ let failed = false;
+ SocketWithoutUpgrade.priorWebsocketSuccess = false;
+ const onTransportOpen = () => {
+ if (failed)
+ return;
+ debug$4('probe transport "%s" opened', name);
+ transport.send([{ type: "ping", data: "probe" }]);
+ transport.once("packet", (msg) => {
+ if (failed)
+ return;
+ if ("pong" === msg.type && "probe" === msg.data) {
+ debug$4('probe transport "%s" pong', name);
+ this.upgrading = true;
+ this.emitReserved("upgrading", transport);
+ if (!transport)
+ return;
+ SocketWithoutUpgrade.priorWebsocketSuccess =
+ "websocket" === transport.name;
+ debug$4('pausing current transport "%s"', this.transport.name);
+ this.transport.pause(() => {
+ if (failed)
+ return;
+ if ("closed" === this.readyState)
+ return;
+ debug$4("changing transport and sending upgrade packet");
+ cleanup();
+ this.setTransport(transport);
+ transport.send([{ type: "upgrade" }]);
+ this.emitReserved("upgrade", transport);
+ transport = null;
+ this.upgrading = false;
+ this.flush();
+ });
+ }
+ else {
+ debug$4('probe transport "%s" failed', name);
+ const err = new Error("probe error");
+ // @ts-ignore
+ err.transport = transport.name;
+ this.emitReserved("upgradeError", err);
+ }
+ });
+ };
+ function freezeTransport() {
+ if (failed)
+ return;
+ // Any callback called by transport should be ignored since now
+ failed = true;
+ cleanup();
+ transport.close();
+ transport = null;
+ }
+ // Handle any error that happens while probing
+ const onerror = (err) => {
+ const error = new Error("probe error: " + err);
+ // @ts-ignore
+ error.transport = transport.name;
+ freezeTransport();
+ debug$4('probe transport "%s" failed because of error: %s', name, err);
+ this.emitReserved("upgradeError", error);
+ };
+ function onTransportClose() {
+ onerror("transport closed");
+ }
+ // When the socket is closed while we're probing
+ function onclose() {
+ onerror("socket closed");
+ }
+ // When the socket is upgraded while we're probing
+ function onupgrade(to) {
+ if (transport && to.name !== transport.name) {
+ debug$4('"%s" works - aborting "%s"', to.name, transport.name);
+ freezeTransport();
+ }
+ }
+ // Remove all listeners on the transport and on self
+ const cleanup = () => {
+ transport.removeListener("open", onTransportOpen);
+ transport.removeListener("error", onerror);
+ transport.removeListener("close", onTransportClose);
+ this.off("close", onclose);
+ this.off("upgrading", onupgrade);
+ };
+ transport.once("open", onTransportOpen);
+ transport.once("error", onerror);
+ transport.once("close", onTransportClose);
+ this.once("close", onclose);
+ this.once("upgrading", onupgrade);
+ if (this._upgrades.indexOf("webtransport") !== -1 &&
+ name !== "webtransport") {
+ // favor WebTransport
+ this.setTimeoutFn(() => {
+ if (!failed) {
+ transport.open();
+ }
+ }, 200);
+ }
+ else {
+ transport.open();
+ }
+ }
+ onHandshake(data) {
+ this._upgrades = this._filterUpgrades(data.upgrades);
+ super.onHandshake(data);
+ }
+ /**
+ * Filters upgrades, returning only those matching client transports.
+ *
+ * @param {Array} upgrades - server upgrades
+ * @private
+ */
+ _filterUpgrades(upgrades) {
+ const filteredUpgrades = [];
+ for (let i = 0; i < upgrades.length; i++) {
+ if (~this.transports.indexOf(upgrades[i]))
+ filteredUpgrades.push(upgrades[i]);
+ }
+ return filteredUpgrades;
+ }
+ }
+ socket$2.SocketWithUpgrade = SocketWithUpgrade;
+ /**
+ * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established
+ * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.
+ *
+ * This class comes with an upgrade mechanism, which means that once the connection is established with the first
+ * low-level transport, it will try to upgrade to a better transport.
+ *
+ * @example
+ * import { Socket } from "engine.io-client";
+ *
+ * const socket = new Socket();
+ *
+ * socket.on("open", () => {
+ * socket.send("hello");
+ * });
+ *
+ * @see SocketWithoutUpgrade
+ * @see SocketWithUpgrade
+ */
+ class Socket$1 extends SocketWithUpgrade {
+ constructor(uri, opts = {}) {
+ const o = typeof uri === "object" ? uri : opts;
+ if (!o.transports ||
+ (o.transports && typeof o.transports[0] === "string")) {
+ o.transports = (o.transports || ["polling", "websocket", "webtransport"])
+ .map((transportName) => index_js_1.transports[transportName])
+ .filter((t) => !!t);
+ }
+ super(uri, o);
+ }
+ }
+ socket$2.Socket = Socket$1;
+
+ var pollingFetch = {};
+
+ Object.defineProperty(pollingFetch, "__esModule", { value: true });
+ pollingFetch.Fetch = void 0;
+ const polling_js_1 = polling;
+ /**
+ * HTTP long-polling based on the built-in `fetch()` method.
+ *
+ * Usage: browser, Node.js (since v18), Deno, Bun
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch
+ * @see https://caniuse.com/fetch
+ * @see https://nodejs.org/api/globals.html#fetch
+ */
+ class Fetch extends polling_js_1.Polling {
+ doPoll() {
+ this._fetch()
+ .then((res) => {
+ if (!res.ok) {
+ return this.onError("fetch read error", res.status, res);
+ }
+ res.text().then((data) => this.onData(data));
+ })
+ .catch((err) => {
+ this.onError("fetch read error", err);
+ });
+ }
+ doWrite(data, callback) {
+ this._fetch(data)
+ .then((res) => {
+ if (!res.ok) {
+ return this.onError("fetch write error", res.status, res);
+ }
+ callback();
+ })
+ .catch((err) => {
+ this.onError("fetch write error", err);
+ });
+ }
+ _fetch(data) {
+ var _a;
+ const isPost = data !== undefined;
+ const headers = new Headers(this.opts.extraHeaders);
+ if (isPost) {
+ headers.set("content-type", "text/plain;charset=UTF-8");
+ }
+ (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.appendCookies(headers);
+ return fetch(this.uri(), {
+ method: isPost ? "POST" : "GET",
+ body: isPost ? data : null,
+ headers,
+ credentials: this.opts.withCredentials ? "include" : "omit",
+ }).then((res) => {
+ var _a;
+ // @ts-ignore getSetCookie() was added in Node.js v19.7.0
+ (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(res.headers.getSetCookie());
+ return res;
+ });
+ }
+ }
+ pollingFetch.Fetch = Fetch;
+
+ (function (exports) {
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.nextTick = exports.parse = exports.installTimerFunctions = exports.transports = exports.TransportError = exports.Transport = exports.protocol = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = exports.Socket = void 0;
+ const socket_js_1 = socket$2;
+ Object.defineProperty(exports, "Socket", { enumerable: true, get: function () { return socket_js_1.Socket; } });
+ var socket_js_2 = socket$2;
+ Object.defineProperty(exports, "SocketWithoutUpgrade", { enumerable: true, get: function () { return socket_js_2.SocketWithoutUpgrade; } });
+ Object.defineProperty(exports, "SocketWithUpgrade", { enumerable: true, get: function () { return socket_js_2.SocketWithUpgrade; } });
+ exports.protocol = socket_js_1.Socket.protocol;
+ var transport_js_1 = transport;
+ Object.defineProperty(exports, "Transport", { enumerable: true, get: function () { return transport_js_1.Transport; } });
+ Object.defineProperty(exports, "TransportError", { enumerable: true, get: function () { return transport_js_1.TransportError; } });
+ var index_js_1 = transports;
+ Object.defineProperty(exports, "transports", { enumerable: true, get: function () { return index_js_1.transports; } });
+ var util_js_1 = util;
+ Object.defineProperty(exports, "installTimerFunctions", { enumerable: true, get: function () { return util_js_1.installTimerFunctions; } });
+ var parseuri_js_1 = parseuri;
+ Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parseuri_js_1.parse; } });
+ var globals_node_js_1 = globals;
+ Object.defineProperty(exports, "nextTick", { enumerable: true, get: function () { return globals_node_js_1.nextTick; } });
+ var polling_fetch_js_1 = pollingFetch;
+ Object.defineProperty(exports, "Fetch", { enumerable: true, get: function () { return polling_fetch_js_1.Fetch; } });
+ var polling_xhr_node_js_1 = pollingXhr;
+ Object.defineProperty(exports, "NodeXHR", { enumerable: true, get: function () { return polling_xhr_node_js_1.XHR; } });
+ var polling_xhr_js_1 = pollingXhr;
+ Object.defineProperty(exports, "XHR", { enumerable: true, get: function () { return polling_xhr_js_1.XHR; } });
+ var websocket_node_js_1 = websocket;
+ Object.defineProperty(exports, "NodeWebSocket", { enumerable: true, get: function () { return websocket_node_js_1.WS; } });
+ var websocket_js_1 = websocket;
+ Object.defineProperty(exports, "WebSocket", { enumerable: true, get: function () { return websocket_js_1.WS; } });
+ var webtransport_js_1 = webtransport;
+ Object.defineProperty(exports, "WebTransport", { enumerable: true, get: function () { return webtransport_js_1.WT; } });
+ } (cjs$2));
+
+ var __importDefault$2 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(url$1, "__esModule", { value: true });
+ url$1.url = url;
+ const engine_io_client_1$1 = cjs$2;
+ const debug_1$3 = __importDefault$2(browserExports); // debug()
+ const debug$3 = (0, debug_1$3.default)("socket.io-client:url"); // debug()
+ /**
+ * URL parser.
+ *
+ * @param uri - url
+ * @param path - the request path of the connection
+ * @param loc - An object meant to mimic window.location.
+ * Defaults to window.location.
+ * @public
+ */
+ function url(uri, path = "", loc) {
+ let obj = uri;
+ // default to window.location
+ loc = loc || (typeof location !== "undefined" && location);
+ if (null == uri)
+ uri = loc.protocol + "//" + loc.host;
+ // relative path support
+ if (typeof uri === "string") {
+ if ("/" === uri.charAt(0)) {
+ if ("/" === uri.charAt(1)) {
+ uri = loc.protocol + uri;
+ }
+ else {
+ uri = loc.host + uri;
+ }
+ }
+ if (!/^(https?|wss?):\/\//.test(uri)) {
+ debug$3("protocol-less url %s", uri);
+ if ("undefined" !== typeof loc) {
+ uri = loc.protocol + "//" + uri;
+ }
+ else {
+ uri = "https://" + uri;
+ }
+ }
+ // parse
+ debug$3("parse %s", uri);
+ obj = (0, engine_io_client_1$1.parse)(uri);
+ }
+ // make sure we treat `localhost:80` and `localhost` equally
+ if (!obj.port) {
+ if (/^(http|ws)$/.test(obj.protocol)) {
+ obj.port = "80";
+ }
+ else if (/^(http|ws)s$/.test(obj.protocol)) {
+ obj.port = "443";
+ }
+ }
+ obj.path = obj.path || "/";
+ const ipv6 = obj.host.indexOf(":") !== -1;
+ const host = ipv6 ? "[" + obj.host + "]" : obj.host;
+ // define unique id
+ obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
+ // define href
+ obj.href =
+ obj.protocol +
+ "://" +
+ host +
+ (loc && loc.port === obj.port ? "" : ":" + obj.port);
+ return obj;
+ }
+
+ var manager = {};
+
+ var socket$1 = {};
+
+ var cjs = {};
+
+ var binary = {};
+
+ var isBinary$1 = {};
+
+ Object.defineProperty(isBinary$1, "__esModule", { value: true });
+ isBinary$1.isBinary = isBinary;
+ isBinary$1.hasBinary = hasBinary;
+ const withNativeArrayBuffer = typeof ArrayBuffer === "function";
+ const isView = (obj) => {
+ return typeof ArrayBuffer.isView === "function"
+ ? ArrayBuffer.isView(obj)
+ : obj.buffer instanceof ArrayBuffer;
+ };
+ const toString = Object.prototype.toString;
+ const withNativeBlob = typeof Blob === "function" ||
+ (typeof Blob !== "undefined" &&
+ toString.call(Blob) === "[object BlobConstructor]");
+ const withNativeFile = typeof File === "function" ||
+ (typeof File !== "undefined" &&
+ toString.call(File) === "[object FileConstructor]");
+ /**
+ * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.
+ *
+ * @private
+ */
+ function isBinary(obj) {
+ return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||
+ (withNativeBlob && obj instanceof Blob) ||
+ (withNativeFile && obj instanceof File));
+ }
+ function hasBinary(obj, toJSON) {
+ if (!obj || typeof obj !== "object") {
+ return false;
+ }
+ if (Array.isArray(obj)) {
+ for (let i = 0, l = obj.length; i < l; i++) {
+ if (hasBinary(obj[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (isBinary(obj)) {
+ return true;
+ }
+ if (obj.toJSON &&
+ typeof obj.toJSON === "function" &&
+ arguments.length === 1) {
+ return hasBinary(obj.toJSON(), true);
+ }
+ for (const key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ Object.defineProperty(binary, "__esModule", { value: true });
+ binary.deconstructPacket = deconstructPacket;
+ binary.reconstructPacket = reconstructPacket;
+ const is_binary_js_1$1 = isBinary$1;
+ /**
+ * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.
+ *
+ * @param {Object} packet - socket.io event packet
+ * @return {Object} with deconstructed packet and list of buffers
+ * @public
+ */
+ function deconstructPacket(packet) {
+ const buffers = [];
+ const packetData = packet.data;
+ const pack = packet;
+ pack.data = _deconstructPacket(packetData, buffers);
+ pack.attachments = buffers.length; // number of binary 'attachments'
+ return { packet: pack, buffers: buffers };
+ }
+ function _deconstructPacket(data, buffers) {
+ if (!data)
+ return data;
+ if ((0, is_binary_js_1$1.isBinary)(data)) {
+ const placeholder = { _placeholder: true, num: buffers.length };
+ buffers.push(data);
+ return placeholder;
+ }
+ else if (Array.isArray(data)) {
+ const newData = new Array(data.length);
+ for (let i = 0; i < data.length; i++) {
+ newData[i] = _deconstructPacket(data[i], buffers);
+ }
+ return newData;
+ }
+ else if (typeof data === "object" && !(data instanceof Date)) {
+ const newData = {};
+ for (const key in data) {
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
+ newData[key] = _deconstructPacket(data[key], buffers);
+ }
+ }
+ return newData;
+ }
+ return data;
+ }
+ /**
+ * Reconstructs a binary packet from its placeholder packet and buffers
+ *
+ * @param {Object} packet - event packet with placeholders
+ * @param {Array} buffers - binary buffers to put in placeholder positions
+ * @return {Object} reconstructed packet
+ * @public
+ */
+ function reconstructPacket(packet, buffers) {
+ packet.data = _reconstructPacket(packet.data, buffers);
+ delete packet.attachments; // no longer useful
+ return packet;
+ }
+ function _reconstructPacket(data, buffers) {
+ if (!data)
+ return data;
+ if (data && data._placeholder === true) {
+ const isIndexValid = typeof data.num === "number" &&
+ data.num >= 0 &&
+ data.num < buffers.length;
+ if (isIndexValid) {
+ return buffers[data.num]; // appropriate buffer (should be natural order anyway)
+ }
+ else {
+ throw new Error("illegal attachments");
+ }
+ }
+ else if (Array.isArray(data)) {
+ for (let i = 0; i < data.length; i++) {
+ data[i] = _reconstructPacket(data[i], buffers);
+ }
+ }
+ else if (typeof data === "object") {
+ for (const key in data) {
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
+ data[key] = _reconstructPacket(data[key], buffers);
+ }
+ }
+ }
+ return data;
+ }
+
+ Object.defineProperty(cjs, "__esModule", { value: true });
+ cjs.Decoder = cjs.Encoder = cjs.PacketType = cjs.protocol = void 0;
+ cjs.isPacketValid = isPacketValid;
+ const component_emitter_1$2 = require$$5;
+ const binary_js_1 = binary;
+ const is_binary_js_1 = isBinary$1;
+ const debug_1$2 = browserExports; // debug()
+ const debug$2 = (0, debug_1$2.default)("socket.io-parser"); // debug()
+ /**
+ * These strings must not be used as event names, as they have a special meaning.
+ */
+ const RESERVED_EVENTS$1 = [
+ "connect", // used on the client side
+ "connect_error", // used on the client side
+ "disconnect", // used on both sides
+ "disconnecting", // used on the server side
+ "newListener", // used by the Node.js EventEmitter
+ "removeListener", // used by the Node.js EventEmitter
+ ];
+ /**
+ * Protocol version.
+ *
+ * @public
+ */
+ cjs.protocol = 5;
+ var PacketType;
+ (function (PacketType) {
+ PacketType[PacketType["CONNECT"] = 0] = "CONNECT";
+ PacketType[PacketType["DISCONNECT"] = 1] = "DISCONNECT";
+ PacketType[PacketType["EVENT"] = 2] = "EVENT";
+ PacketType[PacketType["ACK"] = 3] = "ACK";
+ PacketType[PacketType["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";
+ PacketType[PacketType["BINARY_EVENT"] = 5] = "BINARY_EVENT";
+ PacketType[PacketType["BINARY_ACK"] = 6] = "BINARY_ACK";
+ })(PacketType || (cjs.PacketType = PacketType = {}));
+ /**
+ * A socket.io Encoder instance
+ */
+ class Encoder {
+ /**
+ * Encoder constructor
+ *
+ * @param {function} replacer - custom replacer to pass down to JSON.parse
+ */
+ constructor(replacer) {
+ this.replacer = replacer;
+ }
+ /**
+ * Encode a packet as a single string if non-binary, or as a
+ * buffer sequence, depending on packet type.
+ *
+ * @param {Object} obj - packet object
+ */
+ encode(obj) {
+ debug$2("encoding packet %j", obj);
+ if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {
+ if ((0, is_binary_js_1.hasBinary)(obj)) {
+ return this.encodeAsBinary({
+ type: obj.type === PacketType.EVENT
+ ? PacketType.BINARY_EVENT
+ : PacketType.BINARY_ACK,
+ nsp: obj.nsp,
+ data: obj.data,
+ id: obj.id,
+ });
+ }
+ }
+ return [this.encodeAsString(obj)];
+ }
+ /**
+ * Encode packet as string.
+ */
+ encodeAsString(obj) {
+ // first is type
+ let str = "" + obj.type;
+ // attachments if we have them
+ if (obj.type === PacketType.BINARY_EVENT ||
+ obj.type === PacketType.BINARY_ACK) {
+ str += obj.attachments + "-";
+ }
+ // if we have a namespace other than `/`
+ // we append it followed by a comma `,`
+ if (obj.nsp && "/" !== obj.nsp) {
+ str += obj.nsp + ",";
+ }
+ // immediately followed by the id
+ if (null != obj.id) {
+ str += obj.id;
+ }
+ // json data
+ if (null != obj.data) {
+ str += JSON.stringify(obj.data, this.replacer);
+ }
+ debug$2("encoded %j as %s", obj, str);
+ return str;
+ }
+ /**
+ * Encode packet as 'buffer sequence' by removing blobs, and
+ * deconstructing packet into object with placeholders and
+ * a list of buffers.
+ */
+ encodeAsBinary(obj) {
+ const deconstruction = (0, binary_js_1.deconstructPacket)(obj);
+ const pack = this.encodeAsString(deconstruction.packet);
+ const buffers = deconstruction.buffers;
+ buffers.unshift(pack); // add packet info to beginning of data list
+ return buffers; // write all the buffers
+ }
+ }
+ cjs.Encoder = Encoder;
+ /**
+ * A socket.io Decoder instance
+ *
+ * @return {Object} decoder
+ */
+ class Decoder extends component_emitter_1$2.Emitter {
+ /**
+ * Decoder constructor
+ *
+ * @param {function} reviver - custom reviver to pass down to JSON.stringify
+ */
+ constructor(reviver) {
+ super();
+ this.reviver = reviver;
+ }
+ /**
+ * Decodes an encoded packet string into packet JSON.
+ *
+ * @param {String} obj - encoded packet
+ */
+ add(obj) {
+ let packet;
+ if (typeof obj === "string") {
+ if (this.reconstructor) {
+ throw new Error("got plaintext data when reconstructing a packet");
+ }
+ packet = this.decodeString(obj);
+ const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;
+ if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {
+ packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;
+ // binary packet's json
+ this.reconstructor = new BinaryReconstructor(packet);
+ // no attachments, labeled binary but no binary data to follow
+ if (packet.attachments === 0) {
+ super.emitReserved("decoded", packet);
+ }
+ }
+ else {
+ // non-binary full packet
+ super.emitReserved("decoded", packet);
+ }
+ }
+ else if ((0, is_binary_js_1.isBinary)(obj) || obj.base64) {
+ // raw binary data
+ if (!this.reconstructor) {
+ throw new Error("got binary data when not reconstructing a packet");
+ }
+ else {
+ packet = this.reconstructor.takeBinaryData(obj);
+ if (packet) {
+ // received final buffer
+ this.reconstructor = null;
+ super.emitReserved("decoded", packet);
+ }
+ }
+ }
+ else {
+ throw new Error("Unknown type: " + obj);
+ }
+ }
+ /**
+ * Decode a packet String (JSON data)
+ *
+ * @param {String} str
+ * @return {Object} packet
+ */
+ decodeString(str) {
+ let i = 0;
+ // look up type
+ const p = {
+ type: Number(str.charAt(0)),
+ };
+ if (PacketType[p.type] === undefined) {
+ throw new Error("unknown packet type " + p.type);
+ }
+ // look up attachments if type binary
+ if (p.type === PacketType.BINARY_EVENT ||
+ p.type === PacketType.BINARY_ACK) {
+ const start = i + 1;
+ while (str.charAt(++i) !== "-" && i != str.length) { }
+ const buf = str.substring(start, i);
+ if (buf != Number(buf) || str.charAt(i) !== "-") {
+ throw new Error("Illegal attachments");
+ }
+ p.attachments = Number(buf);
+ }
+ // look up namespace (if any)
+ if ("/" === str.charAt(i + 1)) {
+ const start = i + 1;
+ while (++i) {
+ const c = str.charAt(i);
+ if ("," === c)
+ break;
+ if (i === str.length)
+ break;
+ }
+ p.nsp = str.substring(start, i);
+ }
+ else {
+ p.nsp = "/";
+ }
+ // look up id
+ const next = str.charAt(i + 1);
+ if ("" !== next && Number(next) == next) {
+ const start = i + 1;
+ while (++i) {
+ const c = str.charAt(i);
+ if (null == c || Number(c) != c) {
+ --i;
+ break;
+ }
+ if (i === str.length)
+ break;
+ }
+ p.id = Number(str.substring(start, i + 1));
+ }
+ // look up json data
+ if (str.charAt(++i)) {
+ const payload = this.tryParse(str.substr(i));
+ if (Decoder.isPayloadValid(p.type, payload)) {
+ p.data = payload;
+ }
+ else {
+ throw new Error("invalid payload");
+ }
+ }
+ debug$2("decoded %s as %j", str, p);
+ return p;
+ }
+ tryParse(str) {
+ try {
+ return JSON.parse(str, this.reviver);
+ }
+ catch (e) {
+ return false;
+ }
+ }
+ static isPayloadValid(type, payload) {
+ switch (type) {
+ case PacketType.CONNECT:
+ return isObject(payload);
+ case PacketType.DISCONNECT:
+ return payload === undefined;
+ case PacketType.CONNECT_ERROR:
+ return typeof payload === "string" || isObject(payload);
+ case PacketType.EVENT:
+ case PacketType.BINARY_EVENT:
+ return (Array.isArray(payload) &&
+ (typeof payload[0] === "number" ||
+ (typeof payload[0] === "string" &&
+ RESERVED_EVENTS$1.indexOf(payload[0]) === -1)));
+ case PacketType.ACK:
+ case PacketType.BINARY_ACK:
+ return Array.isArray(payload);
+ }
+ }
+ /**
+ * Deallocates a parser's resources
+ */
+ destroy() {
+ if (this.reconstructor) {
+ this.reconstructor.finishedReconstruction();
+ this.reconstructor = null;
+ }
+ }
+ }
+ cjs.Decoder = Decoder;
+ /**
+ * A manager of a binary event's 'buffer sequence'. Should
+ * be constructed whenever a packet of type BINARY_EVENT is
+ * decoded.
+ *
+ * @param {Object} packet
+ * @return {BinaryReconstructor} initialized reconstructor
+ */
+ class BinaryReconstructor {
+ constructor(packet) {
+ this.packet = packet;
+ this.buffers = [];
+ this.reconPack = packet;
+ }
+ /**
+ * Method to be called when binary data received from connection
+ * after a BINARY_EVENT packet.
+ *
+ * @param {Buffer | ArrayBuffer} binData - the raw binary data received
+ * @return {null | Object} returns null if more binary data is expected or
+ * a reconstructed packet object if all buffers have been received.
+ */
+ takeBinaryData(binData) {
+ this.buffers.push(binData);
+ if (this.buffers.length === this.reconPack.attachments) {
+ // done with buffer list
+ const packet = (0, binary_js_1.reconstructPacket)(this.reconPack, this.buffers);
+ this.finishedReconstruction();
+ return packet;
+ }
+ return null;
+ }
+ /**
+ * Cleans up binary packet reconstruction variables.
+ */
+ finishedReconstruction() {
+ this.reconPack = null;
+ this.buffers = [];
+ }
+ }
+ function isNamespaceValid(nsp) {
+ return typeof nsp === "string";
+ }
+ // see https://caniuse.com/mdn-javascript_builtins_number_isinteger
+ const isInteger = Number.isInteger ||
+ function (value) {
+ return (typeof value === "number" &&
+ isFinite(value) &&
+ Math.floor(value) === value);
+ };
+ function isAckIdValid(id) {
+ return id === undefined || isInteger(id);
+ }
+ // see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript
+ function isObject(value) {
+ return Object.prototype.toString.call(value) === "[object Object]";
+ }
+ function isDataValid(type, payload) {
+ switch (type) {
+ case PacketType.CONNECT:
+ return payload === undefined || isObject(payload);
+ case PacketType.DISCONNECT:
+ return payload === undefined;
+ case PacketType.EVENT:
+ return (Array.isArray(payload) &&
+ (typeof payload[0] === "number" ||
+ (typeof payload[0] === "string" &&
+ RESERVED_EVENTS$1.indexOf(payload[0]) === -1)));
+ case PacketType.ACK:
+ return Array.isArray(payload);
+ case PacketType.CONNECT_ERROR:
+ return typeof payload === "string" || isObject(payload);
+ default:
+ return false;
+ }
+ }
+ function isPacketValid(packet) {
+ return (isNamespaceValid(packet.nsp) &&
+ isAckIdValid(packet.id) &&
+ isDataValid(packet.type, packet.data));
+ }
+
+ var on$1 = {};
+
+ Object.defineProperty(on$1, "__esModule", { value: true });
+ on$1.on = on;
+ function on(obj, ev, fn) {
+ obj.on(ev, fn);
+ return function subDestroy() {
+ obj.off(ev, fn);
+ };
+ }
+
+ var __importDefault$1 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(socket$1, "__esModule", { value: true });
+ socket$1.Socket = void 0;
+ const socket_io_parser_1 = cjs;
+ const on_js_1$1 = on$1;
+ const component_emitter_1$1 = require$$5;
+ const debug_1$1 = __importDefault$1(browserExports); // debug()
+ const debug$1 = (0, debug_1$1.default)("socket.io-client:socket"); // debug()
+ /**
+ * Internal events.
+ * These events can't be emitted by the user.
+ */
+ const RESERVED_EVENTS = Object.freeze({
+ connect: 1,
+ connect_error: 1,
+ disconnect: 1,
+ disconnecting: 1,
+ // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener
+ newListener: 1,
+ removeListener: 1,
+ });
+ /**
+ * A Socket is the fundamental class for interacting with the server.
+ *
+ * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.
+ *
+ * @example
+ * const socket = io();
+ *
+ * socket.on("connect", () => {
+ * console.log("connected");
+ * });
+ *
+ * // send an event to the server
+ * socket.emit("foo", "bar");
+ *
+ * socket.on("foobar", () => {
+ * // an event was received from the server
+ * });
+ *
+ * // upon disconnection
+ * socket.on("disconnect", (reason) => {
+ * console.log(`disconnected due to ${reason}`);
+ * });
+ */
+ class Socket extends component_emitter_1$1.Emitter {
+ /**
+ * `Socket` constructor.
+ */
+ constructor(io, nsp, opts) {
+ super();
+ /**
+ * Whether the socket is currently connected to the server.
+ *
+ * @example
+ * const socket = io();
+ *
+ * socket.on("connect", () => {
+ * console.log(socket.connected); // true
+ * });
+ *
+ * socket.on("disconnect", () => {
+ * console.log(socket.connected); // false
+ * });
+ */
+ this.connected = false;
+ /**
+ * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will
+ * be transmitted by the server.
+ */
+ this.recovered = false;
+ /**
+ * Buffer for packets received before the CONNECT packet
+ */
+ this.receiveBuffer = [];
+ /**
+ * Buffer for packets that will be sent once the socket is connected
+ */
+ this.sendBuffer = [];
+ /**
+ * The queue of packets to be sent with retry in case of failure.
+ *
+ * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.
+ * @private
+ */
+ this._queue = [];
+ /**
+ * A sequence to generate the ID of the {@link QueuedPacket}.
+ * @private
+ */
+ this._queueSeq = 0;
+ this.ids = 0;
+ /**
+ * A map containing acknowledgement handlers.
+ *
+ * The `withError` attribute is used to differentiate handlers that accept an error as first argument:
+ *
+ * - `socket.emit("test", (err, value) => { ... })` with `ackTimeout` option
+ * - `socket.timeout(5000).emit("test", (err, value) => { ... })`
+ * - `const value = await socket.emitWithAck("test")`
+ *
+ * From those that don't:
+ *
+ * - `socket.emit("test", (value) => { ... });`
+ *
+ * In the first case, the handlers will be called with an error when:
+ *
+ * - the timeout is reached
+ * - the socket gets disconnected
+ *
+ * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive
+ * an acknowledgement from the server.
+ *
+ * @private
+ */
+ this.acks = {};
+ this.flags = {};
+ this.io = io;
+ this.nsp = nsp;
+ if (opts && opts.auth) {
+ this.auth = opts.auth;
+ }
+ this._opts = Object.assign({}, opts);
+ if (this.io._autoConnect)
+ this.open();
+ }
+ /**
+ * Whether the socket is currently disconnected
+ *
+ * @example
+ * const socket = io();
+ *
+ * socket.on("connect", () => {
+ * console.log(socket.disconnected); // false
+ * });
+ *
+ * socket.on("disconnect", () => {
+ * console.log(socket.disconnected); // true
+ * });
+ */
+ get disconnected() {
+ return !this.connected;
+ }
+ /**
+ * Subscribe to open, close and packet events
+ *
+ * @private
+ */
+ subEvents() {
+ if (this.subs)
+ return;
+ const io = this.io;
+ this.subs = [
+ (0, on_js_1$1.on)(io, "open", this.onopen.bind(this)),
+ (0, on_js_1$1.on)(io, "packet", this.onpacket.bind(this)),
+ (0, on_js_1$1.on)(io, "error", this.onerror.bind(this)),
+ (0, on_js_1$1.on)(io, "close", this.onclose.bind(this)),
+ ];
+ }
+ /**
+ * Whether the Socket will try to reconnect when its Manager connects or reconnects.
+ *
+ * @example
+ * const socket = io();
+ *
+ * console.log(socket.active); // true
+ *
+ * socket.on("disconnect", (reason) => {
+ * if (reason === "io server disconnect") {
+ * // the disconnection was initiated by the server, you need to manually reconnect
+ * console.log(socket.active); // false
+ * }
+ * // else the socket will automatically try to reconnect
+ * console.log(socket.active); // true
+ * });
+ */
+ get active() {
+ return !!this.subs;
+ }
+ /**
+ * "Opens" the socket.
+ *
+ * @example
+ * const socket = io({
+ * autoConnect: false
+ * });
+ *
+ * socket.connect();
+ */
+ connect() {
+ if (this.connected)
+ return this;
+ this.subEvents();
+ if (!this.io["_reconnecting"])
+ this.io.open(); // ensure open
+ if ("open" === this.io._readyState)
+ this.onopen();
+ return this;
+ }
+ /**
+ * Alias for {@link connect()}.
+ */
+ open() {
+ return this.connect();
+ }
+ /**
+ * Sends a `message` event.
+ *
+ * This method mimics the WebSocket.send() method.
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send
+ *
+ * @example
+ * socket.send("hello");
+ *
+ * // this is equivalent to
+ * socket.emit("message", "hello");
+ *
+ * @return self
+ */
+ send(...args) {
+ args.unshift("message");
+ this.emit.apply(this, args);
+ return this;
+ }
+ /**
+ * Override `emit`.
+ * If the event is in `events`, it's emitted normally.
+ *
+ * @example
+ * socket.emit("hello", "world");
+ *
+ * // all serializable datastructures are supported (no need to call JSON.stringify)
+ * socket.emit("hello", 1, "2", { 3: ["4"], 5: Uint8Array.from([6]) });
+ *
+ * // with an acknowledgement from the server
+ * socket.emit("hello", "world", (val) => {
+ * // ...
+ * });
+ *
+ * @return self
+ */
+ emit(ev, ...args) {
+ var _a, _b, _c;
+ if (RESERVED_EVENTS.hasOwnProperty(ev)) {
+ throw new Error('"' + ev.toString() + '" is a reserved event name');
+ }
+ args.unshift(ev);
+ if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {
+ this._addToQueue(args);
+ return this;
+ }
+ const packet = {
+ type: socket_io_parser_1.PacketType.EVENT,
+ data: args,
+ };
+ packet.options = {};
+ packet.options.compress = this.flags.compress !== false;
+ // event ack callback
+ if ("function" === typeof args[args.length - 1]) {
+ const id = this.ids++;
+ debug$1("emitting packet with ack id %d", id);
+ const ack = args.pop();
+ this._registerAckCallback(id, ack);
+ packet.id = id;
+ }
+ const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;
+ const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());
+ const discardPacket = this.flags.volatile && !isTransportWritable;
+ if (discardPacket) {
+ debug$1("discard packet as the transport is not currently writable");
+ }
+ else if (isConnected) {
+ this.notifyOutgoingListeners(packet);
+ this.packet(packet);
+ }
+ else {
+ this.sendBuffer.push(packet);
+ }
+ this.flags = {};
+ return this;
+ }
+ /**
+ * @private
+ */
+ _registerAckCallback(id, ack) {
+ var _a;
+ const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;
+ if (timeout === undefined) {
+ this.acks[id] = ack;
+ return;
+ }
+ // @ts-ignore
+ const timer = this.io.setTimeoutFn(() => {
+ delete this.acks[id];
+ for (let i = 0; i < this.sendBuffer.length; i++) {
+ if (this.sendBuffer[i].id === id) {
+ debug$1("removing packet with ack id %d from the buffer", id);
+ this.sendBuffer.splice(i, 1);
+ }
+ }
+ debug$1("event with ack id %d has timed out after %d ms", id, timeout);
+ ack.call(this, new Error("operation has timed out"));
+ }, timeout);
+ const fn = (...args) => {
+ // @ts-ignore
+ this.io.clearTimeoutFn(timer);
+ ack.apply(this, args);
+ };
+ fn.withError = true;
+ this.acks[id] = fn;
+ }
+ /**
+ * Emits an event and waits for an acknowledgement
+ *
+ * @example
+ * // without timeout
+ * const response = await socket.emitWithAck("hello", "world");
+ *
+ * // with a specific timeout
+ * try {
+ * const response = await socket.timeout(1000).emitWithAck("hello", "world");
+ * } catch (err) {
+ * // the server did not acknowledge the event in the given delay
+ * }
+ *
+ * @return a Promise that will be fulfilled when the server acknowledges the event
+ */
+ emitWithAck(ev, ...args) {
+ return new Promise((resolve, reject) => {
+ const fn = (arg1, arg2) => {
+ return arg1 ? reject(arg1) : resolve(arg2);
+ };
+ fn.withError = true;
+ args.push(fn);
+ this.emit(ev, ...args);
+ });
+ }
+ /**
+ * Add the packet to the queue.
+ * @param args
+ * @private
+ */
+ _addToQueue(args) {
+ let ack;
+ if (typeof args[args.length - 1] === "function") {
+ ack = args.pop();
+ }
+ const packet = {
+ id: this._queueSeq++,
+ tryCount: 0,
+ pending: false,
+ args,
+ flags: Object.assign({ fromQueue: true }, this.flags),
+ };
+ args.push((err, ...responseArgs) => {
+ if (packet !== this._queue[0]) {
+ return debug$1("packet [%d] already acknowledged", packet.id);
+ }
+ const hasError = err !== null;
+ if (hasError) {
+ if (packet.tryCount > this._opts.retries) {
+ debug$1("packet [%d] is discarded after %d tries", packet.id, packet.tryCount);
+ this._queue.shift();
+ if (ack) {
+ ack(err);
+ }
+ }
+ }
+ else {
+ debug$1("packet [%d] was successfully sent", packet.id);
+ this._queue.shift();
+ if (ack) {
+ ack(null, ...responseArgs);
+ }
+ }
+ packet.pending = false;
+ return this._drainQueue();
+ });
+ this._queue.push(packet);
+ this._drainQueue();
+ }
+ /**
+ * Send the first packet of the queue, and wait for an acknowledgement from the server.
+ * @param force - whether to resend a packet that has not been acknowledged yet
+ *
+ * @private
+ */
+ _drainQueue(force = false) {
+ debug$1("draining queue");
+ if (!this.connected || this._queue.length === 0) {
+ return;
+ }
+ const packet = this._queue[0];
+ if (packet.pending && !force) {
+ debug$1("packet [%d] has already been sent and is waiting for an ack", packet.id);
+ return;
+ }
+ packet.pending = true;
+ packet.tryCount++;
+ debug$1("sending packet [%d] (try n°%d)", packet.id, packet.tryCount);
+ this.flags = packet.flags;
+ this.emit.apply(this, packet.args);
+ }
+ /**
+ * Sends a packet.
+ *
+ * @param packet
+ * @private
+ */
+ packet(packet) {
+ packet.nsp = this.nsp;
+ this.io._packet(packet);
+ }
+ /**
+ * Called upon engine `open`.
+ *
+ * @private
+ */
+ onopen() {
+ debug$1("transport is open - connecting");
+ if (typeof this.auth == "function") {
+ this.auth((data) => {
+ this._sendConnectPacket(data);
+ });
+ }
+ else {
+ this._sendConnectPacket(this.auth);
+ }
+ }
+ /**
+ * Sends a CONNECT packet to initiate the Socket.IO session.
+ *
+ * @param data
+ * @private
+ */
+ _sendConnectPacket(data) {
+ this.packet({
+ type: socket_io_parser_1.PacketType.CONNECT,
+ data: this._pid
+ ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)
+ : data,
+ });
+ }
+ /**
+ * Called upon engine or manager `error`.
+ *
+ * @param err
+ * @private
+ */
+ onerror(err) {
+ if (!this.connected) {
+ this.emitReserved("connect_error", err);
+ }
+ }
+ /**
+ * Called upon engine `close`.
+ *
+ * @param reason
+ * @param description
+ * @private
+ */
+ onclose(reason, description) {
+ debug$1("close (%s)", reason);
+ this.connected = false;
+ delete this.id;
+ this.emitReserved("disconnect", reason, description);
+ this._clearAcks();
+ }
+ /**
+ * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from
+ * the server.
+ *
+ * @private
+ */
+ _clearAcks() {
+ Object.keys(this.acks).forEach((id) => {
+ const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);
+ if (!isBuffered) {
+ // note: handlers that do not accept an error as first argument are ignored here
+ const ack = this.acks[id];
+ delete this.acks[id];
+ if (ack.withError) {
+ ack.call(this, new Error("socket has been disconnected"));
+ }
+ }
+ });
+ }
+ /**
+ * Called with socket packet.
+ *
+ * @param packet
+ * @private
+ */
+ onpacket(packet) {
+ const sameNamespace = packet.nsp === this.nsp;
+ if (!sameNamespace)
+ return;
+ switch (packet.type) {
+ case socket_io_parser_1.PacketType.CONNECT:
+ if (packet.data && packet.data.sid) {
+ this.onconnect(packet.data.sid, packet.data.pid);
+ }
+ else {
+ this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
+ }
+ break;
+ case socket_io_parser_1.PacketType.EVENT:
+ case socket_io_parser_1.PacketType.BINARY_EVENT:
+ this.onevent(packet);
+ break;
+ case socket_io_parser_1.PacketType.ACK:
+ case socket_io_parser_1.PacketType.BINARY_ACK:
+ this.onack(packet);
+ break;
+ case socket_io_parser_1.PacketType.DISCONNECT:
+ this.ondisconnect();
+ break;
+ case socket_io_parser_1.PacketType.CONNECT_ERROR:
+ this.destroy();
+ const err = new Error(packet.data.message);
+ // @ts-ignore
+ err.data = packet.data.data;
+ this.emitReserved("connect_error", err);
+ break;
+ }
+ }
+ /**
+ * Called upon a server event.
+ *
+ * @param packet
+ * @private
+ */
+ onevent(packet) {
+ const args = packet.data || [];
+ debug$1("emitting event %j", args);
+ if (null != packet.id) {
+ debug$1("attaching ack callback to event");
+ args.push(this.ack(packet.id));
+ }
+ if (this.connected) {
+ this.emitEvent(args);
+ }
+ else {
+ this.receiveBuffer.push(Object.freeze(args));
+ }
+ }
+ emitEvent(args) {
+ if (this._anyListeners && this._anyListeners.length) {
+ const listeners = this._anyListeners.slice();
+ for (const listener of listeners) {
+ listener.apply(this, args);
+ }
+ }
+ super.emit.apply(this, args);
+ if (this._pid && args.length && typeof args[args.length - 1] === "string") {
+ this._lastOffset = args[args.length - 1];
+ }
+ }
+ /**
+ * Produces an ack callback to emit with an event.
+ *
+ * @private
+ */
+ ack(id) {
+ const self = this;
+ let sent = false;
+ return function (...args) {
+ // prevent double callbacks
+ if (sent)
+ return;
+ sent = true;
+ debug$1("sending ack %j", args);
+ self.packet({
+ type: socket_io_parser_1.PacketType.ACK,
+ id: id,
+ data: args,
+ });
+ };
+ }
+ /**
+ * Called upon a server acknowledgement.
+ *
+ * @param packet
+ * @private
+ */
+ onack(packet) {
+ const ack = this.acks[packet.id];
+ if (typeof ack !== "function") {
+ debug$1("bad ack %s", packet.id);
+ return;
+ }
+ delete this.acks[packet.id];
+ debug$1("calling ack %s with %j", packet.id, packet.data);
+ // @ts-ignore FIXME ack is incorrectly inferred as 'never'
+ if (ack.withError) {
+ packet.data.unshift(null);
+ }
+ // @ts-ignore
+ ack.apply(this, packet.data);
+ }
+ /**
+ * Called upon server connect.
+ *
+ * @private
+ */
+ onconnect(id, pid) {
+ debug$1("socket connected with id %s", id);
+ this.id = id;
+ this.recovered = pid && this._pid === pid;
+ this._pid = pid; // defined only if connection state recovery is enabled
+ this.connected = true;
+ this.emitBuffered();
+ this._drainQueue(true);
+ this.emitReserved("connect");
+ }
+ /**
+ * Emit buffered events (received and emitted).
+ *
+ * @private
+ */
+ emitBuffered() {
+ this.receiveBuffer.forEach((args) => this.emitEvent(args));
+ this.receiveBuffer = [];
+ this.sendBuffer.forEach((packet) => {
+ this.notifyOutgoingListeners(packet);
+ this.packet(packet);
+ });
+ this.sendBuffer = [];
+ }
+ /**
+ * Called upon server disconnect.
+ *
+ * @private
+ */
+ ondisconnect() {
+ debug$1("server disconnect (%s)", this.nsp);
+ this.destroy();
+ this.onclose("io server disconnect");
+ }
+ /**
+ * Called upon forced client/server side disconnections,
+ * this method ensures the manager stops tracking us and
+ * that reconnections don't get triggered for this.
+ *
+ * @private
+ */
+ destroy() {
+ if (this.subs) {
+ // clean subscriptions to avoid reconnections
+ this.subs.forEach((subDestroy) => subDestroy());
+ this.subs = undefined;
+ }
+ this.io["_destroy"](this);
+ }
+ /**
+ * Disconnects the socket manually. In that case, the socket will not try to reconnect.
+ *
+ * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.
+ *
+ * @example
+ * const socket = io();
+ *
+ * socket.on("disconnect", (reason) => {
+ * // console.log(reason); prints "io client disconnect"
+ * });
+ *
+ * socket.disconnect();
+ *
+ * @return self
+ */
+ disconnect() {
+ if (this.connected) {
+ debug$1("performing disconnect (%s)", this.nsp);
+ this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });
+ }
+ // remove socket from pool
+ this.destroy();
+ if (this.connected) {
+ // fire events
+ this.onclose("io client disconnect");
+ }
+ return this;
+ }
+ /**
+ * Alias for {@link disconnect()}.
+ *
+ * @return self
+ */
+ close() {
+ return this.disconnect();
+ }
+ /**
+ * Sets the compress flag.
+ *
+ * @example
+ * socket.compress(false).emit("hello");
+ *
+ * @param compress - if `true`, compresses the sending data
+ * @return self
+ */
+ compress(compress) {
+ this.flags.compress = compress;
+ return this;
+ }
+ /**
+ * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not
+ * ready to send messages.
+ *
+ * @example
+ * socket.volatile.emit("hello"); // the server may or may not receive it
+ *
+ * @returns self
+ */
+ get volatile() {
+ this.flags.volatile = true;
+ return this;
+ }
+ /**
+ * Sets a modifier for a subsequent event emission that the callback will be called with an error when the
+ * given number of milliseconds have elapsed without an acknowledgement from the server:
+ *
+ * @example
+ * socket.timeout(5000).emit("my-event", (err) => {
+ * if (err) {
+ * // the server did not acknowledge the event in the given delay
+ * }
+ * });
+ *
+ * @returns self
+ */
+ timeout(timeout) {
+ this.flags.timeout = timeout;
+ return this;
+ }
+ /**
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
+ * callback.
+ *
+ * @example
+ * socket.onAny((event, ...args) => {
+ * console.log(`got ${event}`);
+ * });
+ *
+ * @param listener
+ */
+ onAny(listener) {
+ this._anyListeners = this._anyListeners || [];
+ this._anyListeners.push(listener);
+ return this;
+ }
+ /**
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
+ * callback. The listener is added to the beginning of the listeners array.
+ *
+ * @example
+ * socket.prependAny((event, ...args) => {
+ * console.log(`got event ${event}`);
+ * });
+ *
+ * @param listener
+ */
+ prependAny(listener) {
+ this._anyListeners = this._anyListeners || [];
+ this._anyListeners.unshift(listener);
+ return this;
+ }
+ /**
+ * Removes the listener that will be fired when any event is emitted.
+ *
+ * @example
+ * const catchAllListener = (event, ...args) => {
+ * console.log(`got event ${event}`);
+ * }
+ *
+ * socket.onAny(catchAllListener);
+ *
+ * // remove a specific listener
+ * socket.offAny(catchAllListener);
+ *
+ * // or remove all listeners
+ * socket.offAny();
+ *
+ * @param listener
+ */
+ offAny(listener) {
+ if (!this._anyListeners) {
+ return this;
+ }
+ if (listener) {
+ const listeners = this._anyListeners;
+ for (let i = 0; i < listeners.length; i++) {
+ if (listener === listeners[i]) {
+ listeners.splice(i, 1);
+ return this;
+ }
+ }
+ }
+ else {
+ this._anyListeners = [];
+ }
+ return this;
+ }
+ /**
+ * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
+ * e.g. to remove listeners.
+ */
+ listenersAny() {
+ return this._anyListeners || [];
+ }
+ /**
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
+ * callback.
+ *
+ * Note: acknowledgements sent to the server are not included.
+ *
+ * @example
+ * socket.onAnyOutgoing((event, ...args) => {
+ * console.log(`sent event ${event}`);
+ * });
+ *
+ * @param listener
+ */
+ onAnyOutgoing(listener) {
+ this._anyOutgoingListeners = this._anyOutgoingListeners || [];
+ this._anyOutgoingListeners.push(listener);
+ return this;
+ }
+ /**
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
+ * callback. The listener is added to the beginning of the listeners array.
+ *
+ * Note: acknowledgements sent to the server are not included.
+ *
+ * @example
+ * socket.prependAnyOutgoing((event, ...args) => {
+ * console.log(`sent event ${event}`);
+ * });
+ *
+ * @param listener
+ */
+ prependAnyOutgoing(listener) {
+ this._anyOutgoingListeners = this._anyOutgoingListeners || [];
+ this._anyOutgoingListeners.unshift(listener);
+ return this;
+ }
+ /**
+ * Removes the listener that will be fired when any event is emitted.
+ *
+ * @example
+ * const catchAllListener = (event, ...args) => {
+ * console.log(`sent event ${event}`);
+ * }
+ *
+ * socket.onAnyOutgoing(catchAllListener);
+ *
+ * // remove a specific listener
+ * socket.offAnyOutgoing(catchAllListener);
+ *
+ * // or remove all listeners
+ * socket.offAnyOutgoing();
+ *
+ * @param [listener] - the catch-all listener (optional)
+ */
+ offAnyOutgoing(listener) {
+ if (!this._anyOutgoingListeners) {
+ return this;
+ }
+ if (listener) {
+ const listeners = this._anyOutgoingListeners;
+ for (let i = 0; i < listeners.length; i++) {
+ if (listener === listeners[i]) {
+ listeners.splice(i, 1);
+ return this;
+ }
+ }
+ }
+ else {
+ this._anyOutgoingListeners = [];
+ }
+ return this;
+ }
+ /**
+ * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
+ * e.g. to remove listeners.
+ */
+ listenersAnyOutgoing() {
+ return this._anyOutgoingListeners || [];
+ }
+ /**
+ * Notify the listeners for each packet sent
+ *
+ * @param packet
+ *
+ * @private
+ */
+ notifyOutgoingListeners(packet) {
+ if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {
+ const listeners = this._anyOutgoingListeners.slice();
+ for (const listener of listeners) {
+ listener.apply(this, packet.data);
+ }
+ }
+ }
+ }
+ socket$1.Socket = Socket;
+
+ var backo2 = {};
+
+ /**
+ * Initialize backoff timer with `opts`.
+ *
+ * - `min` initial timeout in milliseconds [100]
+ * - `max` max timeout [10000]
+ * - `jitter` [0]
+ * - `factor` [2]
+ *
+ * @param {Object} opts
+ * @api public
+ */
+ Object.defineProperty(backo2, "__esModule", { value: true });
+ backo2.Backoff = Backoff;
+ function Backoff(opts) {
+ opts = opts || {};
+ this.ms = opts.min || 100;
+ this.max = opts.max || 10000;
+ this.factor = opts.factor || 2;
+ this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
+ this.attempts = 0;
+ }
+ /**
+ * Return the backoff duration.
+ *
+ * @return {Number}
+ * @api public
+ */
+ Backoff.prototype.duration = function () {
+ var ms = this.ms * Math.pow(this.factor, this.attempts++);
+ if (this.jitter) {
+ var rand = Math.random();
+ var deviation = Math.floor(rand * this.jitter * ms);
+ ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
+ }
+ return Math.min(ms, this.max) | 0;
+ };
+ /**
+ * Reset the number of attempts.
+ *
+ * @api public
+ */
+ Backoff.prototype.reset = function () {
+ this.attempts = 0;
+ };
+ /**
+ * Set the minimum duration
+ *
+ * @api public
+ */
+ Backoff.prototype.setMin = function (min) {
+ this.ms = min;
+ };
+ /**
+ * Set the maximum duration
+ *
+ * @api public
+ */
+ Backoff.prototype.setMax = function (max) {
+ this.max = max;
+ };
+ /**
+ * Set the jitter
+ *
+ * @api public
+ */
+ Backoff.prototype.setJitter = function (jitter) {
+ this.jitter = jitter;
+ };
+
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+ }) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+ }));
+ var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+ }) : function(o, v) {
+ o["default"] = v;
+ });
+ var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+ };
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(manager, "__esModule", { value: true });
+ manager.Manager = void 0;
+ const engine_io_client_1 = cjs$2;
+ const socket_js_1 = socket$1;
+ const parser = __importStar(cjs);
+ const on_js_1 = on$1;
+ const backo2_js_1 = backo2;
+ const component_emitter_1 = require$$5;
+ const debug_1 = __importDefault(browserExports); // debug()
+ const debug = (0, debug_1.default)("socket.io-client:manager"); // debug()
+ class Manager$1 extends component_emitter_1.Emitter {
+ constructor(uri, opts) {
+ var _a;
+ super();
+ this.nsps = {};
+ this.subs = [];
+ if (uri && "object" === typeof uri) {
+ opts = uri;
+ uri = undefined;
+ }
+ opts = opts || {};
+ opts.path = opts.path || "/socket.io";
+ this.opts = opts;
+ (0, engine_io_client_1.installTimerFunctions)(this, opts);
+ this.reconnection(opts.reconnection !== false);
+ this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
+ this.reconnectionDelay(opts.reconnectionDelay || 1000);
+ this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);
+ this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);
+ this.backoff = new backo2_js_1.Backoff({
+ min: this.reconnectionDelay(),
+ max: this.reconnectionDelayMax(),
+ jitter: this.randomizationFactor(),
+ });
+ this.timeout(null == opts.timeout ? 20000 : opts.timeout);
+ this._readyState = "closed";
+ this.uri = uri;
+ const _parser = opts.parser || parser;
+ this.encoder = new _parser.Encoder();
+ this.decoder = new _parser.Decoder();
+ this._autoConnect = opts.autoConnect !== false;
+ if (this._autoConnect)
+ this.open();
+ }
+ reconnection(v) {
+ if (!arguments.length)
+ return this._reconnection;
+ this._reconnection = !!v;
+ if (!v) {
+ this.skipReconnect = true;
+ }
+ return this;
+ }
+ reconnectionAttempts(v) {
+ if (v === undefined)
+ return this._reconnectionAttempts;
+ this._reconnectionAttempts = v;
+ return this;
+ }
+ reconnectionDelay(v) {
+ var _a;
+ if (v === undefined)
+ return this._reconnectionDelay;
+ this._reconnectionDelay = v;
+ (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);
+ return this;
+ }
+ randomizationFactor(v) {
+ var _a;
+ if (v === undefined)
+ return this._randomizationFactor;
+ this._randomizationFactor = v;
+ (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);
+ return this;
+ }
+ reconnectionDelayMax(v) {
+ var _a;
+ if (v === undefined)
+ return this._reconnectionDelayMax;
+ this._reconnectionDelayMax = v;
+ (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);
+ return this;
+ }
+ timeout(v) {
+ if (!arguments.length)
+ return this._timeout;
+ this._timeout = v;
+ return this;
+ }
+ /**
+ * Starts trying to reconnect if reconnection is enabled and we have not
+ * started reconnecting yet
+ *
+ * @private
+ */
+ maybeReconnectOnOpen() {
+ // Only try to reconnect if it's the first time we're connecting
+ if (!this._reconnecting &&
+ this._reconnection &&
+ this.backoff.attempts === 0) {
+ // keeps reconnection from firing twice for the same reconnection loop
+ this.reconnect();
+ }
+ }
+ /**
+ * Sets the current transport `socket`.
+ *
+ * @param {Function} fn - optional, callback
+ * @return self
+ * @public
+ */
+ open(fn) {
+ debug("readyState %s", this._readyState);
+ if (~this._readyState.indexOf("open"))
+ return this;
+ debug("opening %s", this.uri);
+ this.engine = new engine_io_client_1.Socket(this.uri, this.opts);
+ const socket = this.engine;
+ const self = this;
+ this._readyState = "opening";
+ this.skipReconnect = false;
+ // emit `open`
+ const openSubDestroy = (0, on_js_1.on)(socket, "open", function () {
+ self.onopen();
+ fn && fn();
+ });
+ const onError = (err) => {
+ debug("error");
+ this.cleanup();
+ this._readyState = "closed";
+ this.emitReserved("error", err);
+ if (fn) {
+ fn(err);
+ }
+ else {
+ // Only do this if there is no fn to handle the error
+ this.maybeReconnectOnOpen();
+ }
+ };
+ // emit `error`
+ const errorSub = (0, on_js_1.on)(socket, "error", onError);
+ if (false !== this._timeout) {
+ const timeout = this._timeout;
+ debug("connect attempt will timeout after %d", timeout);
+ // set timer
+ const timer = this.setTimeoutFn(() => {
+ debug("connect attempt timed out after %d", timeout);
+ openSubDestroy();
+ onError(new Error("timeout"));
+ socket.close();
+ }, timeout);
+ if (this.opts.autoUnref) {
+ timer.unref();
+ }
+ this.subs.push(() => {
+ this.clearTimeoutFn(timer);
+ });
+ }
+ this.subs.push(openSubDestroy);
+ this.subs.push(errorSub);
+ return this;
+ }
+ /**
+ * Alias for open()
+ *
+ * @return self
+ * @public
+ */
+ connect(fn) {
+ return this.open(fn);
+ }
+ /**
+ * Called upon transport open.
+ *
+ * @private
+ */
+ onopen() {
+ debug("open");
+ // clear old subs
+ this.cleanup();
+ // mark as open
+ this._readyState = "open";
+ this.emitReserved("open");
+ // add new subs
+ const socket = this.engine;
+ this.subs.push((0, on_js_1.on)(socket, "ping", this.onping.bind(this)), (0, on_js_1.on)(socket, "data", this.ondata.bind(this)), (0, on_js_1.on)(socket, "error", this.onerror.bind(this)), (0, on_js_1.on)(socket, "close", this.onclose.bind(this)),
+ // @ts-ignore
+ (0, on_js_1.on)(this.decoder, "decoded", this.ondecoded.bind(this)));
+ }
+ /**
+ * Called upon a ping.
+ *
+ * @private
+ */
+ onping() {
+ this.emitReserved("ping");
+ }
+ /**
+ * Called with data.
+ *
+ * @private
+ */
+ ondata(data) {
+ try {
+ this.decoder.add(data);
+ }
+ catch (e) {
+ this.onclose("parse error", e);
+ }
+ }
+ /**
+ * Called when parser fully decodes a packet.
+ *
+ * @private
+ */
+ ondecoded(packet) {
+ // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a "parse error"
+ (0, engine_io_client_1.nextTick)(() => {
+ this.emitReserved("packet", packet);
+ }, this.setTimeoutFn);
+ }
+ /**
+ * Called upon socket error.
+ *
+ * @private
+ */
+ onerror(err) {
+ debug("error", err);
+ this.emitReserved("error", err);
+ }
+ /**
+ * Creates a new socket for the given `nsp`.
+ *
+ * @return {Socket}
+ * @public
+ */
+ socket(nsp, opts) {
+ let socket = this.nsps[nsp];
+ if (!socket) {
+ socket = new socket_js_1.Socket(this, nsp, opts);
+ this.nsps[nsp] = socket;
+ }
+ else if (this._autoConnect && !socket.active) {
+ socket.connect();
+ }
+ return socket;
+ }
+ /**
+ * Called upon a socket close.
+ *
+ * @param socket
+ * @private
+ */
+ _destroy(socket) {
+ const nsps = Object.keys(this.nsps);
+ for (const nsp of nsps) {
+ const socket = this.nsps[nsp];
+ if (socket.active) {
+ debug("socket %s is still active, skipping close", nsp);
+ return;
+ }
+ }
+ this._close();
+ }
+ /**
+ * Writes a packet.
+ *
+ * @param packet
+ * @private
+ */
+ _packet(packet) {
+ debug("writing packet %j", packet);
+ const encodedPackets = this.encoder.encode(packet);
+ for (let i = 0; i < encodedPackets.length; i++) {
+ this.engine.write(encodedPackets[i], packet.options);
+ }
+ }
+ /**
+ * Clean up transport subscriptions and packet buffer.
+ *
+ * @private
+ */
+ cleanup() {
+ debug("cleanup");
+ this.subs.forEach((subDestroy) => subDestroy());
+ this.subs.length = 0;
+ this.decoder.destroy();
+ }
+ /**
+ * Close the current socket.
+ *
+ * @private
+ */
+ _close() {
+ debug("disconnect");
+ this.skipReconnect = true;
+ this._reconnecting = false;
+ this.onclose("forced close");
+ }
+ /**
+ * Alias for close()
+ *
+ * @private
+ */
+ disconnect() {
+ return this._close();
+ }
+ /**
+ * Called when:
+ *
+ * - the low-level engine is closed
+ * - the parser encountered a badly formatted packet
+ * - all sockets are disconnected
+ *
+ * @private
+ */
+ onclose(reason, description) {
+ var _a;
+ debug("closed due to %s", reason);
+ this.cleanup();
+ (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();
+ this.backoff.reset();
+ this._readyState = "closed";
+ this.emitReserved("close", reason, description);
+ if (this._reconnection && !this.skipReconnect) {
+ this.reconnect();
+ }
+ }
+ /**
+ * Attempt a reconnection.
+ *
+ * @private
+ */
+ reconnect() {
+ if (this._reconnecting || this.skipReconnect)
+ return this;
+ const self = this;
+ if (this.backoff.attempts >= this._reconnectionAttempts) {
+ debug("reconnect failed");
+ this.backoff.reset();
+ this.emitReserved("reconnect_failed");
+ this._reconnecting = false;
+ }
+ else {
+ const delay = this.backoff.duration();
+ debug("will wait %dms before reconnect attempt", delay);
+ this._reconnecting = true;
+ const timer = this.setTimeoutFn(() => {
+ if (self.skipReconnect)
+ return;
+ debug("attempting reconnect");
+ this.emitReserved("reconnect_attempt", self.backoff.attempts);
+ // check again for the case socket closed in above events
+ if (self.skipReconnect)
+ return;
+ self.open((err) => {
+ if (err) {
+ debug("reconnect attempt error");
+ self._reconnecting = false;
+ self.reconnect();
+ this.emitReserved("reconnect_error", err);
+ }
+ else {
+ debug("reconnect success");
+ self.onreconnect();
+ }
+ });
+ }, delay);
+ if (this.opts.autoUnref) {
+ timer.unref();
+ }
+ this.subs.push(() => {
+ this.clearTimeoutFn(timer);
+ });
+ }
+ }
+ /**
+ * Called upon successful reconnect.
+ *
+ * @private
+ */
+ onreconnect() {
+ const attempt = this.backoff.attempts;
+ this._reconnecting = false;
+ this.backoff.reset();
+ this.emitReserved("reconnect", attempt);
+ }
+ }
+ manager.Manager = Manager$1;
+
+ cjs$3.exports;
+
+ (function (module, exports) {
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.Socket = exports.Manager = exports.protocol = void 0;
+ exports.io = lookup;
+ exports.connect = lookup;
+ exports.default = lookup;
+ const url_js_1 = url$1;
+ const manager_js_1 = manager;
+ Object.defineProperty(exports, "Manager", { enumerable: true, get: function () { return manager_js_1.Manager; } });
+ const socket_js_1 = socket$1;
+ Object.defineProperty(exports, "Socket", { enumerable: true, get: function () { return socket_js_1.Socket; } });
+ const debug_1 = __importDefault(browserExports); // debug()
+ const debug = (0, debug_1.default)("socket.io-client"); // debug()
+ /**
+ * Managers cache.
+ */
+ const cache = {};
+ function lookup(uri, opts) {
+ if (typeof uri === "object") {
+ opts = uri;
+ uri = undefined;
+ }
+ opts = opts || {};
+ const parsed = (0, url_js_1.url)(uri, opts.path || "/socket.io");
+ const source = parsed.source;
+ const id = parsed.id;
+ const path = parsed.path;
+ const sameNamespace = cache[id] && path in cache[id]["nsps"];
+ const newConnection = opts.forceNew ||
+ opts["force new connection"] ||
+ false === opts.multiplex ||
+ sameNamespace;
+ let io;
+ if (newConnection) {
+ debug("ignoring socket cache for %s", source);
+ io = new manager_js_1.Manager(source, opts);
+ }
+ else {
+ if (!cache[id]) {
+ debug("new io instance for %s", source);
+ cache[id] = new manager_js_1.Manager(source, opts);
+ }
+ io = cache[id];
+ }
+ if (parsed.query && !opts.query) {
+ opts.query = parsed.queryKey;
+ }
+ return io.socket(parsed.path, opts);
+ }
+ // so that "lookup" can be used both as a function (e.g. `io(...)`) and as a
+ // namespace (e.g. `io.connect(...)`), for backward compatibility
+ Object.assign(lookup, {
+ Manager: manager_js_1.Manager,
+ Socket: socket_js_1.Socket,
+ io: lookup,
+ connect: lookup,
+ });
+ /**
+ * Protocol version.
+ *
+ * @public
+ */
+ var socket_io_parser_1 = cjs;
+ Object.defineProperty(exports, "protocol", { enumerable: true, get: function () { return socket_io_parser_1.protocol; } });
+ var engine_io_client_1 = cjs$2;
+ Object.defineProperty(exports, "Fetch", { enumerable: true, get: function () { return engine_io_client_1.Fetch; } });
+ Object.defineProperty(exports, "NodeXHR", { enumerable: true, get: function () { return engine_io_client_1.NodeXHR; } });
+ Object.defineProperty(exports, "XHR", { enumerable: true, get: function () { return engine_io_client_1.XHR; } });
+ Object.defineProperty(exports, "NodeWebSocket", { enumerable: true, get: function () { return engine_io_client_1.NodeWebSocket; } });
+ Object.defineProperty(exports, "WebSocket", { enumerable: true, get: function () { return engine_io_client_1.WebSocket; } });
+ Object.defineProperty(exports, "WebTransport", { enumerable: true, get: function () { return engine_io_client_1.WebTransport; } });
+
+ module.exports = lookup;
+ } (cjs$3, cjs$3.exports));
+
+ var cjsExports = cjs$3.exports;
+
+ var menu = {};
+
+ Object.defineProperty(menu, "__esModule", { value: true });
+ menu.Menu = void 0;
+ var Menu = /** @class */ (function () {
+ function Menu() {
+ this.menuContainer = document.querySelector('.ntsh_menubar');
+ this.tabContainer = document.querySelector('.ntsh_tabs');
+ this.registerListeners();
+ if (window.location.search.includes('advanced'))
+ this.selectTab('advanced');
+ }
+ Menu.prototype.selectTab = function (tabId) {
+ this.menuContainer
+ .querySelectorAll('.ntsh_menubar-item')
+ .forEach(function (item) {
+ if (item.getAttribute('tabid') === tabId) {
+ item.classList.add('selected');
+ }
+ else {
+ item.classList.remove('selected');
+ }
+ });
+ this.tabContainer.querySelectorAll('.ntsh_tab').forEach(function (tab) {
+ if (tab.getAttribute('tabid') === tabId) {
+ tab.classList.add('visible');
+ }
+ else {
+ tab.classList.remove('visible');
+ }
+ });
+ };
+ Menu.prototype.registerListeners = function () {
+ var _this = this;
+ this.menuContainer
+ .querySelectorAll('.ntsh_menubar-item')
+ .forEach(function (item) {
+ item.addEventListener('click', function () {
+ var itemId = item.getAttribute('tabid');
+ _this.selectTab(itemId);
+ });
+ });
+ };
+ return Menu;
+ }());
+ menu.Menu = Menu;
+
+ var checklist = {};
+
+ var Index = {};
+
+ var name = "morphux";
+ var version = "2026.3.1";
+ var description = "Standardized Morphix UX framework.";
+ var main = "dist/Index.js";
+ var types = "dist/index.d.ts";
+ var scripts = {
+ build: "sass scss/index.scss style.css && tsc && npm run bundle",
+ "watch-ts": "tsc -w",
+ "watch-scss": "sass scss/index.scss style.css -w",
+ "watch-rollup": "rollup -c --watch",
+ bundle: "npm run bundle-ts && npm run bundle-defenitions",
+ "bundle-ts": "rollup --config rollup.config.js",
+ "bundle-defenitions": "dts-bundle-generator dist/index.d.ts -o bundle.d.ts --no-check"
+ };
+ var author = "";
+ var license = "ISC";
+ var dependencies = {
+ "@egjs/hammerjs": "^2.0.17",
+ "@rollup/plugin-commonjs": "^25.0.7",
+ "@rollup/plugin-json": "^6.1.0",
+ "@rollup/plugin-node-resolve": "^15.1.0",
+ "@types/node": "^20.12.8",
+ "material-symbols": "^0.17.4",
+ rollup: "^2.79.1",
+ "rollup-plugin-terser": "^7.0.2",
+ sortablejs: "^1.2.1"
+ };
+ var devDependencies = {
+ "@types/sortablejs": "^1.15.8",
+ "dts-bundle-generator": "^9.5.1"
+ };
+ var require$$0$1 = {
+ name: name,
+ version: version,
+ description: description,
+ main: main,
+ types: types,
+ scripts: scripts,
+ author: author,
+ license: license,
+ dependencies: dependencies,
+ devDependencies: devDependencies
+ };
+
+ var Morph_Components = {};
+
+ var Component_Button = {};
+
+ var CE = {};
+
+ Object.defineProperty(CE, "__esModule", { value: true });
+ CE.ce = void 0;
+ function ce(tagName, classList, attributes, innerText, innerHTML, style) {
+ var _a;
+ var element = document.createElement(tagName);
+ if (classList)
+ if (typeof classList == 'string')
+ element.classList.add(classList);
+ else
+ (_a = element.classList).add.apply(_a, classList);
+ if (attributes)
+ for (var key in attributes)
+ if (element[key] != undefined)
+ element[key] = attributes[key];
+ else
+ element.setAttribute(key, String(attributes[key]));
+ if (innerText)
+ element.innerText = innerText;
+ if (innerHTML)
+ element.innerHTML = innerHTML;
+ if (style != undefined)
+ for (var key in style)
+ element.style[key] = style[key];
+ return element;
+ }
+ CE.ce = ce;
+
+ var baseComponent = {};
+
+ Object.defineProperty(baseComponent, "__esModule", { value: true });
+ baseComponent.MUXComponent = void 0;
+ var MUXComponent = /** @class */ (function () {
+ function MUXComponent() {
+ this._events = {};
+ }
+ MUXComponent.prototype.callEvent = function (event) {
+ var _a;
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ if (this._events[event] != undefined) {
+ (_a = this._events)[event].apply(_a, args);
+ }
+ };
+ MUXComponent.prototype.on = function (event, callback) {
+ this._events[event] = callback;
+ };
+ MUXComponent.prototype.destroy = function () {
+ this.container.remove();
+ };
+ return MUXComponent;
+ }());
+ baseComponent.MUXComponent = MUXComponent;
+
+ var __extends$9 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Button, "__esModule", { value: true });
+ Component_Button.ComponentButton = void 0;
+ var CE_1$9 = CE;
+ var baseComponent_1$9 = baseComponent;
+ var ComponentButton = /** @class */ (function (_super) {
+ __extends$9(ComponentButton, _super);
+ function ComponentButton(options) {
+ var _a, _b;
+ var _this = _super.call(this) || this;
+ _this.mode = 'normal';
+ _this.mode = (_a = options === null || options === void 0 ? void 0 : options.mode) !== null && _a !== void 0 ? _a : 'normal';
+ var target = (_b = options === null || options === void 0 ? void 0 : options.target) !== null && _b !== void 0 ? _b : '';
+ _this.container = (0, CE_1$9.ce)(typeof target === 'string' ? 'a' : 'div', [
+ 'mux_button',
+ "mux_".concat(_this.mode),
+ ]);
+ if ((options === null || options === void 0 ? void 0 : options.materialIcon) != undefined)
+ _this.container.append((0, CE_1$9.ce)('span', 'material-symbols-outlined', null, options.materialIcon));
+ _this.container.appendChild((0, CE_1$9.ce)('span', ['mux_text', 'mux_normal'], null, options.content));
+ _this.container.onclick = function (e) {
+ e.preventDefault();
+ if (_this.mode == 'disabled')
+ return;
+ if (typeof target === 'function')
+ target();
+ else {
+ if ((options === null || options === void 0 ? void 0 : options.openInNewTab) == true)
+ window.open(target, '_blank');
+ else
+ window.location.href = target;
+ }
+ };
+ if (typeof target === 'string')
+ _this.container.setAttribute('href', target);
+ return _this;
+ }
+ ComponentButton.prototype.updateContent = function (content) {
+ this.container.innerHTML = content;
+ };
+ ComponentButton.prototype.updateMode = function (mode) {
+ this.mode = mode;
+ this.container.classList.remove('mux_normal');
+ this.container.classList.remove('mux_highlight');
+ this.container.classList.remove('mux_secondary');
+ this.container.classList.remove('mux_disabled');
+ this.container.classList.add("mux_".concat(mode));
+ };
+ return ComponentButton;
+ }(baseComponent_1$9.MUXComponent));
+ Component_Button.ComponentButton = ComponentButton;
+
+ var Component_Cards = {};
+
+ var TextHighlighter = {};
+
+ Object.defineProperty(TextHighlighter, "__esModule", { value: true });
+ TextHighlighter.generateTextHighlights = void 0;
+ function generateTextHighlights(originalText, additionalClassnames) {
+ var _a;
+ if (additionalClassnames === void 0) { additionalClassnames = []; }
+ var div = document.createElement('div');
+ (_a = div.classList).add.apply(_a, additionalClassnames);
+ var remainingStr = originalText;
+ var regex = /\<(.*?)\>/;
+ while (remainingStr.length) {
+ var match = regex.exec(remainingStr);
+ if (match) {
+ var normalText = remainingStr.substring(0, match.index);
+ if (normalText) {
+ var normalSpan = document.createElement('span');
+ normalSpan.className = 'normal';
+ normalSpan.textContent = normalText;
+ div.appendChild(normalSpan);
+ }
+ var highlightSpan = document.createElement('span');
+ highlightSpan.className = 'highlight';
+ highlightSpan.textContent = match[1];
+ div.appendChild(highlightSpan);
+ remainingStr = remainingStr.substring(match.index + match[0].length);
+ }
+ else {
+ var normalSpan = document.createElement('span');
+ normalSpan.className = 'normal';
+ normalSpan.textContent = remainingStr;
+ div.appendChild(normalSpan);
+ break;
+ }
+ }
+ return div;
+ }
+ TextHighlighter.generateTextHighlights = generateTextHighlights;
+
+ var Sortable$2 = {exports: {}};
+
+ /**!
+ * Sortable
+ * @author RubaXa
+ * @license MIT
+ */
+ Sortable$2.exports;
+
+ (function (module) {
+ (function (factory) {
+
+ {
+ module.exports = factory();
+ }
+ })(function () {
+
+ var dragEl,
+ ghostEl,
+ cloneEl,
+ rootEl,
+ nextEl,
+
+ scrollEl,
+ scrollParentEl,
+
+ lastEl,
+ lastCSS,
+
+ oldIndex,
+ newIndex,
+
+ activeGroup,
+ autoScroll = {},
+
+ tapEvt,
+ touchEvt,
+
+ /** @const */
+ RSPACE = /\s+/g,
+
+ expando = 'Sortable' + (new Date).getTime(),
+
+ win = window,
+ document = win.document,
+ parseInt = win.parseInt,
+
+ supportDraggable = !!('draggable' in document.createElement('div')),
+
+ _silent = false,
+
+ abs = Math.abs,
+ slice = [].slice,
+
+ touchDragOverListeners = [],
+
+ _autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {
+ // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521
+ if (rootEl && options.scroll) {
+ var el,
+ rect,
+ sens = options.scrollSensitivity,
+ speed = options.scrollSpeed,
+
+ x = evt.clientX,
+ y = evt.clientY,
+
+ winWidth = window.innerWidth,
+ winHeight = window.innerHeight,
+
+ vx,
+ vy
+ ;
+
+ // Delect scrollEl
+ if (scrollParentEl !== rootEl) {
+ scrollEl = options.scroll;
+ scrollParentEl = rootEl;
+
+ if (scrollEl === true) {
+ scrollEl = rootEl;
+
+ do {
+ if ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||
+ (scrollEl.offsetHeight < scrollEl.scrollHeight)
+ ) {
+ break;
+ }
+ /* jshint boss:true */
+ } while (scrollEl = scrollEl.parentNode);
+ }
+ }
+
+ if (scrollEl) {
+ el = scrollEl;
+ rect = scrollEl.getBoundingClientRect();
+ vx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);
+ vy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);
+ }
+
+
+ if (!(vx || vy)) {
+ vx = (winWidth - x <= sens) - (x <= sens);
+ vy = (winHeight - y <= sens) - (y <= sens);
+
+ /* jshint expr:true */
+ (vx || vy) && (el = win);
+ }
+
+
+ if (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {
+ autoScroll.el = el;
+ autoScroll.vx = vx;
+ autoScroll.vy = vy;
+
+ clearInterval(autoScroll.pid);
+
+ if (el) {
+ autoScroll.pid = setInterval(function () {
+ if (el === win) {
+ win.scrollTo(win.pageXOffset + vx * speed, win.pageYOffset + vy * speed);
+ } else {
+ vy && (el.scrollTop += vy * speed);
+ vx && (el.scrollLeft += vx * speed);
+ }
+ }, 24);
+ }
+ }
+ }
+ }, 30)
+ ;
+
+
+
+ /**
+ * @class Sortable
+ * @param {HTMLElement} el
+ * @param {Object} [options]
+ */
+ function Sortable(el, options) {
+ this.el = el; // root element
+ this.options = options = _extend({}, options);
+
+
+ // Export instance
+ el[expando] = this;
+
+
+ // Default options
+ var defaults = {
+ group: Math.random(),
+ sort: true,
+ disabled: false,
+ store: null,
+ handle: null,
+ scroll: true,
+ scrollSensitivity: 30,
+ scrollSpeed: 10,
+ draggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',
+ ghostClass: 'sortable-ghost',
+ ignore: 'a, img',
+ filter: null,
+ animation: 0,
+ setData: function (dataTransfer, dragEl) {
+ dataTransfer.setData('Text', dragEl.textContent);
+ },
+ dropBubble: false,
+ dragoverBubble: false,
+ dataIdAttr: 'data-id',
+ delay: 0
+ };
+
+
+ // Set default options
+ for (var name in defaults) {
+ !(name in options) && (options[name] = defaults[name]);
+ }
+
+
+ var group = options.group;
+
+ if (!group || typeof group != 'object') {
+ group = options.group = { name: group };
+ }
+
+
+ ['pull', 'put'].forEach(function (key) {
+ if (!(key in group)) {
+ group[key] = true;
+ }
+ });
+
+
+ options.groups = ' ' + group.name + (group.put.join ? ' ' + group.put.join(' ') : '') + ' ';
+
+
+ // Bind all private methods
+ for (var fn in this) {
+ if (fn.charAt(0) === '_') {
+ this[fn] = _bind(this, this[fn]);
+ }
+ }
+
+
+ // Bind events
+ _on(el, 'mousedown', this._onTapStart);
+ _on(el, 'touchstart', this._onTapStart);
+
+ _on(el, 'dragover', this);
+ _on(el, 'dragenter', this);
+
+ touchDragOverListeners.push(this._onDragOver);
+
+ // Restore sorting
+ options.store && this.sort(options.store.get(this));
+ }
+
+
+ Sortable.prototype = /** @lends Sortable.prototype */ {
+ constructor: Sortable,
+
+ _onTapStart: function (/** Event|TouchEvent */evt) {
+ var _this = this,
+ el = this.el,
+ options = this.options,
+ type = evt.type,
+ touch = evt.touches && evt.touches[0],
+ target = (touch || evt).target,
+ originalTarget = target,
+ filter = options.filter;
+
+
+ if (type === 'mousedown' && evt.button !== 0 || options.disabled) {
+ return; // only left button or enabled
+ }
+
+ target = _closest(target, options.draggable, el);
+
+ if (!target) {
+ return;
+ }
+
+ // get the index of the dragged element within its parent
+ oldIndex = _index(target);
+
+ // Check filter
+ if (typeof filter === 'function') {
+ if (filter.call(this, evt, target, this)) {
+ _dispatchEvent(_this, originalTarget, 'filter', target, el, oldIndex);
+ evt.preventDefault();
+ return; // cancel dnd
+ }
+ }
+ else if (filter) {
+ filter = filter.split(',').some(function (criteria) {
+ criteria = _closest(originalTarget, criteria.trim(), el);
+
+ if (criteria) {
+ _dispatchEvent(_this, criteria, 'filter', target, el, oldIndex);
+ return true;
+ }
+ });
+
+ if (filter) {
+ evt.preventDefault();
+ return; // cancel dnd
+ }
+ }
+
+
+ if (options.handle && !_closest(originalTarget, options.handle, el)) {
+ return;
+ }
+
+
+ // Prepare `dragstart`
+ this._prepareDragStart(evt, touch, target);
+ },
+
+ _prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target) {
+ var _this = this,
+ el = _this.el,
+ options = _this.options,
+ ownerDocument = el.ownerDocument,
+ dragStartFn;
+
+ if (target && !dragEl && (target.parentNode === el)) {
+ tapEvt = evt;
+
+ rootEl = el;
+ dragEl = target;
+ nextEl = dragEl.nextSibling;
+ activeGroup = options.group;
+
+ dragStartFn = function () {
+ // Delayed drag has been triggered
+ // we can re-enable the events: touchmove/mousemove
+ _this._disableDelayedDrag();
+
+ // Make the element draggable
+ dragEl.draggable = true;
+
+ // Disable "draggable"
+ options.ignore.split(',').forEach(function (criteria) {
+ _find(dragEl, criteria.trim(), _disableDraggable);
+ });
+
+ // Bind the events: dragstart/dragend
+ _this._triggerDragStart(touch);
+ };
+
+ _on(ownerDocument, 'mouseup', _this._onDrop);
+ _on(ownerDocument, 'touchend', _this._onDrop);
+ _on(ownerDocument, 'touchcancel', _this._onDrop);
+
+ if (options.delay) {
+ // If the user moves the pointer before the delay has been reached:
+ // disable the delayed drag
+ _on(ownerDocument, 'mousemove', _this._disableDelayedDrag);
+ _on(ownerDocument, 'touchmove', _this._disableDelayedDrag);
+
+ _this._dragStartTimer = setTimeout(dragStartFn, options.delay);
+ } else {
+ dragStartFn();
+ }
+ }
+ },
+
+ _disableDelayedDrag: function () {
+ var ownerDocument = this.el.ownerDocument;
+
+ clearTimeout(this._dragStartTimer);
+
+ _off(ownerDocument, 'mousemove', this._disableDelayedDrag);
+ _off(ownerDocument, 'touchmove', this._disableDelayedDrag);
+ },
+
+ _triggerDragStart: function (/** Touch */touch) {
+ if (touch) {
+ // Touch device support
+ tapEvt = {
+ target: dragEl,
+ clientX: touch.clientX,
+ clientY: touch.clientY
+ };
+
+ this._onDragStart(tapEvt, 'touch');
+ }
+ else if (!supportDraggable) {
+ this._onDragStart(tapEvt, true);
+ }
+ else {
+ _on(dragEl, 'dragend', this);
+ _on(rootEl, 'dragstart', this._onDragStart);
+ }
+
+ try {
+ if (document.selection) {
+ document.selection.empty();
+ } else {
+ window.getSelection().removeAllRanges();
+ }
+ } catch (err) {
+ }
+ },
+
+ _dragStarted: function () {
+ if (rootEl && dragEl) {
+ // Apply effect
+ _toggleClass(dragEl, this.options.ghostClass, true);
+
+ Sortable.active = this;
+
+ // Drag start event
+ _dispatchEvent(this, rootEl, 'start', dragEl, rootEl, oldIndex);
+ }
+ },
+
+ _emulateDragOver: function () {
+ if (touchEvt) {
+ _css(ghostEl, 'display', 'none');
+
+ var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY),
+ parent = target,
+ groupName = ' ' + this.options.group.name + '',
+ i = touchDragOverListeners.length;
+
+ if (parent) {
+ do {
+ if (parent[expando] && parent[expando].options.groups.indexOf(groupName) > -1) {
+ while (i--) {
+ touchDragOverListeners[i]({
+ clientX: touchEvt.clientX,
+ clientY: touchEvt.clientY,
+ target: target,
+ rootEl: parent
+ });
+ }
+
+ break;
+ }
+
+ target = parent; // store last element
+ }
+ /* jshint boss:true */
+ while (parent = parent.parentNode);
+ }
+
+ _css(ghostEl, 'display', '');
+ }
+ },
+
+
+ _onTouchMove: function (/**TouchEvent*/evt) {
+ if (tapEvt) {
+ var touch = evt.touches ? evt.touches[0] : evt,
+ dx = touch.clientX - tapEvt.clientX,
+ dy = touch.clientY - tapEvt.clientY,
+ translate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';
+
+ touchEvt = touch;
+
+ _css(ghostEl, 'webkitTransform', translate3d);
+ _css(ghostEl, 'mozTransform', translate3d);
+ _css(ghostEl, 'msTransform', translate3d);
+ _css(ghostEl, 'transform', translate3d);
+
+ evt.preventDefault();
+ }
+ },
+
+
+ _onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {
+ var dataTransfer = evt.dataTransfer,
+ options = this.options;
+
+ this._offUpEvents();
+
+ if (activeGroup.pull == 'clone') {
+ cloneEl = dragEl.cloneNode(true);
+ _css(cloneEl, 'display', 'none');
+ rootEl.insertBefore(cloneEl, dragEl);
+ }
+
+ if (useFallback) {
+ var rect = dragEl.getBoundingClientRect(),
+ css = _css(dragEl),
+ ghostRect;
+
+ ghostEl = dragEl.cloneNode(true);
+
+ _css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));
+ _css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));
+ _css(ghostEl, 'width', rect.width);
+ _css(ghostEl, 'height', rect.height);
+ _css(ghostEl, 'opacity', '0.8');
+ _css(ghostEl, 'position', 'fixed');
+ _css(ghostEl, 'zIndex', '100000');
+
+ rootEl.appendChild(ghostEl);
+
+ // Fixing dimensions.
+ ghostRect = ghostEl.getBoundingClientRect();
+ _css(ghostEl, 'width', rect.width * 2 - ghostRect.width);
+ _css(ghostEl, 'height', rect.height * 2 - ghostRect.height);
+
+ if (useFallback === 'touch') {
+ // Bind touch events
+ _on(document, 'touchmove', this._onTouchMove);
+ _on(document, 'touchend', this._onDrop);
+ _on(document, 'touchcancel', this._onDrop);
+ } else {
+ // Old brwoser
+ _on(document, 'mousemove', this._onTouchMove);
+ _on(document, 'mouseup', this._onDrop);
+ }
+
+ this._loopId = setInterval(this._emulateDragOver, 150);
+ }
+ else {
+ if (dataTransfer) {
+ dataTransfer.effectAllowed = 'move';
+ options.setData && options.setData.call(this, dataTransfer, dragEl);
+ }
+
+ _on(document, 'drop', this);
+ }
+
+ setTimeout(this._dragStarted, 0);
+ },
+
+ _onDragOver: function (/**Event*/evt) {
+ var el = this.el,
+ target,
+ dragRect,
+ revert,
+ options = this.options,
+ group = options.group,
+ groupPut = group.put,
+ isOwner = (activeGroup === group),
+ canSort = options.sort;
+
+ if (evt.preventDefault !== void 0) {
+ evt.preventDefault();
+ !options.dragoverBubble && evt.stopPropagation();
+ }
+
+ if (activeGroup && !options.disabled &&
+ (isOwner
+ ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list
+ : activeGroup.pull && groupPut && (
+ (activeGroup.name === group.name) || // by Name
+ (groupPut.indexOf && ~groupPut.indexOf(activeGroup.name)) // by Array
+ )
+ ) &&
+ (evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback
+ ) {
+ // Smart auto-scrolling
+ _autoScroll(evt, options, this.el);
+
+ if (_silent) {
+ return;
+ }
+
+ target = _closest(evt.target, options.draggable, el);
+ dragRect = dragEl.getBoundingClientRect();
+
+
+ if (revert) {
+ _cloneHide(true);
+
+ if (cloneEl || nextEl) {
+ rootEl.insertBefore(dragEl, cloneEl || nextEl);
+ }
+ else if (!canSort) {
+ rootEl.appendChild(dragEl);
+ }
+
+ return;
+ }
+
+
+ if ((el.children.length === 0) || (el.children[0] === ghostEl) ||
+ (el === evt.target) && (target = _ghostInBottom(el, evt))
+ ) {
+ if (target) {
+ if (target.animated) {
+ return;
+ }
+ targetRect = target.getBoundingClientRect();
+ }
+
+ _cloneHide(isOwner);
+
+ if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect) !== false) {
+ el.appendChild(dragEl);
+ this._animate(dragRect, dragEl);
+ target && this._animate(targetRect, target);
+ }
+ }
+ else if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {
+ if (lastEl !== target) {
+ lastEl = target;
+ lastCSS = _css(target);
+ }
+
+
+ var targetRect = target.getBoundingClientRect(),
+ width = targetRect.right - targetRect.left,
+ height = targetRect.bottom - targetRect.top,
+ floating = /left|right|inline/.test(lastCSS.cssFloat + lastCSS.display),
+ isWide = (target.offsetWidth > dragEl.offsetWidth),
+ isLong = (target.offsetHeight > dragEl.offsetHeight),
+ halfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,
+ nextSibling = target.nextElementSibling,
+ moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect),
+ after
+ ;
+
+ if (moveVector !== false) {
+ _silent = true;
+ setTimeout(_unsilent, 30);
+
+ _cloneHide(isOwner);
+
+ if (moveVector === 1 || moveVector === -1) {
+ after = (moveVector === 1);
+ }
+ else if (floating) {
+ after = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;
+ } else {
+ after = (nextSibling !== dragEl) && !isLong || halfway && isLong;
+ }
+
+ if (after && !nextSibling) {
+ el.appendChild(dragEl);
+ } else {
+ target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
+ }
+
+ this._animate(dragRect, dragEl);
+ this._animate(targetRect, target);
+ }
+ }
+ }
+ },
+
+ _animate: function (prevRect, target) {
+ var ms = this.options.animation;
+
+ if (ms) {
+ var currentRect = target.getBoundingClientRect();
+
+ _css(target, 'transition', 'none');
+ _css(target, 'transform', 'translate3d('
+ + (prevRect.left - currentRect.left) + 'px,'
+ + (prevRect.top - currentRect.top) + 'px,0)'
+ );
+
+ target.offsetWidth; // repaint
+
+ _css(target, 'transition', 'all ' + ms + 'ms');
+ _css(target, 'transform', 'translate3d(0,0,0)');
+
+ clearTimeout(target.animated);
+ target.animated = setTimeout(function () {
+ _css(target, 'transition', '');
+ _css(target, 'transform', '');
+ target.animated = false;
+ }, ms);
+ }
+ },
+
+ _offUpEvents: function () {
+ var ownerDocument = this.el.ownerDocument;
+
+ _off(document, 'touchmove', this._onTouchMove);
+ _off(ownerDocument, 'mouseup', this._onDrop);
+ _off(ownerDocument, 'touchend', this._onDrop);
+ _off(ownerDocument, 'touchcancel', this._onDrop);
+ },
+
+ _onDrop: function (/**Event*/evt) {
+ var el = this.el,
+ options = this.options;
+
+ clearInterval(this._loopId);
+ clearInterval(autoScroll.pid);
+ clearTimeout(this._dragStartTimer);
+
+ // Unbind events
+ _off(document, 'drop', this);
+ _off(document, 'mousemove', this._onTouchMove);
+ _off(el, 'dragstart', this._onDragStart);
+
+ this._offUpEvents();
+
+ if (evt) {
+ evt.preventDefault();
+ !options.dropBubble && evt.stopPropagation();
+
+ ghostEl && ghostEl.parentNode.removeChild(ghostEl);
+
+ if (dragEl) {
+ _off(dragEl, 'dragend', this);
+
+ _disableDraggable(dragEl);
+ _toggleClass(dragEl, this.options.ghostClass, false);
+
+ if (rootEl !== dragEl.parentNode) {
+ newIndex = _index(dragEl);
+
+ // drag from one list and drop into another
+ _dispatchEvent(null, dragEl.parentNode, 'sort', dragEl, rootEl, oldIndex, newIndex);
+ _dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);
+
+ // Add event
+ _dispatchEvent(null, dragEl.parentNode, 'add', dragEl, rootEl, oldIndex, newIndex);
+
+ // Remove event
+ _dispatchEvent(this, rootEl, 'remove', dragEl, rootEl, oldIndex, newIndex);
+ }
+ else {
+ // Remove clone
+ cloneEl && cloneEl.parentNode.removeChild(cloneEl);
+
+ if (dragEl.nextSibling !== nextEl) {
+ // Get the index of the dragged element within its parent
+ newIndex = _index(dragEl);
+
+ // drag & drop within the same list
+ _dispatchEvent(this, rootEl, 'update', dragEl, rootEl, oldIndex, newIndex);
+ _dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);
+ }
+ }
+
+ if (Sortable.active) {
+ // Drag end event
+ _dispatchEvent(this, rootEl, 'end', dragEl, rootEl, oldIndex, newIndex);
+
+ // Save sorting
+ this.save();
+ }
+ }
+
+ // Nulling
+ rootEl =
+ dragEl =
+ ghostEl =
+ nextEl =
+ cloneEl =
+
+ scrollEl =
+ scrollParentEl =
+
+ tapEvt =
+ touchEvt =
+
+ lastEl =
+ lastCSS =
+
+ activeGroup =
+ Sortable.active = null;
+ }
+ },
+
+
+ handleEvent: function (/**Event*/evt) {
+ var type = evt.type;
+
+ if (type === 'dragover' || type === 'dragenter') {
+ if (dragEl) {
+ this._onDragOver(evt);
+ _globalDragOver(evt);
+ }
+ }
+ else if (type === 'drop' || type === 'dragend') {
+ this._onDrop(evt);
+ }
+ },
+
+
+ /**
+ * Serializes the item into an array of string.
+ * @returns {String[]}
+ */
+ toArray: function () {
+ var order = [],
+ el,
+ children = this.el.children,
+ i = 0,
+ n = children.length,
+ options = this.options;
+
+ for (; i < n; i++) {
+ el = children[i];
+ if (_closest(el, options.draggable, this.el)) {
+ order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));
+ }
+ }
+
+ return order;
+ },
+
+
+ /**
+ * Sorts the elements according to the array.
+ * @param {String[]} order order of the items
+ */
+ sort: function (order) {
+ var items = {}, rootEl = this.el;
+
+ this.toArray().forEach(function (id, i) {
+ var el = rootEl.children[i];
+
+ if (_closest(el, this.options.draggable, rootEl)) {
+ items[id] = el;
+ }
+ }, this);
+
+ order.forEach(function (id) {
+ if (items[id]) {
+ rootEl.removeChild(items[id]);
+ rootEl.appendChild(items[id]);
+ }
+ });
+ },
+
+
+ /**
+ * Save the current sorting
+ */
+ save: function () {
+ var store = this.options.store;
+ store && store.set(this);
+ },
+
+
+ /**
+ * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
+ * @param {HTMLElement} el
+ * @param {String} [selector] default: `options.draggable`
+ * @returns {HTMLElement|null}
+ */
+ closest: function (el, selector) {
+ return _closest(el, selector || this.options.draggable, this.el);
+ },
+
+
+ /**
+ * Set/get option
+ * @param {string} name
+ * @param {*} [value]
+ * @returns {*}
+ */
+ option: function (name, value) {
+ var options = this.options;
+
+ if (value === void 0) {
+ return options[name];
+ } else {
+ options[name] = value;
+ }
+ },
+
+
+ /**
+ * Destroy
+ */
+ destroy: function () {
+ var el = this.el;
+
+ el[expando] = null;
+
+ _off(el, 'mousedown', this._onTapStart);
+ _off(el, 'touchstart', this._onTapStart);
+
+ _off(el, 'dragover', this);
+ _off(el, 'dragenter', this);
+
+ // Remove draggable attributes
+ Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {
+ el.removeAttribute('draggable');
+ });
+
+ touchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);
+
+ this._onDrop();
+
+ this.el = el = null;
+ }
+ };
+
+
+ function _cloneHide(state) {
+ if (cloneEl && (cloneEl.state !== state)) {
+ _css(cloneEl, 'display', state ? 'none' : '');
+ !state && cloneEl.state && rootEl.insertBefore(cloneEl, dragEl);
+ cloneEl.state = state;
+ }
+ }
+
+
+ function _bind(ctx, fn) {
+ var args = slice.call(arguments, 2);
+ return fn.bind ? fn.bind.apply(fn, [ctx].concat(args)) : function () {
+ return fn.apply(ctx, args.concat(slice.call(arguments)));
+ };
+ }
+
+
+ function _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {
+ if (el) {
+ ctx = ctx || document;
+ selector = selector.split('.');
+
+ var tag = selector.shift().toUpperCase(),
+ re = new RegExp('\\s(' + selector.join('|') + ')(?=\\s)', 'g');
+
+ do {
+ if (
+ (tag === '>*' && el.parentNode === ctx) || (
+ (tag === '' || el.nodeName.toUpperCase() == tag) &&
+ (!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)
+ )
+ ) {
+ return el;
+ }
+ }
+ while (el !== ctx && (el = el.parentNode));
+ }
+
+ return null;
+ }
+
+
+ function _globalDragOver(/**Event*/evt) {
+ evt.dataTransfer.dropEffect = 'move';
+ evt.preventDefault();
+ }
+
+
+ function _on(el, event, fn) {
+ el.addEventListener(event, fn, false);
+ }
+
+
+ function _off(el, event, fn) {
+ el.removeEventListener(event, fn, false);
+ }
+
+
+ function _toggleClass(el, name, state) {
+ if (el) {
+ if (el.classList) {
+ el.classList[state ? 'add' : 'remove'](name);
+ }
+ else {
+ var className = (' ' + el.className + ' ').replace(RSPACE, ' ').replace(' ' + name + ' ', ' ');
+ el.className = (className + (state ? ' ' + name : '')).replace(RSPACE, ' ');
+ }
+ }
+ }
+
+
+ function _css(el, prop, val) {
+ var style = el && el.style;
+
+ if (style) {
+ if (val === void 0) {
+ if (document.defaultView && document.defaultView.getComputedStyle) {
+ val = document.defaultView.getComputedStyle(el, '');
+ }
+ else if (el.currentStyle) {
+ val = el.currentStyle;
+ }
+
+ return prop === void 0 ? val : val[prop];
+ }
+ else {
+ if (!(prop in style)) {
+ prop = '-webkit-' + prop;
+ }
+
+ style[prop] = val + (typeof val === 'string' ? '' : 'px');
+ }
+ }
+ }
+
+
+ function _find(ctx, tagName, iterator) {
+ if (ctx) {
+ var list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;
+
+ if (iterator) {
+ for (; i < n; i++) {
+ iterator(list[i], i);
+ }
+ }
+
+ return list;
+ }
+
+ return [];
+ }
+
+
+
+ function _dispatchEvent(sortable, rootEl, name, targetEl, fromEl, startIndex, newIndex) {
+ var evt = document.createEvent('Event'),
+ options = (sortable || rootEl[expando]).options,
+ onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);
+
+ evt.initEvent(name, true, true);
+
+ evt.to = rootEl;
+ evt.from = fromEl || rootEl;
+ evt.item = targetEl || rootEl;
+ evt.clone = cloneEl;
+
+ evt.oldIndex = startIndex;
+ evt.newIndex = newIndex;
+
+ rootEl.dispatchEvent(evt);
+
+ if (options[onName]) {
+ options[onName].call(sortable, evt);
+ }
+ }
+
+
+ function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect) {
+ var evt,
+ sortable = fromEl[expando],
+ onMoveFn = sortable.options.onMove,
+ retVal;
+
+ if (onMoveFn) {
+ evt = document.createEvent('Event');
+ evt.initEvent('move', true, true);
+
+ evt.to = toEl;
+ evt.from = fromEl;
+ evt.dragged = dragEl;
+ evt.draggedRect = dragRect;
+ evt.related = targetEl || toEl;
+ evt.relatedRect = targetRect || toEl.getBoundingClientRect();
+
+ retVal = onMoveFn.call(sortable, evt);
+ }
+
+ return retVal;
+ }
+
+
+ function _disableDraggable(el) {
+ el.draggable = false;
+ }
+
+
+ function _unsilent() {
+ _silent = false;
+ }
+
+
+ /** @returns {HTMLElement|false} */
+ function _ghostInBottom(el, evt) {
+ var lastEl = el.lastElementChild,
+ rect = lastEl.getBoundingClientRect();
+
+ return (evt.clientY - (rect.top + rect.height) > 5) && lastEl; // min delta
+ }
+
+
+ /**
+ * Generate id
+ * @param {HTMLElement} el
+ * @returns {String}
+ * @private
+ */
+ function _generateId(el) {
+ var str = el.tagName + el.className + el.src + el.href + el.textContent,
+ i = str.length,
+ sum = 0;
+
+ while (i--) {
+ sum += str.charCodeAt(i);
+ }
+
+ return sum.toString(36);
+ }
+
+ /**
+ * Returns the index of an element within its parent
+ * @param el
+ * @returns {number}
+ * @private
+ */
+ function _index(/**HTMLElement*/el) {
+ var index = 0;
+ while (el && (el = el.previousElementSibling)) {
+ if (el.nodeName.toUpperCase() !== 'TEMPLATE') {
+ index++;
+ }
+ }
+ return index;
+ }
+
+ function _throttle(callback, ms) {
+ var args, _this;
+
+ return function () {
+ if (args === void 0) {
+ args = arguments;
+ _this = this;
+
+ setTimeout(function () {
+ if (args.length === 1) {
+ callback.call(_this, args[0]);
+ } else {
+ callback.apply(_this, args);
+ }
+
+ args = void 0;
+ }, ms);
+ }
+ };
+ }
+
+ function _extend(dst, src) {
+ if (dst && src) {
+ for (var key in src) {
+ if (src.hasOwnProperty(key)) {
+ dst[key] = src[key];
+ }
+ }
+ }
+
+ return dst;
+ }
+
+
+ // Export utils
+ Sortable.utils = {
+ on: _on,
+ off: _off,
+ css: _css,
+ find: _find,
+ bind: _bind,
+ is: function (el, selector) {
+ return !!_closest(el, selector, el);
+ },
+ extend: _extend,
+ throttle: _throttle,
+ closest: _closest,
+ toggleClass: _toggleClass,
+ index: _index
+ };
+
+
+ Sortable.version = '1.2.1';
+
+
+ /**
+ * Create sortable instance
+ * @param {HTMLElement} el
+ * @param {Object} [options]
+ */
+ Sortable.create = function (el, options) {
+ return new Sortable(el, options);
+ };
+
+ // Export
+ return Sortable;
+ });
+ } (Sortable$2));
+
+ var SortableExports = Sortable$2.exports;
+
+ var __extends$8 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Cards, "__esModule", { value: true });
+ Component_Cards.ComponentCards = void 0;
+ var CE_1$8 = CE;
+ var TextHighlighter_1 = TextHighlighter;
+ var baseComponent_1$8 = baseComponent;
+ var Sortable$1 = SortableExports;
+ var ComponentCards = /** @class */ (function (_super) {
+ __extends$8(ComponentCards, _super);
+ function ComponentCards(options) {
+ var _a, _b;
+ var _this = _super.call(this) || this;
+ _this.entries = {};
+ _this.container = (0, CE_1$8.ce)('div', 'mux_cards');
+ if (options.onePerRow === true)
+ _this.container.classList.add('mux_cards-oneperrow');
+ if (options.dragable !== false)
+ _this.sortable = new Sortable$1(_this.container, {
+ ghostClass: 'mux_cards-item-dragging',
+ onStart: function () {
+ _this.container.classList.add('mux_cards-dragging');
+ },
+ onEnd: function (evt) {
+ _this.container.classList.remove('mux_cards-dragging');
+ _this.callEvent('orderUpdated', _this.getOrder());
+ },
+ });
+ _this.highlightText = (_a = options === null || options === void 0 ? void 0 : options.highlightText) !== null && _a !== void 0 ? _a : false;
+ _this.setItems((_b = options === null || options === void 0 ? void 0 : options.items) !== null && _b !== void 0 ? _b : []);
+ return _this;
+ }
+ ComponentCards.prototype.setItems = function (items) {
+ var _this = this;
+ this.container.innerHTML = '';
+ this.entries = {};
+ items.forEach(function (item) { return _this.addItem(item); });
+ };
+ ComponentCards.prototype.addItem = function (item) {
+ var _this = this;
+ var _a, _b;
+ var element = (0, CE_1$8.ce)(item.href != undefined ? 'a' : 'div', 'mux_cards-item', {
+ uid: item.uniqueIdentifier,
+ });
+ if (item.href != undefined)
+ element.href = item.href;
+ if (item.click != undefined)
+ element.onclick = function () { return item.click(); };
+ if (item.tooltip != undefined)
+ element.title = item.title;
+ if (item.enabled == false)
+ element.classList.add('mux_cards-item-disabled');
+ if (item.uniqueIdentifier != undefined)
+ this.entries[item.uniqueIdentifier] = element;
+ if (item.thumbnail != null) {
+ var thumbnailType = (_a = item.thumbnailType) !== null && _a !== void 0 ? _a : 'image';
+ if (thumbnailType == 'image') {
+ element.appendChild((0, CE_1$8.ce)('img', 'mux_cards-item-thumbnail', {
+ src: item.thumbnail,
+ }));
+ }
+ else if (thumbnailType == 'frame') {
+ var ratio = (_b = item.thumbnailWidthRatio) !== null && _b !== void 0 ? _b : 1;
+ var frame = (0, CE_1$8.ce)('iframe', 'mux_cards-item-thumbnail', {
+ scrolling: 'no',
+ src: item.thumbnail,
+ });
+ element.appendChild(frame);
+ var scaleClock = setInterval(function () {
+ if (element == null ||
+ element.parentElement == null ||
+ frame == null)
+ return clearInterval(scaleClock);
+ frame.style.width = "".concat(frame.clientHeight * ratio, "px");
+ }, 100);
+ }
+ }
+ var info = (0, CE_1$8.ce)('div', 'mux_cards-item-info');
+ info.appendChild(this.highlightText
+ ? (0, TextHighlighter_1.generateTextHighlights)(item.title, [
+ 'mux_header',
+ 'mux_small',
+ ])
+ : (0, CE_1$8.ce)('div', ['mux_header', 'mux_small'], null, item.title));
+ if (item.sublines != undefined && item.sublines.length > 0)
+ item.sublines.forEach(function (subline) {
+ if (subline != null)
+ info.appendChild(_this.highlightText
+ ? (0, TextHighlighter_1.generateTextHighlights)(subline, [
+ 'mux_text',
+ 'mux_small',
+ ])
+ : (0, CE_1$8.ce)('div', ['mux_text', 'mux_small'], null, subline));
+ });
+ element.appendChild(info);
+ if (item.actions != undefined && item.actions.length > 0) {
+ var buttons = (0, CE_1$8.ce)('div', 'mux_cards-item-buttons');
+ item.actions.forEach(function (action) {
+ var buttonelem = (0, CE_1$8.ce)(action.href != undefined ? 'a' : 'div', 'mux_cards-item-button');
+ if (action.href != undefined)
+ buttonelem.href = action.href;
+ if (action.click != undefined)
+ buttonelem.onclick = function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ action.click();
+ };
+ if (action.tooltip != undefined)
+ buttonelem.title = action.tooltip;
+ buttonelem.appendChild((0, CE_1$8.ce)('span', 'material-symbols-outlined', null, action.materialIcon));
+ buttons.appendChild(buttonelem);
+ });
+ element.appendChild(buttons);
+ }
+ this.container.appendChild(element);
+ };
+ ComponentCards.prototype.removeItem = function (uniqueIdentifier) {
+ if (this.entries[uniqueIdentifier] != undefined) {
+ this.entries[uniqueIdentifier].parentElement.removeChild(this.entries[uniqueIdentifier]);
+ delete this.entries[uniqueIdentifier];
+ }
+ };
+ ComponentCards.prototype.hasItem = function (uniqueIdentifier) {
+ return this.entries[uniqueIdentifier] != undefined;
+ };
+ ComponentCards.prototype.clear = function () {
+ this.container.innerHTML = '';
+ this.entries = {};
+ };
+ ComponentCards.prototype.updateItemTitle = function (uniqueIdentifier, newTitle) {
+ if (this.entries[uniqueIdentifier] == undefined)
+ return;
+ var existingHeader = this.entries[uniqueIdentifier].querySelector('.mux_header');
+ var container = existingHeader.parentElement;
+ container.insertBefore(this.highlightText
+ ? (0, TextHighlighter_1.generateTextHighlights)(newTitle, ['mux_header', 'mux_small'])
+ : (0, CE_1$8.ce)('div', ['mux_header', 'mux_small'], null, newTitle), existingHeader);
+ container.removeChild(existingHeader);
+ };
+ ComponentCards.prototype.updateSublines = function (uniqueIdentifier, newSublines) {
+ var _this = this;
+ if (this.entries[uniqueIdentifier] == undefined)
+ return;
+ var info = this.entries[uniqueIdentifier].querySelector('.mux_cards-item-info');
+ info.querySelectorAll('.mux_text.mux_small').forEach(function (existingSubline) {
+ return existingSubline.parentElement.removeChild(existingSubline);
+ });
+ if (newSublines != undefined && newSublines.length > 0)
+ newSublines.forEach(function (subline) {
+ info.appendChild(_this.highlightText
+ ? (0, TextHighlighter_1.generateTextHighlights)(subline, [
+ 'mux_text',
+ 'mux_small',
+ ])
+ : (0, CE_1$8.ce)('div', ['mux_text', 'mux_small'], null, subline));
+ });
+ };
+ ComponentCards.prototype.updateThumbnail = function (uniqueIdentifier, thumbnailSrc) {
+ if (this.entries[uniqueIdentifier] == undefined)
+ return;
+ var thumbnail = this.entries[uniqueIdentifier].querySelector('.mux_cards-item-thumbnail');
+ thumbnail.src = thumbnailSrc;
+ };
+ ComponentCards.prototype.getOrder = function () {
+ var order = [];
+ this.container
+ .querySelectorAll('.mux_cards-item')
+ .forEach(function (item) { return order.push(item.getAttribute('uid')); });
+ return order;
+ };
+ return ComponentCards;
+ }(baseComponent_1$8.MUXComponent));
+ Component_Cards.ComponentCards = ComponentCards;
+
+ var Component_ContextMenu = {};
+
+ var Morph_Keys = {};
+
+ var KeyBinderBase$1 = {};
+
+ var KeyBinderOverwrite$1 = {};
+
+ var __spreadArray$1 = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+ };
+ Object.defineProperty(KeyBinderOverwrite$1, "__esModule", { value: true });
+ KeyBinderOverwrite$1.KeyBinderOverwrite = void 0;
+ var KeyBinderOverwrite = /** @class */ (function () {
+ function KeyBinderOverwrite(id, KeyBinder) {
+ this.binds = {};
+ this.id = id;
+ this._KeyBinder = KeyBinder;
+ }
+ KeyBinderOverwrite.prototype.log = function () {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (window.location.search.includes('debug'))
+ console.log.apply(console, __spreadArray$1(['[KeyBinder]'], args, false));
+ };
+ KeyBinderOverwrite.prototype.close = function () {
+ this._KeyBinder.closeOverwrite(this.id);
+ };
+ KeyBinderOverwrite.prototype.bind = function (key, callback, settings) {
+ if (settings == undefined)
+ settings = {};
+ var query = this._KeyBinder.createKeyQuery(key, settings.controlKey, settings.shiftKey, settings.altKey);
+ if (this.binds[query] != undefined)
+ return this.log("Unable to bind key query '".concat(query, "' in overwrite because it already has a bind"));
+ if ((settings === null || settings === void 0 ? void 0 : settings.disableInElementsWithTags) != undefined)
+ settings.disableInElementsWithTags =
+ settings.disableInElementsWithTags.map(function (tagname) {
+ return tagname.toUpperCase();
+ });
+ this.binds[query] = { callback: callback, key: key, settings: settings };
+ };
+ return KeyBinderOverwrite;
+ }());
+ KeyBinderOverwrite$1.KeyBinderOverwrite = KeyBinderOverwrite;
+
+ var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+ };
+ Object.defineProperty(KeyBinderBase$1, "__esModule", { value: true });
+ KeyBinderBase$1.KeyBinderBase = void 0;
+ var KeyBinderOverwrite_1 = KeyBinderOverwrite$1;
+ var KeyBinderBase = /** @class */ (function () {
+ function KeyBinderBase() {
+ this.binds = {};
+ this.overwrites = [];
+ this.log('Preparing KeyBinder');
+ this.registerListeners();
+ }
+ KeyBinderBase.prototype.log = function () {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (window.location.search.includes('debug'))
+ console.log.apply(console, __spreadArray(['[KeyBinder]'], args, false));
+ };
+ KeyBinderBase.prototype.multiBind = function (keys, callback, settings) {
+ for (var i = 0; i < keys.length; i++)
+ this.bind(keys[i], callback, settings);
+ };
+ KeyBinderBase.prototype.bind = function (key, callback, settings) {
+ if (settings == undefined)
+ settings = {};
+ var query = this.createKeyQuery(key, settings.controlKey, settings.shiftKey, settings.altKey);
+ if (this.binds[query] != undefined)
+ return this.log("Unable to bind key query '".concat(query, "' because it already has a bind"));
+ if ((settings === null || settings === void 0 ? void 0 : settings.disableInElementsWithTags) != undefined)
+ settings.disableInElementsWithTags =
+ settings.disableInElementsWithTags.map(function (tagname) {
+ return tagname.toUpperCase();
+ });
+ this.binds[query] = { callback: callback, key: key, settings: settings };
+ };
+ KeyBinderBase.prototype.unbind = function (key, settings) {
+ if (settings == undefined)
+ settings = {};
+ var query = this.createKeyQuery(key, settings.controlKey, settings.shiftKey, settings.altKey);
+ if (this.binds[query] == undefined)
+ return this.log("Unable to unbind key query '".concat(query, "' because it has no bind"));
+ };
+ KeyBinderBase.prototype.createOverwrite = function () {
+ var id = this.generateOverwriteId();
+ var overwrite = new KeyBinderOverwrite_1.KeyBinderOverwrite(id, this);
+ this.overwrites.push(overwrite);
+ this.log("Overwrite with id '".concat(id, "' was created"));
+ return overwrite;
+ };
+ KeyBinderBase.prototype.closeOverwrite = function (id) {
+ for (var i = 0; i < this.overwrites.length; i++)
+ if (this.overwrites[i].id == id) {
+ this.overwrites.splice(i, 1);
+ this.log("Overwrite with id '".concat(id, "' was closed"));
+ return;
+ }
+ };
+ KeyBinderBase.prototype.createKeyQuery = function (key, ctrlKey, shiftKey, altKey) {
+ if (ctrlKey === void 0) { ctrlKey = false; }
+ if (shiftKey === void 0) { shiftKey = false; }
+ if (altKey === void 0) { altKey = false; }
+ var queryParts = [key.toLowerCase()];
+ if (ctrlKey)
+ queryParts.push('ctrl');
+ if (shiftKey)
+ queryParts.push('shft');
+ if (altKey)
+ queryParts.push('alt');
+ return queryParts.join(':');
+ };
+ KeyBinderBase.prototype.getAllBinds = function () {
+ return Array.from(new Set(this.overwrites
+ .map(function (overwrite) { return Object.keys(overwrite.binds); })
+ .concat(Object.keys(this.binds))
+ .flat()));
+ };
+ KeyBinderBase.prototype.getBindsOverview = function () {
+ return Object.values(this.binds).map(function (_a) {
+ var key = _a.key, settings = _a.settings;
+ var combo = [];
+ if (settings === null || settings === void 0 ? void 0 : settings.controlKey)
+ combo.push('Ctrl');
+ if (settings === null || settings === void 0 ? void 0 : settings.shiftKey)
+ combo.push('Shift');
+ if (settings === null || settings === void 0 ? void 0 : settings.altKey)
+ combo.push('Alt');
+ combo.push(key.length < 3 ? key.toUpperCase() : key);
+ return [combo.join('+'), settings === null || settings === void 0 ? void 0 : settings.name];
+ });
+ };
+ KeyBinderBase.prototype.generateOverwriteId = function () {
+ while (true) {
+ var id = (Math.random() + 1).toString(36).substring(7);
+ if (!this.overwriteIdExists(id))
+ return id;
+ }
+ };
+ KeyBinderBase.prototype.overwriteIdExists = function (id) {
+ for (var i = 0; i < this.overwrites.length; i++)
+ if (this.overwrites[i].id == id)
+ return true;
+ return false;
+ };
+ KeyBinderBase.prototype.registerListeners = function () {
+ var _this = this;
+ window.addEventListener('keydown', function (e) {
+ var _a;
+ var query = _this.createKeyQuery(e.key, e.ctrlKey || e.metaKey, e.shiftKey, e.altKey);
+ if (window.location.search.includes('keydebug'))
+ _this.log("Got keypress: ".concat(query));
+ var binds = _this.binds;
+ if (_this.overwrites.length > 0) {
+ binds = _this.overwrites[_this.overwrites.length - 1].binds;
+ }
+ if (binds[query] == undefined)
+ return;
+ var bind = binds[query];
+ if (((_a = bind === null || bind === void 0 ? void 0 : bind.settings) === null || _a === void 0 ? void 0 : _a.disableInElementsWithTags) != undefined &&
+ bind.settings.disableInElementsWithTags.includes(document.activeElement.tagName))
+ return;
+ e.preventDefault();
+ bind.callback();
+ });
+ };
+ return KeyBinderBase;
+ }());
+ KeyBinderBase$1.KeyBinderBase = KeyBinderBase;
+
+ Object.defineProperty(Morph_Keys, "__esModule", { value: true });
+ Morph_Keys.MorphKey = void 0;
+ var KeyBinderBase_1 = KeyBinderBase$1;
+ Morph_Keys.MorphKey = new KeyBinderBase_1.KeyBinderBase();
+
+ var __extends$7 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_ContextMenu, "__esModule", { value: true });
+ Component_ContextMenu.ComponentContextMenu = void 0;
+ var Morph_Keys_1 = Morph_Keys;
+ var CE_1$7 = CE;
+ var baseComponent_1$7 = baseComponent;
+ var ComponentContextMenu = /** @class */ (function (_super) {
+ __extends$7(ComponentContextMenu, _super);
+ function ComponentContextMenu(options) {
+ var _a, _b;
+ var _this = _super.call(this) || this;
+ _this.open = true;
+ _this.container = (0, CE_1$7.ce)('div', 'mux_contextmenu');
+ if ((options === null || options === void 0 ? void 0 : options.width) != undefined) {
+ _this.container.style.minWidth = "".concat(options.width, "px");
+ _this.container.style.width = "".concat(options.width, "px");
+ }
+ var align = (_a = options === null || options === void 0 ? void 0 : options.align) !== null && _a !== void 0 ? _a : 'center';
+ if ((options === null || options === void 0 ? void 0 : options.materialIconColor) != undefined)
+ _this.container.style.setProperty('--mux-contextmenu-iconcolor', options.materialIconColor);
+ _this.setItems((_b = options === null || options === void 0 ? void 0 : options.items) !== null && _b !== void 0 ? _b : [], options === null || options === void 0 ? void 0 : options.selected);
+ var parentContainer = document.body;
+ parentContainer.appendChild(_this.container);
+ _this.container.style.top = "".concat(options.y - parentContainer.getBoundingClientRect().top, "px");
+ var left = options.x;
+ var maxLeft = document.body.clientWidth - _this.container.clientWidth - 20;
+ var minLeft = 10;
+ if (align == 'center') {
+ left -= _this.container.clientWidth / 2;
+ _this.container.style.transformOrigin = 'top center';
+ }
+ else if (align == 'left') {
+ _this.container.style.transformOrigin = 'top left';
+ }
+ else if (align == 'right') {
+ left -= _this.container.clientWidth;
+ _this.container.style.transformOrigin = 'top right';
+ }
+ left = Math.min(left, maxLeft);
+ left = Math.max(left, minLeft);
+ var maxHeight = document.body.clientHeight - options.y - 20;
+ _this.container.style.left = "".concat(left, "px");
+ _this.container.style.transitionDuration = '.2s';
+ _this.container.style.transform = 'scale(1)';
+ _this.container.style.opacity = '1';
+ _this.container.style.maxHeight = "".concat(maxHeight, "px");
+ if ((options === null || options === void 0 ? void 0 : options.highlightedItem) != undefined &&
+ _this.container.querySelector("[uid=\"".concat(options.highlightedItem, "\"]")) != null) {
+ var selected = _this.container.querySelector("[uid=\"".concat(options.highlightedItem, "\"]"));
+ selected.classList.add('mux_contextmenu-item-selected');
+ setTimeout(function () {
+ selected.scrollIntoView();
+ }, 100);
+ }
+ if ((options === null || options === void 0 ? void 0 : options.selected) != undefined &&
+ _this.container.querySelector("[uid=\"".concat(options.selected, "\"]")) != null) {
+ var selected = _this.container.querySelector("[uid=\"".concat(options.selected, "\"]"));
+ setTimeout(function () {
+ selected.scrollIntoView({
+ block: 'center',
+ inline: 'center',
+ });
+ }, 100);
+ }
+ var delay = function (duration, callback) {
+ setTimeout(function () {
+ callback();
+ }, duration);
+ };
+ _this.handleClick = function (e) {
+ var _a, _b;
+ if (e.target == undefined)
+ return delay(100, function () { return _this.close('outside'); });
+ var target = e.target;
+ if (target.classList.length == 0)
+ return delay(100, function () { return _this.close('outsideclick'); });
+ if (!target.classList[0].startsWith('mux_contextmenu') &&
+ !((_b = (_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.classList[0]) === null || _b === void 0 ? void 0 : _b.startsWith('mux_contextmenu')))
+ return delay(100, function () { return _this.close('outsideparentclick'); });
+ };
+ setTimeout(function () {
+ window.addEventListener('click', _this.handleClick);
+ window.addEventListener('mousedown', _this.handleClick);
+ window.addEventListener('touchstart', _this.handleClick);
+ }, 100);
+ _this.overwrite = Morph_Keys_1.MorphKey.createOverwrite();
+ if ((options === null || options === void 0 ? void 0 : options.highlightedItem) == undefined) {
+ _this.overwrite.bind('ArrowUp', function () {
+ var selected = _this.container.querySelector('.mux_contextmenu-item-selected');
+ if (selected == null) {
+ var elements = _this.container.querySelectorAll('.mux_contextmenu-item');
+ if (elements.length > 0) {
+ var first = elements[elements.length - 1];
+ first.classList.add('mux_contextmenu-item-selected');
+ first.scrollIntoView();
+ }
+ }
+ else {
+ var previous = selected.previousElementSibling;
+ if (previous != null) {
+ selected.classList.remove('mux_contextmenu-item-selected');
+ previous.classList.add('mux_contextmenu-item-selected');
+ previous.scrollIntoView();
+ }
+ }
+ });
+ _this.overwrite.bind('ArrowDown', function () {
+ var selected = _this.container.querySelector('.mux_contextmenu-item-selected');
+ if (selected == null) {
+ var elements = _this.container.querySelectorAll('.mux_contextmenu-item');
+ if (elements.length > 0) {
+ var first = elements[0];
+ first.classList.add('mux_contextmenu-item-selected');
+ first.scrollIntoView();
+ }
+ }
+ else {
+ var next = selected.nextElementSibling;
+ if (next != null) {
+ selected.classList.remove('mux_contextmenu-item-selected');
+ next.classList.add('mux_contextmenu-item-selected');
+ next.scrollIntoView();
+ }
+ }
+ });
+ }
+ _this.overwrite.bind('Enter', function () {
+ var selected = _this.container.querySelector('.mux_contextmenu-item-selected');
+ if (selected != null) {
+ selected.click();
+ }
+ });
+ _this.overwrite.bind('Escape', function () {
+ _this.close('escape');
+ });
+ return _this;
+ }
+ ComponentContextMenu.prototype.close = function (origin, byClick) {
+ var _this = this;
+ if (origin === void 0) { origin = 'integrator?'; }
+ if (byClick === void 0) { byClick = false; }
+ this.overwrite.close();
+ this.open = false;
+ this.killSubContexts();
+ window.removeEventListener('click', this.handleClick);
+ window.removeEventListener('mousedown', this.handleClick);
+ window.removeEventListener('touchstart', this.handleClick);
+ this.callEvent('close', byClick, origin);
+ this.container.style.transform = 'scale(0)';
+ this.container.style.opacity = '0';
+ setTimeout(function () {
+ _this.destroy();
+ }, 200);
+ };
+ ComponentContextMenu.prototype.enable = function (uniqueIdentifier) {
+ if (this.container.querySelector("[uid=\"".concat(uniqueIdentifier, "\"]"))) {
+ var element = this.container.querySelector("[uid=\"".concat(uniqueIdentifier, "\"]"));
+ element.classList.remove('mux_contextmenu-item-disabled');
+ }
+ };
+ ComponentContextMenu.prototype.disable = function (uniqueIdentifier) {
+ if (this.container.querySelector("[uid=\"".concat(uniqueIdentifier, "\"]"))) {
+ var element = this.container.querySelector("[uid=\"".concat(uniqueIdentifier, "\"]"));
+ element.classList.add('mux_contextmenu-item-disabled');
+ }
+ };
+ ComponentContextMenu.prototype.isOpen = function () {
+ return this.open;
+ };
+ ComponentContextMenu.prototype.setItems = function (items, selectedId) {
+ var _this = this;
+ this.container.innerHTML = '';
+ items.forEach(function (item) {
+ return _this.addItem(item, selectedId != null && selectedId == item.uniqueIdentifier);
+ });
+ };
+ ComponentContextMenu.prototype.addItem = function (item, selected) {
+ var _this = this;
+ var _a, _b, _c;
+ if (selected === void 0) { selected = false; }
+ switch (item.type) {
+ case 'separator':
+ var separator = (0, CE_1$7.ce)('div', 'mux_contextmenu-separator');
+ if (item.text != undefined && item.text.trim().length > 0)
+ separator.appendChild((0, CE_1$7.ce)('span', null, null, item.text));
+ this.container.appendChild(separator);
+ break;
+ case 'normal':
+ var element = (0, CE_1$7.ce)(item.href != undefined ? 'a' : 'div', 'mux_contextmenu-item');
+ if (selected)
+ element.classList.add('mux_contextmenu-item-selected');
+ var itemId = (_a = item.uniqueIdentifier) !== null && _a !== void 0 ? _a : (Math.random() + 1).toString(36).substring(7);
+ if (item.href != undefined)
+ element.setAttribute('href', item.href);
+ if (item.tooltip != undefined)
+ element.title = item.tooltip;
+ if (item.uniqueIdentifier != undefined) {
+ element.setAttribute('uid', item.uniqueIdentifier);
+ }
+ if (item.enabled == false)
+ element.classList.add('mux_contextmenu-item-disabled');
+ var textContent = (0, CE_1$7.ce)('div', 'mux_contextmenu-item-content');
+ element.appendChild(textContent);
+ var itemContent = (0, CE_1$7.ce)('div', ['mux_text', 'mux_small'], null, (_b = item.text) !== null && _b !== void 0 ? _b : '');
+ if (item.customFontSize != undefined)
+ itemContent.style.fontSize = "".concat(item.customFontSize, "px");
+ textContent.appendChild(itemContent);
+ if (item.children == undefined && item.shortcut != undefined)
+ textContent.appendChild((0, CE_1$7.ce)('div', [
+ 'mux_contextmenu-shortcut',
+ 'mux_text',
+ 'mux_tiny',
+ ], null, (_c = item.shortcut) !== null && _c !== void 0 ? _c : ''));
+ if (item.children != undefined && item.children.length > 0) {
+ textContent.appendChild((0, CE_1$7.ce)('span', [
+ 'material-symbols-outlined',
+ 'mux_contextmenu-item-arrow',
+ ], null, 'keyboard_arrow_right'));
+ }
+ if (item.materialIcon != undefined) {
+ var materialIcon = (0, CE_1$7.ce)('span', [
+ 'mux_contextmenu-item-materialicon',
+ 'material-symbols-outlined',
+ ], null, item.materialIcon);
+ if (item.materialIconTransform != undefined)
+ materialIcon.style.transform =
+ item.materialIconTransform;
+ element.appendChild(materialIcon);
+ }
+ else if (item.icon != undefined)
+ element.appendChild((0, CE_1$7.ce)('img', 'mux_contextmenu-item-icon', {
+ src: item.icon,
+ }));
+ element.onmousemove = function () {
+ if (_this.subContextParent == itemId)
+ return;
+ _this.killSubContexts();
+ if (item.children != undefined &&
+ item.children.length > 0) {
+ var bounds = element.getBoundingClientRect();
+ _this.subContextParent = itemId;
+ _this.subContext = new ComponentContextMenu({
+ items: item.children,
+ x: bounds.x + bounds.width + 1,
+ y: bounds.y,
+ align: 'left',
+ });
+ _this.subContext.on('close', function (byClick) {
+ if (byClick)
+ _this.close('parentkillchildhover', true);
+ });
+ }
+ };
+ if (item.click != undefined && item.href == undefined) {
+ element.onclick = function () {
+ if (item.stayOpenOnClick != true) {
+ _this.close('itemclick', true);
+ _this.killSubContexts();
+ }
+ item.click();
+ };
+ }
+ this.container.appendChild(element);
+ break;
+ }
+ };
+ ComponentContextMenu.prototype.killSubContexts = function () {
+ if (this.subContext != null) {
+ this.subContext.close('parentkillchild');
+ this.subContext = null;
+ }
+ this.subContextParent = null;
+ };
+ return ComponentContextMenu;
+ }(baseComponent_1$7.MUXComponent));
+ Component_ContextMenu.ComponentContextMenu = ComponentContextMenu;
+
+ var Component_Dialog = {};
+
+ var hasRequiredComponent_Dialog;
+
+ function requireComponent_Dialog () {
+ if (hasRequiredComponent_Dialog) return Component_Dialog;
+ hasRequiredComponent_Dialog = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Dialog, "__esModule", { value: true });
+ Component_Dialog.ComponentDialog = void 0;
+ var Index_1 = requireIndex();
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var ComponentDialog = /** @class */ (function (_super) {
+ __extends(ComponentDialog, _super);
+ function ComponentDialog(options) {
+ var _a, _b, _c, _d, _e, _f, _g, _h;
+ var _this = _super.call(this) || this;
+ var width = (_a = options === null || options === void 0 ? void 0 : options.width) !== null && _a !== void 0 ? _a : 'small';
+ var height = (_b = options === null || options === void 0 ? void 0 : options.height) !== null && _b !== void 0 ? _b : 'auto';
+ _this.container = (0, CE_1.ce)('div', 'mux_dialogcontainer');
+ _this.dialog = (0, CE_1.ce)('div', 'mux_dialog');
+ _this.dialog.classList.add("mux_w-".concat(width), "mux_h-".concat(height));
+ var openDialogs = document.querySelectorAll(".mux_dialog.mux_w-".concat(width, ".mux_h-").concat(height)).length;
+ _this.dialog.style.marginLeft = "".concat(openDialogs * 30, "px");
+ _this.dialog.style.marginTop = "".concat(openDialogs * 30, "px");
+ _this.container.append(_this.dialog);
+ var titlebar = (0, CE_1.ce)('div', 'mux_dialog-titlebar');
+ titlebar.appendChild((0, CE_1.ce)('div', ['mux_dialog-title', 'mux_header'], null, options.title));
+ var titlesettings = (0, CE_1.ce)('div', 'mux_dialog-titlesettings');
+ titlebar.appendChild(titlesettings);
+ _this.titlebar = titlesettings;
+ if ((options === null || options === void 0 ? void 0 : options.closeable) !== false) {
+ var close = (0, CE_1.ce)('div', 'mux_dialog-close');
+ close.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'close'));
+ close.onclick = function () {
+ _this.callEvent('close', new CloseEvent(_this));
+ };
+ titlebar.appendChild(close);
+ }
+ _this.dialog.appendChild(titlebar);
+ _this.content = (0, CE_1.ce)('div', 'mux_dialog-content');
+ _this.dialog.appendChild(_this.content);
+ var okButtonVisible = (_c = options === null || options === void 0 ? void 0 : options.okButtonVisible) !== null && _c !== void 0 ? _c : true;
+ var cancelButtonVisible = (_d = options === null || options === void 0 ? void 0 : options.cancelButtonVisible) !== null && _d !== void 0 ? _d : true;
+ if (okButtonVisible || cancelButtonVisible) {
+ var actionbar = (0, CE_1.ce)('div', 'mux_dialog-actionbar');
+ var buttons = (0, CE_1.ce)('div', 'mux_dialog-buttons');
+ if (cancelButtonVisible) {
+ var cancelButtonEnabled = (_e = options === null || options === void 0 ? void 0 : options.cancelButtonEnabled) !== null && _e !== void 0 ? _e : true;
+ _this.cancelButton = new Index_1.MorphComponent.Button({
+ content: (_f = options === null || options === void 0 ? void 0 : options.cancelButtonText) !== null && _f !== void 0 ? _f : 'Cancel',
+ mode: cancelButtonEnabled ? 'normal' : 'disabled',
+ target: function () {
+ _this.callEvent('cancel', new CloseEvent(_this));
+ },
+ });
+ buttons.appendChild(_this.cancelButton.container);
+ }
+ if (okButtonVisible) {
+ var okButtonEnabled = (_g = options === null || options === void 0 ? void 0 : options.okButtonEnabled) !== null && _g !== void 0 ? _g : true;
+ _this.okButton = new Index_1.MorphComponent.Button({
+ content: (_h = options === null || options === void 0 ? void 0 : options.okButtonText) !== null && _h !== void 0 ? _h : 'OK',
+ mode: okButtonEnabled ? 'highlight' : 'disabled',
+ target: function () {
+ _this.callEvent('ok', new CloseEvent(_this));
+ },
+ });
+ buttons.appendChild(_this.okButton.container);
+ }
+ actionbar.appendChild(buttons);
+ _this.dialog.appendChild(actionbar);
+ }
+ else
+ _this.content.classList.add('mux_dialog-content-nobuttons');
+ document.body.appendChild(_this.container);
+ setTimeout(function () {
+ _this.container.style.opacity = '1';
+ _this.dialog.style.opacity = '1';
+ _this.dialog.style.transform = 'scale(1)';
+ }, 20);
+ _this.keyOverwrite = Index_1.MorphKey.createOverwrite();
+ _this.keyOverwrite.bind('Escape', function () {
+ _this.callEvent('cancel', new CloseEvent(_this));
+ });
+ _this.keyOverwrite.bind('Enter', function () {
+ _this.callEvent('ok', new CloseEvent(_this));
+ });
+ return _this;
+ }
+ ComponentDialog.prototype.close = function () {
+ var _this = this;
+ this.dialog.style.transitionTimingFunction = 'ease-out';
+ this.dialog.style.transform = 'scale(0.8)';
+ this.dialog.style.opacity = '0';
+ this.container.style.opacity = '0';
+ this.container.style.pointerEvents = 'none';
+ this.keyOverwrite.close();
+ setTimeout(function () {
+ _this.destroy();
+ }, 200);
+ };
+ ComponentDialog.prototype.setOkButtonMode = function (mode) {
+ this.okButton.updateMode(mode);
+ };
+ ComponentDialog.prototype.setCancelButtonMode = function (mode) {
+ this.cancelButton.updateMode(mode);
+ };
+ return ComponentDialog;
+ }(baseComponent_1.MUXComponent));
+ Component_Dialog.ComponentDialog = ComponentDialog;
+ var CloseEvent = /** @class */ (function () {
+ function DialogCloseEvent(origin) {
+ var _this = this;
+ this.origin = origin;
+ this.autoCloseInterval = setTimeout(function () {
+ _this.close();
+ }, 50);
+ }
+ DialogCloseEvent.prototype.preventClose = function () {
+ clearInterval(this.autoCloseInterval);
+ };
+ DialogCloseEvent.prototype.close = function () {
+ clearInterval(this.autoCloseInterval);
+ this.origin.close();
+ };
+ return DialogCloseEvent;
+ }());
+
+ return Component_Dialog;
+ }
+
+ var Component_Group = {};
+
+ var __extends$6 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Group, "__esModule", { value: true });
+ Component_Group.ComponentGroup = void 0;
+ var CE_1$6 = CE;
+ var baseComponent_1$6 = baseComponent;
+ var ComponentGroup = /** @class */ (function (_super) {
+ __extends$6(ComponentGroup, _super);
+ function ComponentGroup(options) {
+ var _a, _b, _c;
+ var _this = _super.call(this) || this;
+ _this.container = (0, CE_1$6.ce)('div', ['mux_group', 'mux_group-open']);
+ var closeable = (_a = options === null || options === void 0 ? void 0 : options.closeable) !== null && _a !== void 0 ? _a : false;
+ if ((options === null || options === void 0 ? void 0 : options.open) == false && closeable) {
+ _this.container.classList.remove('mux_group-open');
+ }
+ var header = (0, CE_1$6.ce)('div', 'mux_group-header');
+ if ((options === null || options === void 0 ? void 0 : options.materialIcon) != undefined)
+ header.appendChild((0, CE_1$6.ce)('span', 'material-symbols-outlined', null, options.materialIcon));
+ _this.title = (0, CE_1$6.ce)('div', ['mux_header', 'mux_small'], null, (_b = options === null || options === void 0 ? void 0 : options.title) !== null && _b !== void 0 ? _b : '');
+ _this.subTitle = (0, CE_1$6.ce)('div', ['mux_text', 'mux_small'], null, (_c = options === null || options === void 0 ? void 0 : options.subTitle) !== null && _c !== void 0 ? _c : '');
+ header.append(_this.title, _this.subTitle);
+ if ((options === null || options === void 0 ? void 0 : options.actions) != undefined && options.actions.length > 0) {
+ var actions = (0, CE_1$6.ce)('div', 'mux_group-actions');
+ options.actions.forEach(function (action) {
+ var element = (0, CE_1$6.ce)('div', 'mux_group-iconbutton');
+ element.appendChild((0, CE_1$6.ce)('span', 'material-symbols-outlined', null, action.materialIcon));
+ element.onclick = function (e) {
+ e.stopPropagation();
+ action.click();
+ };
+ actions.appendChild(element);
+ });
+ header.appendChild(actions);
+ }
+ if (closeable) {
+ var foldIcon = (0, CE_1$6.ce)('span', ['material-symbols-outlined', 'mux_group-fold'], null, 'keyboard_arrow_right');
+ header.appendChild(foldIcon);
+ header.onclick = function () {
+ if (_this.container.classList.contains('mux_group-open'))
+ _this.container.classList.remove('mux_group-open');
+ else
+ _this.container.classList.add('mux_group-open');
+ _this.callEvent('openState', _this.container.classList.contains('mux_group-open'));
+ };
+ }
+ _this.container.appendChild(header);
+ _this.content = (0, CE_1$6.ce)('div', 'mux_group-content');
+ var contentwrapper = (0, CE_1$6.ce)('div', 'mux_group-contentwrapper');
+ contentwrapper.appendChild(_this.content);
+ _this.container.appendChild(contentwrapper);
+ return _this;
+ }
+ ComponentGroup.prototype.setTitle = function (title) {
+ this.title.innerText = title !== null && title !== void 0 ? title : '';
+ };
+ ComponentGroup.prototype.setSubTitle = function (subTitle) {
+ this.subTitle.innerText = subTitle !== null && subTitle !== void 0 ? subTitle : '';
+ };
+ return ComponentGroup;
+ }(baseComponent_1$6.MUXComponent));
+ Component_Group.ComponentGroup = ComponentGroup;
+
+ var Component_Header = {};
+
+ var __extends$5 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Header, "__esModule", { value: true });
+ Component_Header.ComponentHeader = void 0;
+ var CE_1$5 = CE;
+ var baseComponent_1$5 = baseComponent;
+ var ComponentHeader = /** @class */ (function (_super) {
+ __extends$5(ComponentHeader, _super);
+ function ComponentHeader(options) {
+ var _a;
+ var _this = _super.call(this) || this;
+ var size = (_a = options === null || options === void 0 ? void 0 : options.size) !== null && _a !== void 0 ? _a : 'normal';
+ _this.container = (0, CE_1$5.ce)('div', ['mux_header', "mux_".concat(size)], null, options === null || options === void 0 ? void 0 : options.content);
+ return _this;
+ }
+ ComponentHeader.prototype.update = function (content) {
+ this.container.innerHTML = content;
+ };
+ return ComponentHeader;
+ }(baseComponent_1$5.MUXComponent));
+ Component_Header.ComponentHeader = ComponentHeader;
+
+ var Component_IconGrid = {};
+
+ var __extends$4 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_IconGrid, "__esModule", { value: true });
+ Component_IconGrid.ComponentIconGrid = void 0;
+ var CE_1$4 = CE;
+ var baseComponent_1$4 = baseComponent;
+ var Sortable = SortableExports;
+ var ComponentIconGrid = /** @class */ (function (_super) {
+ __extends$4(ComponentIconGrid, _super);
+ function ComponentIconGrid(options) {
+ var _a;
+ var _this = _super.call(this) || this;
+ _this.container = (0, CE_1$4.ce)('div', 'mux_icongrid');
+ if ((options === null || options === void 0 ? void 0 : options.sortable) === true) {
+ _this.sortable = new Sortable(_this.container, {
+ ghostClass: 'mux_icongrid-item-dragging',
+ onStart: function () {
+ _this.container.classList.add('mux_icongrid-dragging');
+ },
+ onEnd: function (evt) {
+ _this.container.classList.remove('mux_icongrid-dragging');
+ _this.callEvent('orderUpdated', _this.getOrder());
+ },
+ });
+ }
+ _this.setItems((_a = options === null || options === void 0 ? void 0 : options.items) !== null && _a !== void 0 ? _a : []);
+ return _this;
+ }
+ ComponentIconGrid.prototype.setItems = function (items) {
+ var _this = this;
+ this.container.innerHTML = '';
+ items.forEach(function (item) { return _this.addItem(item); });
+ };
+ ComponentIconGrid.prototype.addItem = function (item) {
+ var element = (0, CE_1$4.ce)('div', 'mux_icongrid-item');
+ if (item.uniqueIdentifier != undefined)
+ element.setAttribute('uid', item.uniqueIdentifier);
+ if (!item.enabled)
+ element.classList.add('mux_icongrid-item-disabled');
+ if (item.click != undefined)
+ element.onclick = item.click;
+ if (item.materialIcon != undefined)
+ element.appendChild((0, CE_1$4.ce)('span', ['mux_icongrid-item-icon', 'material-symbols-outline'], null, item.materialIcon));
+ else if (item.icon != undefined)
+ element.appendChild((0, CE_1$4.ce)('img', 'mux_icongrid-item-icon', { src: item.icon }));
+ element.appendChild((0, CE_1$4.ce)('div', ['mux_text', 'mux_small'], null, item.text));
+ this.container.appendChild(element);
+ };
+ ComponentIconGrid.prototype.getOrder = function () {
+ return Array.from(this.container.querySelectorAll('.mux_icongrid-item')).map(function (item) { return item.getAttribute('uid'); });
+ };
+ ComponentIconGrid.prototype.enable = function (uniqueIdentifier) {
+ var item = this.container.querySelector("[uid=\"".concat(uniqueIdentifier, "\"]"));
+ if (item != undefined)
+ item.classList.remove('mux_icongrid-item-disabled');
+ };
+ ComponentIconGrid.prototype.disable = function (uniqueIdentifier) {
+ var item = this.container.querySelector("[uid=\"".concat(uniqueIdentifier, "\"]"));
+ if (item != undefined)
+ item.classList.add('mux_icongrid-item-disabled');
+ };
+ return ComponentIconGrid;
+ }(baseComponent_1$4.MUXComponent));
+ Component_IconGrid.ComponentIconGrid = ComponentIconGrid;
+
+ var Component_ImageViewer = {};
+
+ /*! Hammer.JS - v2.0.17-rc - 2019-12-16
+ * http://naver.github.io/egjs
+ *
+ * Forked By Naver egjs
+ * Copyright (c) hammerjs
+ * Licensed under the MIT license */
+ function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+
+ function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ subClass.__proto__ = superClass;
+ }
+
+ function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+ }
+
+ /**
+ * @private
+ * extend object.
+ * means that properties in dest will be overwritten by the ones in src.
+ * @param {Object} target
+ * @param {...Object} objects_to_assign
+ * @returns {Object} target
+ */
+ var assign;
+
+ if (typeof Object.assign !== 'function') {
+ assign = function assign(target) {
+ if (target === undefined || target === null) {
+ throw new TypeError('Cannot convert undefined or null to object');
+ }
+
+ var output = Object(target);
+
+ for (var index = 1; index < arguments.length; index++) {
+ var source = arguments[index];
+
+ if (source !== undefined && source !== null) {
+ for (var nextKey in source) {
+ if (source.hasOwnProperty(nextKey)) {
+ output[nextKey] = source[nextKey];
+ }
+ }
+ }
+ }
+
+ return output;
+ };
+ } else {
+ assign = Object.assign;
+ }
+
+ var assign$1 = assign;
+
+ var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];
+ var TEST_ELEMENT = typeof document === "undefined" ? {
+ style: {}
+ } : document.createElement('div');
+ var TYPE_FUNCTION = 'function';
+ var round = Math.round,
+ abs = Math.abs;
+ var now = Date.now;
+
+ /**
+ * @private
+ * get the prefixed property
+ * @param {Object} obj
+ * @param {String} property
+ * @returns {String|Undefined} prefixed
+ */
+
+ function prefixed(obj, property) {
+ var prefix;
+ var prop;
+ var camelProp = property[0].toUpperCase() + property.slice(1);
+ var i = 0;
+
+ while (i < VENDOR_PREFIXES.length) {
+ prefix = VENDOR_PREFIXES[i];
+ prop = prefix ? prefix + camelProp : property;
+
+ if (prop in obj) {
+ return prop;
+ }
+
+ i++;
+ }
+
+ return undefined;
+ }
+
+ /* eslint-disable no-new-func, no-nested-ternary */
+ var win;
+
+ if (typeof window === "undefined") {
+ // window is undefined in node.js
+ win = {};
+ } else {
+ win = window;
+ }
+
+ var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');
+ var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;
+ function getTouchActionProps() {
+ if (!NATIVE_TOUCH_ACTION) {
+ return false;
+ }
+
+ var touchMap = {};
+ var cssSupports = win.CSS && win.CSS.supports;
+ ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {
+ // If css.supports is not supported but there is native touch-action assume it supports
+ // all values. This is the case for IE 10 and 11.
+ return touchMap[val] = cssSupports ? win.CSS.supports('touch-action', val) : true;
+ });
+ return touchMap;
+ }
+
+ var TOUCH_ACTION_COMPUTE = 'compute';
+ var TOUCH_ACTION_AUTO = 'auto';
+ var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented
+
+ var TOUCH_ACTION_NONE = 'none';
+ var TOUCH_ACTION_PAN_X = 'pan-x';
+ var TOUCH_ACTION_PAN_Y = 'pan-y';
+ var TOUCH_ACTION_MAP = getTouchActionProps();
+
+ var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;
+ var SUPPORT_TOUCH = 'ontouchstart' in win;
+ var SUPPORT_POINTER_EVENTS = prefixed(win, 'PointerEvent') !== undefined;
+ var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);
+ var INPUT_TYPE_TOUCH = 'touch';
+ var INPUT_TYPE_PEN = 'pen';
+ var INPUT_TYPE_MOUSE = 'mouse';
+ var INPUT_TYPE_KINECT = 'kinect';
+ var COMPUTE_INTERVAL = 25;
+ var INPUT_START = 1;
+ var INPUT_MOVE = 2;
+ var INPUT_END = 4;
+ var INPUT_CANCEL = 8;
+ var DIRECTION_NONE = 1;
+ var DIRECTION_LEFT = 2;
+ var DIRECTION_RIGHT = 4;
+ var DIRECTION_UP = 8;
+ var DIRECTION_DOWN = 16;
+ var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;
+ var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;
+ var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;
+ var PROPS_XY = ['x', 'y'];
+ var PROPS_CLIENT_XY = ['clientX', 'clientY'];
+
+ /**
+ * @private
+ * walk objects and arrays
+ * @param {Object} obj
+ * @param {Function} iterator
+ * @param {Object} context
+ */
+ function each(obj, iterator, context) {
+ var i;
+
+ if (!obj) {
+ return;
+ }
+
+ if (obj.forEach) {
+ obj.forEach(iterator, context);
+ } else if (obj.length !== undefined) {
+ i = 0;
+
+ while (i < obj.length) {
+ iterator.call(context, obj[i], i, obj);
+ i++;
+ }
+ } else {
+ for (i in obj) {
+ obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);
+ }
+ }
+ }
+
+ /**
+ * @private
+ * let a boolean value also be a function that must return a boolean
+ * this first item in args will be used as the context
+ * @param {Boolean|Function} val
+ * @param {Array} [args]
+ * @returns {Boolean}
+ */
+
+ function boolOrFn(val, args) {
+ if (typeof val === TYPE_FUNCTION) {
+ return val.apply(args ? args[0] || undefined : undefined, args);
+ }
+
+ return val;
+ }
+
+ /**
+ * @private
+ * small indexOf wrapper
+ * @param {String} str
+ * @param {String} find
+ * @returns {Boolean} found
+ */
+ function inStr(str, find) {
+ return str.indexOf(find) > -1;
+ }
+
+ /**
+ * @private
+ * when the touchActions are collected they are not a valid value, so we need to clean things up. *
+ * @param {String} actions
+ * @returns {*}
+ */
+
+ function cleanTouchActions(actions) {
+ // none
+ if (inStr(actions, TOUCH_ACTION_NONE)) {
+ return TOUCH_ACTION_NONE;
+ }
+
+ var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);
+ var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); // if both pan-x and pan-y are set (different recognizers
+ // for different directions, e.g. horizontal pan but vertical swipe?)
+ // we need none (as otherwise with pan-x pan-y combined none of these
+ // recognizers will work, since the browser would handle all panning
+
+ if (hasPanX && hasPanY) {
+ return TOUCH_ACTION_NONE;
+ } // pan-x OR pan-y
+
+
+ if (hasPanX || hasPanY) {
+ return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;
+ } // manipulation
+
+
+ if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {
+ return TOUCH_ACTION_MANIPULATION;
+ }
+
+ return TOUCH_ACTION_AUTO;
+ }
+
+ /**
+ * @private
+ * Touch Action
+ * sets the touchAction property or uses the js alternative
+ * @param {Manager} manager
+ * @param {String} value
+ * @constructor
+ */
+
+ var TouchAction =
+ /*#__PURE__*/
+ function () {
+ function TouchAction(manager, value) {
+ this.manager = manager;
+ this.set(value);
+ }
+ /**
+ * @private
+ * set the touchAction value on the element or enable the polyfill
+ * @param {String} value
+ */
+
+
+ var _proto = TouchAction.prototype;
+
+ _proto.set = function set(value) {
+ // find out the touch-action by the event handlers
+ if (value === TOUCH_ACTION_COMPUTE) {
+ value = this.compute();
+ }
+
+ if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {
+ this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;
+ }
+
+ this.actions = value.toLowerCase().trim();
+ };
+ /**
+ * @private
+ * just re-set the touchAction value
+ */
+
+
+ _proto.update = function update() {
+ this.set(this.manager.options.touchAction);
+ };
+ /**
+ * @private
+ * compute the value for the touchAction property based on the recognizer's settings
+ * @returns {String} value
+ */
+
+
+ _proto.compute = function compute() {
+ var actions = [];
+ each(this.manager.recognizers, function (recognizer) {
+ if (boolOrFn(recognizer.options.enable, [recognizer])) {
+ actions = actions.concat(recognizer.getTouchAction());
+ }
+ });
+ return cleanTouchActions(actions.join(' '));
+ };
+ /**
+ * @private
+ * this method is called on each input cycle and provides the preventing of the browser behavior
+ * @param {Object} input
+ */
+
+
+ _proto.preventDefaults = function preventDefaults(input) {
+ var srcEvent = input.srcEvent;
+ var direction = input.offsetDirection; // if the touch action did prevented once this session
+
+ if (this.manager.session.prevented) {
+ srcEvent.preventDefault();
+ return;
+ }
+
+ var actions = this.actions;
+ var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];
+ var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];
+ var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];
+
+ if (hasNone) {
+ // do not prevent defaults if this is a tap gesture
+ var isTapPointer = input.pointers.length === 1;
+ var isTapMovement = input.distance < 2;
+ var isTapTouchTime = input.deltaTime < 250;
+
+ if (isTapPointer && isTapMovement && isTapTouchTime) {
+ return;
+ }
+ }
+
+ if (hasPanX && hasPanY) {
+ // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent
+ return;
+ }
+
+ if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {
+ return this.preventSrc(srcEvent);
+ }
+ };
+ /**
+ * @private
+ * call preventDefault to prevent the browser's default behavior (scrolling in most cases)
+ * @param {Object} srcEvent
+ */
+
+
+ _proto.preventSrc = function preventSrc(srcEvent) {
+ this.manager.session.prevented = true;
+ srcEvent.preventDefault();
+ };
+
+ return TouchAction;
+ }();
+
+ /**
+ * @private
+ * find if a node is in the given parent
+ * @method hasParent
+ * @param {HTMLElement} node
+ * @param {HTMLElement} parent
+ * @return {Boolean} found
+ */
+ function hasParent(node, parent) {
+ while (node) {
+ if (node === parent) {
+ return true;
+ }
+
+ node = node.parentNode;
+ }
+
+ return false;
+ }
+
+ /**
+ * @private
+ * get the center of all the pointers
+ * @param {Array} pointers
+ * @return {Object} center contains `x` and `y` properties
+ */
+
+ function getCenter(pointers) {
+ var pointersLength = pointers.length; // no need to loop when only one touch
+
+ if (pointersLength === 1) {
+ return {
+ x: round(pointers[0].clientX),
+ y: round(pointers[0].clientY)
+ };
+ }
+
+ var x = 0;
+ var y = 0;
+ var i = 0;
+
+ while (i < pointersLength) {
+ x += pointers[i].clientX;
+ y += pointers[i].clientY;
+ i++;
+ }
+
+ return {
+ x: round(x / pointersLength),
+ y: round(y / pointersLength)
+ };
+ }
+
+ /**
+ * @private
+ * create a simple clone from the input used for storage of firstInput and firstMultiple
+ * @param {Object} input
+ * @returns {Object} clonedInputData
+ */
+
+ function simpleCloneInputData(input) {
+ // make a simple copy of the pointers because we will get a reference if we don't
+ // we only need clientXY for the calculations
+ var pointers = [];
+ var i = 0;
+
+ while (i < input.pointers.length) {
+ pointers[i] = {
+ clientX: round(input.pointers[i].clientX),
+ clientY: round(input.pointers[i].clientY)
+ };
+ i++;
+ }
+
+ return {
+ timeStamp: now(),
+ pointers: pointers,
+ center: getCenter(pointers),
+ deltaX: input.deltaX,
+ deltaY: input.deltaY
+ };
+ }
+
+ /**
+ * @private
+ * calculate the absolute distance between two points
+ * @param {Object} p1 {x, y}
+ * @param {Object} p2 {x, y}
+ * @param {Array} [props] containing x and y keys
+ * @return {Number} distance
+ */
+
+ function getDistance(p1, p2, props) {
+ if (!props) {
+ props = PROPS_XY;
+ }
+
+ var x = p2[props[0]] - p1[props[0]];
+ var y = p2[props[1]] - p1[props[1]];
+ return Math.sqrt(x * x + y * y);
+ }
+
+ /**
+ * @private
+ * calculate the angle between two coordinates
+ * @param {Object} p1
+ * @param {Object} p2
+ * @param {Array} [props] containing x and y keys
+ * @return {Number} angle
+ */
+
+ function getAngle(p1, p2, props) {
+ if (!props) {
+ props = PROPS_XY;
+ }
+
+ var x = p2[props[0]] - p1[props[0]];
+ var y = p2[props[1]] - p1[props[1]];
+ return Math.atan2(y, x) * 180 / Math.PI;
+ }
+
+ /**
+ * @private
+ * get the direction between two points
+ * @param {Number} x
+ * @param {Number} y
+ * @return {Number} direction
+ */
+
+ function getDirection(x, y) {
+ if (x === y) {
+ return DIRECTION_NONE;
+ }
+
+ if (abs(x) >= abs(y)) {
+ return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
+ }
+
+ return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
+ }
+
+ function computeDeltaXY(session, input) {
+ var center = input.center; // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session;
+ // jscs throwing error on defalut destructured values and without defaults tests fail
+
+ var offset = session.offsetDelta || {};
+ var prevDelta = session.prevDelta || {};
+ var prevInput = session.prevInput || {};
+
+ if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {
+ prevDelta = session.prevDelta = {
+ x: prevInput.deltaX || 0,
+ y: prevInput.deltaY || 0
+ };
+ offset = session.offsetDelta = {
+ x: center.x,
+ y: center.y
+ };
+ }
+
+ input.deltaX = prevDelta.x + (center.x - offset.x);
+ input.deltaY = prevDelta.y + (center.y - offset.y);
+ }
+
+ /**
+ * @private
+ * calculate the velocity between two points. unit is in px per ms.
+ * @param {Number} deltaTime
+ * @param {Number} x
+ * @param {Number} y
+ * @return {Object} velocity `x` and `y`
+ */
+ function getVelocity(deltaTime, x, y) {
+ return {
+ x: x / deltaTime || 0,
+ y: y / deltaTime || 0
+ };
+ }
+
+ /**
+ * @private
+ * calculate the scale factor between two pointersets
+ * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out
+ * @param {Array} start array of pointers
+ * @param {Array} end array of pointers
+ * @return {Number} scale
+ */
+
+ function getScale(start, end) {
+ return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);
+ }
+
+ /**
+ * @private
+ * calculate the rotation degrees between two pointersets
+ * @param {Array} start array of pointers
+ * @param {Array} end array of pointers
+ * @return {Number} rotation
+ */
+
+ function getRotation(start, end) {
+ return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);
+ }
+
+ /**
+ * @private
+ * velocity is calculated every x ms
+ * @param {Object} session
+ * @param {Object} input
+ */
+
+ function computeIntervalInputData(session, input) {
+ var last = session.lastInterval || input;
+ var deltaTime = input.timeStamp - last.timeStamp;
+ var velocity;
+ var velocityX;
+ var velocityY;
+ var direction;
+
+ if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {
+ var deltaX = input.deltaX - last.deltaX;
+ var deltaY = input.deltaY - last.deltaY;
+ var v = getVelocity(deltaTime, deltaX, deltaY);
+ velocityX = v.x;
+ velocityY = v.y;
+ velocity = abs(v.x) > abs(v.y) ? v.x : v.y;
+ direction = getDirection(deltaX, deltaY);
+ session.lastInterval = input;
+ } else {
+ // use latest velocity info if it doesn't overtake a minimum period
+ velocity = last.velocity;
+ velocityX = last.velocityX;
+ velocityY = last.velocityY;
+ direction = last.direction;
+ }
+
+ input.velocity = velocity;
+ input.velocityX = velocityX;
+ input.velocityY = velocityY;
+ input.direction = direction;
+ }
+
+ /**
+ * @private
+ * extend the data with some usable properties like scale, rotate, velocity etc
+ * @param {Object} manager
+ * @param {Object} input
+ */
+
+ function computeInputData(manager, input) {
+ var session = manager.session;
+ var pointers = input.pointers;
+ var pointersLength = pointers.length; // store the first input to calculate the distance and direction
+
+ if (!session.firstInput) {
+ session.firstInput = simpleCloneInputData(input);
+ } // to compute scale and rotation we need to store the multiple touches
+
+
+ if (pointersLength > 1 && !session.firstMultiple) {
+ session.firstMultiple = simpleCloneInputData(input);
+ } else if (pointersLength === 1) {
+ session.firstMultiple = false;
+ }
+
+ var firstInput = session.firstInput,
+ firstMultiple = session.firstMultiple;
+ var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;
+ var center = input.center = getCenter(pointers);
+ input.timeStamp = now();
+ input.deltaTime = input.timeStamp - firstInput.timeStamp;
+ input.angle = getAngle(offsetCenter, center);
+ input.distance = getDistance(offsetCenter, center);
+ computeDeltaXY(session, input);
+ input.offsetDirection = getDirection(input.deltaX, input.deltaY);
+ var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
+ input.overallVelocityX = overallVelocity.x;
+ input.overallVelocityY = overallVelocity.y;
+ input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;
+ input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
+ input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;
+ input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;
+ computeIntervalInputData(session, input); // find the correct target
+
+ var target = manager.element;
+ var srcEvent = input.srcEvent;
+ var srcEventTarget;
+
+ if (srcEvent.composedPath) {
+ srcEventTarget = srcEvent.composedPath()[0];
+ } else if (srcEvent.path) {
+ srcEventTarget = srcEvent.path[0];
+ } else {
+ srcEventTarget = srcEvent.target;
+ }
+
+ if (hasParent(srcEventTarget, target)) {
+ target = srcEventTarget;
+ }
+
+ input.target = target;
+ }
+
+ /**
+ * @private
+ * handle input events
+ * @param {Manager} manager
+ * @param {String} eventType
+ * @param {Object} input
+ */
+
+ function inputHandler(manager, eventType, input) {
+ var pointersLen = input.pointers.length;
+ var changedPointersLen = input.changedPointers.length;
+ var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;
+ var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;
+ input.isFirst = !!isFirst;
+ input.isFinal = !!isFinal;
+
+ if (isFirst) {
+ manager.session = {};
+ } // source event is the normalized value of the domEvents
+ // like 'touchstart, mouseup, pointerdown'
+
+
+ input.eventType = eventType; // compute scale, rotation etc
+
+ computeInputData(manager, input); // emit secret event
+
+ manager.emit('hammer.input', input);
+ manager.recognize(input);
+ manager.session.prevInput = input;
+ }
+
+ /**
+ * @private
+ * split string on whitespace
+ * @param {String} str
+ * @returns {Array} words
+ */
+ function splitStr(str) {
+ return str.trim().split(/\s+/g);
+ }
+
+ /**
+ * @private
+ * addEventListener with multiple events at once
+ * @param {EventTarget} target
+ * @param {String} types
+ * @param {Function} handler
+ */
+
+ function addEventListeners(target, types, handler) {
+ each(splitStr(types), function (type) {
+ target.addEventListener(type, handler, false);
+ });
+ }
+
+ /**
+ * @private
+ * removeEventListener with multiple events at once
+ * @param {EventTarget} target
+ * @param {String} types
+ * @param {Function} handler
+ */
+
+ function removeEventListeners(target, types, handler) {
+ each(splitStr(types), function (type) {
+ target.removeEventListener(type, handler, false);
+ });
+ }
+
+ /**
+ * @private
+ * get the window object of an element
+ * @param {HTMLElement} element
+ * @returns {DocumentView|Window}
+ */
+ function getWindowForElement(element) {
+ var doc = element.ownerDocument || element;
+ return doc.defaultView || doc.parentWindow || window;
+ }
+
+ /**
+ * @private
+ * create new input type manager
+ * @param {Manager} manager
+ * @param {Function} callback
+ * @returns {Input}
+ * @constructor
+ */
+
+ var Input =
+ /*#__PURE__*/
+ function () {
+ function Input(manager, callback) {
+ var self = this;
+ this.manager = manager;
+ this.callback = callback;
+ this.element = manager.element;
+ this.target = manager.options.inputTarget; // smaller wrapper around the handler, for the scope and the enabled state of the manager,
+ // so when disabled the input events are completely bypassed.
+
+ this.domHandler = function (ev) {
+ if (boolOrFn(manager.options.enable, [manager])) {
+ self.handler(ev);
+ }
+ };
+
+ this.init();
+ }
+ /**
+ * @private
+ * should handle the inputEvent data and trigger the callback
+ * @virtual
+ */
+
+
+ var _proto = Input.prototype;
+
+ _proto.handler = function handler() {};
+ /**
+ * @private
+ * bind the events
+ */
+
+
+ _proto.init = function init() {
+ this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);
+ this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);
+ this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
+ };
+ /**
+ * @private
+ * unbind the events
+ */
+
+
+ _proto.destroy = function destroy() {
+ this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);
+ this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);
+ this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
+ };
+
+ return Input;
+ }();
+
+ /**
+ * @private
+ * find if a array contains the object using indexOf or a simple polyFill
+ * @param {Array} src
+ * @param {String} find
+ * @param {String} [findByKey]
+ * @return {Boolean|Number} false when not found, or the index
+ */
+ function inArray(src, find, findByKey) {
+ if (src.indexOf && !findByKey) {
+ return src.indexOf(find);
+ } else {
+ var i = 0;
+
+ while (i < src.length) {
+ if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {
+ // do not use === here, test fails
+ return i;
+ }
+
+ i++;
+ }
+
+ return -1;
+ }
+ }
+
+ var POINTER_INPUT_MAP = {
+ pointerdown: INPUT_START,
+ pointermove: INPUT_MOVE,
+ pointerup: INPUT_END,
+ pointercancel: INPUT_CANCEL,
+ pointerout: INPUT_CANCEL
+ }; // in IE10 the pointer types is defined as an enum
+
+ var IE10_POINTER_TYPE_ENUM = {
+ 2: INPUT_TYPE_TOUCH,
+ 3: INPUT_TYPE_PEN,
+ 4: INPUT_TYPE_MOUSE,
+ 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816
+
+ };
+ var POINTER_ELEMENT_EVENTS = 'pointerdown';
+ var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive
+
+ if (win.MSPointerEvent && !win.PointerEvent) {
+ POINTER_ELEMENT_EVENTS = 'MSPointerDown';
+ POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';
+ }
+ /**
+ * @private
+ * Pointer events input
+ * @constructor
+ * @extends Input
+ */
+
+
+ var PointerEventInput =
+ /*#__PURE__*/
+ function (_Input) {
+ _inheritsLoose(PointerEventInput, _Input);
+
+ function PointerEventInput() {
+ var _this;
+
+ var proto = PointerEventInput.prototype;
+ proto.evEl = POINTER_ELEMENT_EVENTS;
+ proto.evWin = POINTER_WINDOW_EVENTS;
+ _this = _Input.apply(this, arguments) || this;
+ _this.store = _this.manager.session.pointerEvents = [];
+ return _this;
+ }
+ /**
+ * @private
+ * handle mouse events
+ * @param {Object} ev
+ */
+
+
+ var _proto = PointerEventInput.prototype;
+
+ _proto.handler = function handler(ev) {
+ var store = this.store;
+ var removePointer = false;
+ var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');
+ var eventType = POINTER_INPUT_MAP[eventTypeNormalized];
+ var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;
+ var isTouch = pointerType === INPUT_TYPE_TOUCH; // get index of the event in the store
+
+ var storeIndex = inArray(store, ev.pointerId, 'pointerId'); // start and mouse must be down
+
+ if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {
+ if (storeIndex < 0) {
+ store.push(ev);
+ storeIndex = store.length - 1;
+ }
+ } else if (eventType & (INPUT_END | INPUT_CANCEL)) {
+ removePointer = true;
+ } // it not found, so the pointer hasn't been down (so it's probably a hover)
+
+
+ if (storeIndex < 0) {
+ return;
+ } // update the event in the store
+
+
+ store[storeIndex] = ev;
+ this.callback(this.manager, eventType, {
+ pointers: store,
+ changedPointers: [ev],
+ pointerType: pointerType,
+ srcEvent: ev
+ });
+
+ if (removePointer) {
+ // remove from the store
+ store.splice(storeIndex, 1);
+ }
+ };
+
+ return PointerEventInput;
+ }(Input);
+
+ /**
+ * @private
+ * convert array-like objects to real arrays
+ * @param {Object} obj
+ * @returns {Array}
+ */
+ function toArray(obj) {
+ return Array.prototype.slice.call(obj, 0);
+ }
+
+ /**
+ * @private
+ * unique array with objects based on a key (like 'id') or just by the array's value
+ * @param {Array} src [{id:1},{id:2},{id:1}]
+ * @param {String} [key]
+ * @param {Boolean} [sort=False]
+ * @returns {Array} [{id:1},{id:2}]
+ */
+
+ function uniqueArray(src, key, sort) {
+ var results = [];
+ var values = [];
+ var i = 0;
+
+ while (i < src.length) {
+ var val = key ? src[i][key] : src[i];
+
+ if (inArray(values, val) < 0) {
+ results.push(src[i]);
+ }
+
+ values[i] = val;
+ i++;
+ }
+
+ if (sort) {
+ if (!key) {
+ results = results.sort();
+ } else {
+ results = results.sort(function (a, b) {
+ return a[key] > b[key];
+ });
+ }
+ }
+
+ return results;
+ }
+
+ var TOUCH_INPUT_MAP = {
+ touchstart: INPUT_START,
+ touchmove: INPUT_MOVE,
+ touchend: INPUT_END,
+ touchcancel: INPUT_CANCEL
+ };
+ var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';
+ /**
+ * @private
+ * Multi-user touch events input
+ * @constructor
+ * @extends Input
+ */
+
+ var TouchInput =
+ /*#__PURE__*/
+ function (_Input) {
+ _inheritsLoose(TouchInput, _Input);
+
+ function TouchInput() {
+ var _this;
+
+ TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS;
+ _this = _Input.apply(this, arguments) || this;
+ _this.targetIds = {}; // this.evTarget = TOUCH_TARGET_EVENTS;
+
+ return _this;
+ }
+
+ var _proto = TouchInput.prototype;
+
+ _proto.handler = function handler(ev) {
+ var type = TOUCH_INPUT_MAP[ev.type];
+ var touches = getTouches.call(this, ev, type);
+
+ if (!touches) {
+ return;
+ }
+
+ this.callback(this.manager, type, {
+ pointers: touches[0],
+ changedPointers: touches[1],
+ pointerType: INPUT_TYPE_TOUCH,
+ srcEvent: ev
+ });
+ };
+
+ return TouchInput;
+ }(Input);
+
+ function getTouches(ev, type) {
+ var allTouches = toArray(ev.touches);
+ var targetIds = this.targetIds; // when there is only one touch, the process can be simplified
+
+ if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {
+ targetIds[allTouches[0].identifier] = true;
+ return [allTouches, allTouches];
+ }
+
+ var i;
+ var targetTouches;
+ var changedTouches = toArray(ev.changedTouches);
+ var changedTargetTouches = [];
+ var target = this.target; // get target touches from touches
+
+ targetTouches = allTouches.filter(function (touch) {
+ return hasParent(touch.target, target);
+ }); // collect touches
+
+ if (type === INPUT_START) {
+ i = 0;
+
+ while (i < targetTouches.length) {
+ targetIds[targetTouches[i].identifier] = true;
+ i++;
+ }
+ } // filter changed touches to only contain touches that exist in the collected target ids
+
+
+ i = 0;
+
+ while (i < changedTouches.length) {
+ if (targetIds[changedTouches[i].identifier]) {
+ changedTargetTouches.push(changedTouches[i]);
+ } // cleanup removed touches
+
+
+ if (type & (INPUT_END | INPUT_CANCEL)) {
+ delete targetIds[changedTouches[i].identifier];
+ }
+
+ i++;
+ }
+
+ if (!changedTargetTouches.length) {
+ return;
+ }
+
+ return [// merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'
+ uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];
+ }
+
+ var MOUSE_INPUT_MAP = {
+ mousedown: INPUT_START,
+ mousemove: INPUT_MOVE,
+ mouseup: INPUT_END
+ };
+ var MOUSE_ELEMENT_EVENTS = 'mousedown';
+ var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';
+ /**
+ * @private
+ * Mouse events input
+ * @constructor
+ * @extends Input
+ */
+
+ var MouseInput =
+ /*#__PURE__*/
+ function (_Input) {
+ _inheritsLoose(MouseInput, _Input);
+
+ function MouseInput() {
+ var _this;
+
+ var proto = MouseInput.prototype;
+ proto.evEl = MOUSE_ELEMENT_EVENTS;
+ proto.evWin = MOUSE_WINDOW_EVENTS;
+ _this = _Input.apply(this, arguments) || this;
+ _this.pressed = false; // mousedown state
+
+ return _this;
+ }
+ /**
+ * @private
+ * handle mouse events
+ * @param {Object} ev
+ */
+
+
+ var _proto = MouseInput.prototype;
+
+ _proto.handler = function handler(ev) {
+ var eventType = MOUSE_INPUT_MAP[ev.type]; // on start we want to have the left mouse button down
+
+ if (eventType & INPUT_START && ev.button === 0) {
+ this.pressed = true;
+ }
+
+ if (eventType & INPUT_MOVE && ev.which !== 1) {
+ eventType = INPUT_END;
+ } // mouse must be down
+
+
+ if (!this.pressed) {
+ return;
+ }
+
+ if (eventType & INPUT_END) {
+ this.pressed = false;
+ }
+
+ this.callback(this.manager, eventType, {
+ pointers: [ev],
+ changedPointers: [ev],
+ pointerType: INPUT_TYPE_MOUSE,
+ srcEvent: ev
+ });
+ };
+
+ return MouseInput;
+ }(Input);
+
+ /**
+ * @private
+ * Combined touch and mouse input
+ *
+ * Touch has a higher priority then mouse, and while touching no mouse events are allowed.
+ * This because touch devices also emit mouse events while doing a touch.
+ *
+ * @constructor
+ * @extends Input
+ */
+
+ var DEDUP_TIMEOUT = 2500;
+ var DEDUP_DISTANCE = 25;
+
+ function setLastTouch(eventData) {
+ var _eventData$changedPoi = eventData.changedPointers,
+ touch = _eventData$changedPoi[0];
+
+ if (touch.identifier === this.primaryTouch) {
+ var lastTouch = {
+ x: touch.clientX,
+ y: touch.clientY
+ };
+ var lts = this.lastTouches;
+ this.lastTouches.push(lastTouch);
+
+ var removeLastTouch = function removeLastTouch() {
+ var i = lts.indexOf(lastTouch);
+
+ if (i > -1) {
+ lts.splice(i, 1);
+ }
+ };
+
+ setTimeout(removeLastTouch, DEDUP_TIMEOUT);
+ }
+ }
+
+ function recordTouches(eventType, eventData) {
+ if (eventType & INPUT_START) {
+ this.primaryTouch = eventData.changedPointers[0].identifier;
+ setLastTouch.call(this, eventData);
+ } else if (eventType & (INPUT_END | INPUT_CANCEL)) {
+ setLastTouch.call(this, eventData);
+ }
+ }
+
+ function isSyntheticEvent(eventData) {
+ var x = eventData.srcEvent.clientX;
+ var y = eventData.srcEvent.clientY;
+
+ for (var i = 0; i < this.lastTouches.length; i++) {
+ var t = this.lastTouches[i];
+ var dx = Math.abs(x - t.x);
+ var dy = Math.abs(y - t.y);
+
+ if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ var TouchMouseInput =
+ /*#__PURE__*/
+ function () {
+ var TouchMouseInput =
+ /*#__PURE__*/
+ function (_Input) {
+ _inheritsLoose(TouchMouseInput, _Input);
+
+ function TouchMouseInput(_manager, callback) {
+ var _this;
+
+ _this = _Input.call(this, _manager, callback) || this;
+
+ _this.handler = function (manager, inputEvent, inputData) {
+ var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH;
+ var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE;
+
+ if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {
+ return;
+ } // when we're in a touch event, record touches to de-dupe synthetic mouse event
+
+
+ if (isTouch) {
+ recordTouches.call(_assertThisInitialized(_assertThisInitialized(_this)), inputEvent, inputData);
+ } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized(_assertThisInitialized(_this)), inputData)) {
+ return;
+ }
+
+ _this.callback(manager, inputEvent, inputData);
+ };
+
+ _this.touch = new TouchInput(_this.manager, _this.handler);
+ _this.mouse = new MouseInput(_this.manager, _this.handler);
+ _this.primaryTouch = null;
+ _this.lastTouches = [];
+ return _this;
+ }
+ /**
+ * @private
+ * handle mouse and touch events
+ * @param {Hammer} manager
+ * @param {String} inputEvent
+ * @param {Object} inputData
+ */
+
+
+ var _proto = TouchMouseInput.prototype;
+
+ /**
+ * @private
+ * remove the event listeners
+ */
+ _proto.destroy = function destroy() {
+ this.touch.destroy();
+ this.mouse.destroy();
+ };
+
+ return TouchMouseInput;
+ }(Input);
+
+ return TouchMouseInput;
+ }();
+
+ /**
+ * @private
+ * create new input type manager
+ * called by the Manager constructor
+ * @param {Hammer} manager
+ * @returns {Input}
+ */
+
+ function createInputInstance(manager) {
+ var Type; // let inputClass = manager.options.inputClass;
+
+ var inputClass = manager.options.inputClass;
+
+ if (inputClass) {
+ Type = inputClass;
+ } else if (SUPPORT_POINTER_EVENTS) {
+ Type = PointerEventInput;
+ } else if (SUPPORT_ONLY_TOUCH) {
+ Type = TouchInput;
+ } else if (!SUPPORT_TOUCH) {
+ Type = MouseInput;
+ } else {
+ Type = TouchMouseInput;
+ }
+
+ return new Type(manager, inputHandler);
+ }
+
+ /**
+ * @private
+ * if the argument is an array, we want to execute the fn on each entry
+ * if it aint an array we don't want to do a thing.
+ * this is used by all the methods that accept a single and array argument.
+ * @param {*|Array} arg
+ * @param {String} fn
+ * @param {Object} [context]
+ * @returns {Boolean}
+ */
+
+ function invokeArrayArg(arg, fn, context) {
+ if (Array.isArray(arg)) {
+ each(arg, context[fn], context);
+ return true;
+ }
+
+ return false;
+ }
+
+ var STATE_POSSIBLE = 1;
+ var STATE_BEGAN = 2;
+ var STATE_CHANGED = 4;
+ var STATE_ENDED = 8;
+ var STATE_RECOGNIZED = STATE_ENDED;
+ var STATE_CANCELLED = 16;
+ var STATE_FAILED = 32;
+
+ /**
+ * @private
+ * get a unique id
+ * @returns {number} uniqueId
+ */
+ var _uniqueId = 1;
+ function uniqueId() {
+ return _uniqueId++;
+ }
+
+ /**
+ * @private
+ * get a recognizer by name if it is bound to a manager
+ * @param {Recognizer|String} otherRecognizer
+ * @param {Recognizer} recognizer
+ * @returns {Recognizer}
+ */
+ function getRecognizerByNameIfManager(otherRecognizer, recognizer) {
+ var manager = recognizer.manager;
+
+ if (manager) {
+ return manager.get(otherRecognizer);
+ }
+
+ return otherRecognizer;
+ }
+
+ /**
+ * @private
+ * get a usable string, used as event postfix
+ * @param {constant} state
+ * @returns {String} state
+ */
+
+ function stateStr(state) {
+ if (state & STATE_CANCELLED) {
+ return 'cancel';
+ } else if (state & STATE_ENDED) {
+ return 'end';
+ } else if (state & STATE_CHANGED) {
+ return 'move';
+ } else if (state & STATE_BEGAN) {
+ return 'start';
+ }
+
+ return '';
+ }
+
+ /**
+ * @private
+ * Recognizer flow explained; *
+ * All recognizers have the initial state of POSSIBLE when a input session starts.
+ * The definition of a input session is from the first input until the last input, with all it's movement in it. *
+ * Example session for mouse-input: mousedown -> mousemove -> mouseup
+ *
+ * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed
+ * which determines with state it should be.
+ *
+ * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to
+ * POSSIBLE to give it another change on the next cycle.
+ *
+ * Possible
+ * |
+ * +-----+---------------+
+ * | |
+ * +-----+-----+ |
+ * | | |
+ * Failed Cancelled |
+ * +-------+------+
+ * | |
+ * Recognized Began
+ * |
+ * Changed
+ * |
+ * Ended/Recognized
+ */
+
+ /**
+ * @private
+ * Recognizer
+ * Every recognizer needs to extend from this class.
+ * @constructor
+ * @param {Object} options
+ */
+
+ var Recognizer =
+ /*#__PURE__*/
+ function () {
+ function Recognizer(options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ this.options = _extends({
+ enable: true
+ }, options);
+ this.id = uniqueId();
+ this.manager = null; // default is enable true
+
+ this.state = STATE_POSSIBLE;
+ this.simultaneous = {};
+ this.requireFail = [];
+ }
+ /**
+ * @private
+ * set options
+ * @param {Object} options
+ * @return {Recognizer}
+ */
+
+
+ var _proto = Recognizer.prototype;
+
+ _proto.set = function set(options) {
+ assign$1(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state
+
+ this.manager && this.manager.touchAction.update();
+ return this;
+ };
+ /**
+ * @private
+ * recognize simultaneous with an other recognizer.
+ * @param {Recognizer} otherRecognizer
+ * @returns {Recognizer} this
+ */
+
+
+ _proto.recognizeWith = function recognizeWith(otherRecognizer) {
+ if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {
+ return this;
+ }
+
+ var simultaneous = this.simultaneous;
+ otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
+
+ if (!simultaneous[otherRecognizer.id]) {
+ simultaneous[otherRecognizer.id] = otherRecognizer;
+ otherRecognizer.recognizeWith(this);
+ }
+
+ return this;
+ };
+ /**
+ * @private
+ * drop the simultaneous link. it doesnt remove the link on the other recognizer.
+ * @param {Recognizer} otherRecognizer
+ * @returns {Recognizer} this
+ */
+
+
+ _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) {
+ if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {
+ return this;
+ }
+
+ otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
+ delete this.simultaneous[otherRecognizer.id];
+ return this;
+ };
+ /**
+ * @private
+ * recognizer can only run when an other is failing
+ * @param {Recognizer} otherRecognizer
+ * @returns {Recognizer} this
+ */
+
+
+ _proto.requireFailure = function requireFailure(otherRecognizer) {
+ if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {
+ return this;
+ }
+
+ var requireFail = this.requireFail;
+ otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
+
+ if (inArray(requireFail, otherRecognizer) === -1) {
+ requireFail.push(otherRecognizer);
+ otherRecognizer.requireFailure(this);
+ }
+
+ return this;
+ };
+ /**
+ * @private
+ * drop the requireFailure link. it does not remove the link on the other recognizer.
+ * @param {Recognizer} otherRecognizer
+ * @returns {Recognizer} this
+ */
+
+
+ _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) {
+ if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {
+ return this;
+ }
+
+ otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
+ var index = inArray(this.requireFail, otherRecognizer);
+
+ if (index > -1) {
+ this.requireFail.splice(index, 1);
+ }
+
+ return this;
+ };
+ /**
+ * @private
+ * has require failures boolean
+ * @returns {boolean}
+ */
+
+
+ _proto.hasRequireFailures = function hasRequireFailures() {
+ return this.requireFail.length > 0;
+ };
+ /**
+ * @private
+ * if the recognizer can recognize simultaneous with an other recognizer
+ * @param {Recognizer} otherRecognizer
+ * @returns {Boolean}
+ */
+
+
+ _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) {
+ return !!this.simultaneous[otherRecognizer.id];
+ };
+ /**
+ * @private
+ * You should use `tryEmit` instead of `emit` directly to check
+ * that all the needed recognizers has failed before emitting.
+ * @param {Object} input
+ */
+
+
+ _proto.emit = function emit(input) {
+ var self = this;
+ var state = this.state;
+
+ function emit(event) {
+ self.manager.emit(event, input);
+ } // 'panstart' and 'panmove'
+
+
+ if (state < STATE_ENDED) {
+ emit(self.options.event + stateStr(state));
+ }
+
+ emit(self.options.event); // simple 'eventName' events
+
+ if (input.additionalEvent) {
+ // additional event(panleft, panright, pinchin, pinchout...)
+ emit(input.additionalEvent);
+ } // panend and pancancel
+
+
+ if (state >= STATE_ENDED) {
+ emit(self.options.event + stateStr(state));
+ }
+ };
+ /**
+ * @private
+ * Check that all the require failure recognizers has failed,
+ * if true, it emits a gesture event,
+ * otherwise, setup the state to FAILED.
+ * @param {Object} input
+ */
+
+
+ _proto.tryEmit = function tryEmit(input) {
+ if (this.canEmit()) {
+ return this.emit(input);
+ } // it's failing anyway
+
+
+ this.state = STATE_FAILED;
+ };
+ /**
+ * @private
+ * can we emit?
+ * @returns {boolean}
+ */
+
+
+ _proto.canEmit = function canEmit() {
+ var i = 0;
+
+ while (i < this.requireFail.length) {
+ if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {
+ return false;
+ }
+
+ i++;
+ }
+
+ return true;
+ };
+ /**
+ * @private
+ * update the recognizer
+ * @param {Object} inputData
+ */
+
+
+ _proto.recognize = function recognize(inputData) {
+ // make a new copy of the inputData
+ // so we can change the inputData without messing up the other recognizers
+ var inputDataClone = assign$1({}, inputData); // is is enabled and allow recognizing?
+
+ if (!boolOrFn(this.options.enable, [this, inputDataClone])) {
+ this.reset();
+ this.state = STATE_FAILED;
+ return;
+ } // reset when we've reached the end
+
+
+ if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {
+ this.state = STATE_POSSIBLE;
+ }
+
+ this.state = this.process(inputDataClone); // the recognizer has recognized a gesture
+ // so trigger an event
+
+ if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {
+ this.tryEmit(inputDataClone);
+ }
+ };
+ /**
+ * @private
+ * return the state of the recognizer
+ * the actual recognizing happens in this method
+ * @virtual
+ * @param {Object} inputData
+ * @returns {constant} STATE
+ */
+
+ /* jshint ignore:start */
+
+
+ _proto.process = function process(inputData) {};
+ /* jshint ignore:end */
+
+ /**
+ * @private
+ * return the preferred touch-action
+ * @virtual
+ * @returns {Array}
+ */
+
+
+ _proto.getTouchAction = function getTouchAction() {};
+ /**
+ * @private
+ * called when the gesture isn't allowed to recognize
+ * like when another is being recognized or it is disabled
+ * @virtual
+ */
+
+
+ _proto.reset = function reset() {};
+
+ return Recognizer;
+ }();
+
+ /**
+ * @private
+ * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur
+ * between the given interval and position. The delay option can be used to recognize multi-taps without firing
+ * a single tap.
+ *
+ * The eventData from the emitted event contains the property `tapCount`, which contains the amount of
+ * multi-taps being recognized.
+ * @constructor
+ * @extends Recognizer
+ */
+
+ var TapRecognizer =
+ /*#__PURE__*/
+ function (_Recognizer) {
+ _inheritsLoose(TapRecognizer, _Recognizer);
+
+ function TapRecognizer(options) {
+ var _this;
+
+ if (options === void 0) {
+ options = {};
+ }
+
+ _this = _Recognizer.call(this, _extends({
+ event: 'tap',
+ pointers: 1,
+ taps: 1,
+ interval: 300,
+ // max time between the multi-tap taps
+ time: 250,
+ // max time of the pointer to be down (like finger on the screen)
+ threshold: 9,
+ // a minimal movement is ok, but keep it low
+ posThreshold: 10
+ }, options)) || this; // previous time and center,
+ // used for tap counting
+
+ _this.pTime = false;
+ _this.pCenter = false;
+ _this._timer = null;
+ _this._input = null;
+ _this.count = 0;
+ return _this;
+ }
+
+ var _proto = TapRecognizer.prototype;
+
+ _proto.getTouchAction = function getTouchAction() {
+ return [TOUCH_ACTION_MANIPULATION];
+ };
+
+ _proto.process = function process(input) {
+ var _this2 = this;
+
+ var options = this.options;
+ var validPointers = input.pointers.length === options.pointers;
+ var validMovement = input.distance < options.threshold;
+ var validTouchTime = input.deltaTime < options.time;
+ this.reset();
+
+ if (input.eventType & INPUT_START && this.count === 0) {
+ return this.failTimeout();
+ } // we only allow little movement
+ // and we've reached an end event, so a tap is possible
+
+
+ if (validMovement && validTouchTime && validPointers) {
+ if (input.eventType !== INPUT_END) {
+ return this.failTimeout();
+ }
+
+ var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;
+ var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;
+ this.pTime = input.timeStamp;
+ this.pCenter = input.center;
+
+ if (!validMultiTap || !validInterval) {
+ this.count = 1;
+ } else {
+ this.count += 1;
+ }
+
+ this._input = input; // if tap count matches we have recognized it,
+ // else it has began recognizing...
+
+ var tapCount = this.count % options.taps;
+
+ if (tapCount === 0) {
+ // no failing requirements, immediately trigger the tap event
+ // or wait as long as the multitap interval to trigger
+ if (!this.hasRequireFailures()) {
+ return STATE_RECOGNIZED;
+ } else {
+ this._timer = setTimeout(function () {
+ _this2.state = STATE_RECOGNIZED;
+
+ _this2.tryEmit();
+ }, options.interval);
+ return STATE_BEGAN;
+ }
+ }
+ }
+
+ return STATE_FAILED;
+ };
+
+ _proto.failTimeout = function failTimeout() {
+ var _this3 = this;
+
+ this._timer = setTimeout(function () {
+ _this3.state = STATE_FAILED;
+ }, this.options.interval);
+ return STATE_FAILED;
+ };
+
+ _proto.reset = function reset() {
+ clearTimeout(this._timer);
+ };
+
+ _proto.emit = function emit() {
+ if (this.state === STATE_RECOGNIZED) {
+ this._input.tapCount = this.count;
+ this.manager.emit(this.options.event, this._input);
+ }
+ };
+
+ return TapRecognizer;
+ }(Recognizer);
+
+ /**
+ * @private
+ * This recognizer is just used as a base for the simple attribute recognizers.
+ * @constructor
+ * @extends Recognizer
+ */
+
+ var AttrRecognizer =
+ /*#__PURE__*/
+ function (_Recognizer) {
+ _inheritsLoose(AttrRecognizer, _Recognizer);
+
+ function AttrRecognizer(options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return _Recognizer.call(this, _extends({
+ pointers: 1
+ }, options)) || this;
+ }
+ /**
+ * @private
+ * Used to check if it the recognizer receives valid input, like input.distance > 10.
+ * @memberof AttrRecognizer
+ * @param {Object} input
+ * @returns {Boolean} recognized
+ */
+
+
+ var _proto = AttrRecognizer.prototype;
+
+ _proto.attrTest = function attrTest(input) {
+ var optionPointers = this.options.pointers;
+ return optionPointers === 0 || input.pointers.length === optionPointers;
+ };
+ /**
+ * @private
+ * Process the input and return the state for the recognizer
+ * @memberof AttrRecognizer
+ * @param {Object} input
+ * @returns {*} State
+ */
+
+
+ _proto.process = function process(input) {
+ var state = this.state;
+ var eventType = input.eventType;
+ var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);
+ var isValid = this.attrTest(input); // on cancel input and we've recognized before, return STATE_CANCELLED
+
+ if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {
+ return state | STATE_CANCELLED;
+ } else if (isRecognized || isValid) {
+ if (eventType & INPUT_END) {
+ return state | STATE_ENDED;
+ } else if (!(state & STATE_BEGAN)) {
+ return STATE_BEGAN;
+ }
+
+ return state | STATE_CHANGED;
+ }
+
+ return STATE_FAILED;
+ };
+
+ return AttrRecognizer;
+ }(Recognizer);
+
+ /**
+ * @private
+ * direction cons to string
+ * @param {constant} direction
+ * @returns {String}
+ */
+
+ function directionStr(direction) {
+ if (direction === DIRECTION_DOWN) {
+ return 'down';
+ } else if (direction === DIRECTION_UP) {
+ return 'up';
+ } else if (direction === DIRECTION_LEFT) {
+ return 'left';
+ } else if (direction === DIRECTION_RIGHT) {
+ return 'right';
+ }
+
+ return '';
+ }
+
+ /**
+ * @private
+ * Pan
+ * Recognized when the pointer is down and moved in the allowed direction.
+ * @constructor
+ * @extends AttrRecognizer
+ */
+
+ var PanRecognizer =
+ /*#__PURE__*/
+ function (_AttrRecognizer) {
+ _inheritsLoose(PanRecognizer, _AttrRecognizer);
+
+ function PanRecognizer(options) {
+ var _this;
+
+ if (options === void 0) {
+ options = {};
+ }
+
+ _this = _AttrRecognizer.call(this, _extends({
+ event: 'pan',
+ threshold: 10,
+ pointers: 1,
+ direction: DIRECTION_ALL
+ }, options)) || this;
+ _this.pX = null;
+ _this.pY = null;
+ return _this;
+ }
+
+ var _proto = PanRecognizer.prototype;
+
+ _proto.getTouchAction = function getTouchAction() {
+ var direction = this.options.direction;
+ var actions = [];
+
+ if (direction & DIRECTION_HORIZONTAL) {
+ actions.push(TOUCH_ACTION_PAN_Y);
+ }
+
+ if (direction & DIRECTION_VERTICAL) {
+ actions.push(TOUCH_ACTION_PAN_X);
+ }
+
+ return actions;
+ };
+
+ _proto.directionTest = function directionTest(input) {
+ var options = this.options;
+ var hasMoved = true;
+ var distance = input.distance;
+ var direction = input.direction;
+ var x = input.deltaX;
+ var y = input.deltaY; // lock to axis?
+
+ if (!(direction & options.direction)) {
+ if (options.direction & DIRECTION_HORIZONTAL) {
+ direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
+ hasMoved = x !== this.pX;
+ distance = Math.abs(input.deltaX);
+ } else {
+ direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
+ hasMoved = y !== this.pY;
+ distance = Math.abs(input.deltaY);
+ }
+ }
+
+ input.direction = direction;
+ return hasMoved && distance > options.threshold && direction & options.direction;
+ };
+
+ _proto.attrTest = function attrTest(input) {
+ return AttrRecognizer.prototype.attrTest.call(this, input) && ( // replace with a super call
+ this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));
+ };
+
+ _proto.emit = function emit(input) {
+ this.pX = input.deltaX;
+ this.pY = input.deltaY;
+ var direction = directionStr(input.direction);
+
+ if (direction) {
+ input.additionalEvent = this.options.event + direction;
+ }
+
+ _AttrRecognizer.prototype.emit.call(this, input);
+ };
+
+ return PanRecognizer;
+ }(AttrRecognizer);
+
+ /**
+ * @private
+ * Swipe
+ * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.
+ * @constructor
+ * @extends AttrRecognizer
+ */
+
+ var SwipeRecognizer =
+ /*#__PURE__*/
+ function (_AttrRecognizer) {
+ _inheritsLoose(SwipeRecognizer, _AttrRecognizer);
+
+ function SwipeRecognizer(options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return _AttrRecognizer.call(this, _extends({
+ event: 'swipe',
+ threshold: 10,
+ velocity: 0.3,
+ direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,
+ pointers: 1
+ }, options)) || this;
+ }
+
+ var _proto = SwipeRecognizer.prototype;
+
+ _proto.getTouchAction = function getTouchAction() {
+ return PanRecognizer.prototype.getTouchAction.call(this);
+ };
+
+ _proto.attrTest = function attrTest(input) {
+ var direction = this.options.direction;
+ var velocity;
+
+ if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {
+ velocity = input.overallVelocity;
+ } else if (direction & DIRECTION_HORIZONTAL) {
+ velocity = input.overallVelocityX;
+ } else if (direction & DIRECTION_VERTICAL) {
+ velocity = input.overallVelocityY;
+ }
+
+ return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;
+ };
+
+ _proto.emit = function emit(input) {
+ var direction = directionStr(input.offsetDirection);
+
+ if (direction) {
+ this.manager.emit(this.options.event + direction, input);
+ }
+
+ this.manager.emit(this.options.event, input);
+ };
+
+ return SwipeRecognizer;
+ }(AttrRecognizer);
+
+ /**
+ * @private
+ * Pinch
+ * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).
+ * @constructor
+ * @extends AttrRecognizer
+ */
+
+ var PinchRecognizer =
+ /*#__PURE__*/
+ function (_AttrRecognizer) {
+ _inheritsLoose(PinchRecognizer, _AttrRecognizer);
+
+ function PinchRecognizer(options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return _AttrRecognizer.call(this, _extends({
+ event: 'pinch',
+ threshold: 0,
+ pointers: 2
+ }, options)) || this;
+ }
+
+ var _proto = PinchRecognizer.prototype;
+
+ _proto.getTouchAction = function getTouchAction() {
+ return [TOUCH_ACTION_NONE];
+ };
+
+ _proto.attrTest = function attrTest(input) {
+ return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);
+ };
+
+ _proto.emit = function emit(input) {
+ if (input.scale !== 1) {
+ var inOut = input.scale < 1 ? 'in' : 'out';
+ input.additionalEvent = this.options.event + inOut;
+ }
+
+ _AttrRecognizer.prototype.emit.call(this, input);
+ };
+
+ return PinchRecognizer;
+ }(AttrRecognizer);
+
+ /**
+ * @private
+ * Rotate
+ * Recognized when two or more pointer are moving in a circular motion.
+ * @constructor
+ * @extends AttrRecognizer
+ */
+
+ var RotateRecognizer =
+ /*#__PURE__*/
+ function (_AttrRecognizer) {
+ _inheritsLoose(RotateRecognizer, _AttrRecognizer);
+
+ function RotateRecognizer(options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return _AttrRecognizer.call(this, _extends({
+ event: 'rotate',
+ threshold: 0,
+ pointers: 2
+ }, options)) || this;
+ }
+
+ var _proto = RotateRecognizer.prototype;
+
+ _proto.getTouchAction = function getTouchAction() {
+ return [TOUCH_ACTION_NONE];
+ };
+
+ _proto.attrTest = function attrTest(input) {
+ return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);
+ };
+
+ return RotateRecognizer;
+ }(AttrRecognizer);
+
+ /**
+ * @private
+ * Press
+ * Recognized when the pointer is down for x ms without any movement.
+ * @constructor
+ * @extends Recognizer
+ */
+
+ var PressRecognizer =
+ /*#__PURE__*/
+ function (_Recognizer) {
+ _inheritsLoose(PressRecognizer, _Recognizer);
+
+ function PressRecognizer(options) {
+ var _this;
+
+ if (options === void 0) {
+ options = {};
+ }
+
+ _this = _Recognizer.call(this, _extends({
+ event: 'press',
+ pointers: 1,
+ time: 251,
+ // minimal time of the pointer to be pressed
+ threshold: 9
+ }, options)) || this;
+ _this._timer = null;
+ _this._input = null;
+ return _this;
+ }
+
+ var _proto = PressRecognizer.prototype;
+
+ _proto.getTouchAction = function getTouchAction() {
+ return [TOUCH_ACTION_AUTO];
+ };
+
+ _proto.process = function process(input) {
+ var _this2 = this;
+
+ var options = this.options;
+ var validPointers = input.pointers.length === options.pointers;
+ var validMovement = input.distance < options.threshold;
+ var validTime = input.deltaTime > options.time;
+ this._input = input; // we only allow little movement
+ // and we've reached an end event, so a tap is possible
+
+ if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {
+ this.reset();
+ } else if (input.eventType & INPUT_START) {
+ this.reset();
+ this._timer = setTimeout(function () {
+ _this2.state = STATE_RECOGNIZED;
+
+ _this2.tryEmit();
+ }, options.time);
+ } else if (input.eventType & INPUT_END) {
+ return STATE_RECOGNIZED;
+ }
+
+ return STATE_FAILED;
+ };
+
+ _proto.reset = function reset() {
+ clearTimeout(this._timer);
+ };
+
+ _proto.emit = function emit(input) {
+ if (this.state !== STATE_RECOGNIZED) {
+ return;
+ }
+
+ if (input && input.eventType & INPUT_END) {
+ this.manager.emit(this.options.event + "up", input);
+ } else {
+ this._input.timeStamp = now();
+ this.manager.emit(this.options.event, this._input);
+ }
+ };
+
+ return PressRecognizer;
+ }(Recognizer);
+
+ var defaults = {
+ /**
+ * @private
+ * set if DOM events are being triggered.
+ * But this is slower and unused by simple implementations, so disabled by default.
+ * @type {Boolean}
+ * @default false
+ */
+ domEvents: false,
+
+ /**
+ * @private
+ * The value for the touchAction property/fallback.
+ * When set to `compute` it will magically set the correct value based on the added recognizers.
+ * @type {String}
+ * @default compute
+ */
+ touchAction: TOUCH_ACTION_COMPUTE,
+
+ /**
+ * @private
+ * @type {Boolean}
+ * @default true
+ */
+ enable: true,
+
+ /**
+ * @private
+ * EXPERIMENTAL FEATURE -- can be removed/changed
+ * Change the parent input target element.
+ * If Null, then it is being set the to main element.
+ * @type {Null|EventTarget}
+ * @default null
+ */
+ inputTarget: null,
+
+ /**
+ * @private
+ * force an input class
+ * @type {Null|Function}
+ * @default null
+ */
+ inputClass: null,
+
+ /**
+ * @private
+ * Some CSS properties can be used to improve the working of Hammer.
+ * Add them to this method and they will be set when creating a new Manager.
+ * @namespace
+ */
+ cssProps: {
+ /**
+ * @private
+ * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.
+ * @type {String}
+ * @default 'none'
+ */
+ userSelect: "none",
+
+ /**
+ * @private
+ * Disable the Windows Phone grippers when pressing an element.
+ * @type {String}
+ * @default 'none'
+ */
+ touchSelect: "none",
+
+ /**
+ * @private
+ * Disables the default callout shown when you touch and hold a touch target.
+ * On iOS, when you touch and hold a touch target such as a link, Safari displays
+ * a callout containing information about the link. This property allows you to disable that callout.
+ * @type {String}
+ * @default 'none'
+ */
+ touchCallout: "none",
+
+ /**
+ * @private
+ * Specifies whether zooming is enabled. Used by IE10>
+ * @type {String}
+ * @default 'none'
+ */
+ contentZooming: "none",
+
+ /**
+ * @private
+ * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.
+ * @type {String}
+ * @default 'none'
+ */
+ userDrag: "none",
+
+ /**
+ * @private
+ * Overrides the highlight color shown when the user taps a link or a JavaScript
+ * clickable element in iOS. This property obeys the alpha value, if specified.
+ * @type {String}
+ * @default 'rgba(0,0,0,0)'
+ */
+ tapHighlightColor: "rgba(0,0,0,0)"
+ }
+ };
+ /**
+ * @private
+ * Default recognizer setup when calling `Hammer()`
+ * When creating a new Manager these will be skipped.
+ * This is separated with other defaults because of tree-shaking.
+ * @type {Array}
+ */
+
+ var preset = [[RotateRecognizer, {
+ enable: false
+ }], [PinchRecognizer, {
+ enable: false
+ }, ['rotate']], [SwipeRecognizer, {
+ direction: DIRECTION_HORIZONTAL
+ }], [PanRecognizer, {
+ direction: DIRECTION_HORIZONTAL
+ }, ['swipe']], [TapRecognizer], [TapRecognizer, {
+ event: 'doubletap',
+ taps: 2
+ }, ['tap']], [PressRecognizer]];
+
+ var STOP = 1;
+ var FORCED_STOP = 2;
+ /**
+ * @private
+ * add/remove the css properties as defined in manager.options.cssProps
+ * @param {Manager} manager
+ * @param {Boolean} add
+ */
+
+ function toggleCssProps(manager, add) {
+ var element = manager.element;
+
+ if (!element.style) {
+ return;
+ }
+
+ var prop;
+ each(manager.options.cssProps, function (value, name) {
+ prop = prefixed(element.style, name);
+
+ if (add) {
+ manager.oldCssProps[prop] = element.style[prop];
+ element.style[prop] = value;
+ } else {
+ element.style[prop] = manager.oldCssProps[prop] || "";
+ }
+ });
+
+ if (!add) {
+ manager.oldCssProps = {};
+ }
+ }
+ /**
+ * @private
+ * trigger dom event
+ * @param {String} event
+ * @param {Object} data
+ */
+
+
+ function triggerDomEvent(event, data) {
+ var gestureEvent = document.createEvent("Event");
+ gestureEvent.initEvent(event, true, true);
+ gestureEvent.gesture = data;
+ data.target.dispatchEvent(gestureEvent);
+ }
+ /**
+ * @private
+ * Manager
+ * @param {HTMLElement} element
+ * @param {Object} [options]
+ * @constructor
+ */
+
+
+ var Manager =
+ /*#__PURE__*/
+ function () {
+ function Manager(element, options) {
+ var _this = this;
+
+ this.options = assign$1({}, defaults, options || {});
+ this.options.inputTarget = this.options.inputTarget || element;
+ this.handlers = {};
+ this.session = {};
+ this.recognizers = [];
+ this.oldCssProps = {};
+ this.element = element;
+ this.input = createInputInstance(this);
+ this.touchAction = new TouchAction(this, this.options.touchAction);
+ toggleCssProps(this, true);
+ each(this.options.recognizers, function (item) {
+ var recognizer = _this.add(new item[0](item[1]));
+
+ item[2] && recognizer.recognizeWith(item[2]);
+ item[3] && recognizer.requireFailure(item[3]);
+ }, this);
+ }
+ /**
+ * @private
+ * set options
+ * @param {Object} options
+ * @returns {Manager}
+ */
+
+
+ var _proto = Manager.prototype;
+
+ _proto.set = function set(options) {
+ assign$1(this.options, options); // Options that need a little more setup
+
+ if (options.touchAction) {
+ this.touchAction.update();
+ }
+
+ if (options.inputTarget) {
+ // Clean up existing event listeners and reinitialize
+ this.input.destroy();
+ this.input.target = options.inputTarget;
+ this.input.init();
+ }
+
+ return this;
+ };
+ /**
+ * @private
+ * stop recognizing for this session.
+ * This session will be discarded, when a new [input]start event is fired.
+ * When forced, the recognizer cycle is stopped immediately.
+ * @param {Boolean} [force]
+ */
+
+
+ _proto.stop = function stop(force) {
+ this.session.stopped = force ? FORCED_STOP : STOP;
+ };
+ /**
+ * @private
+ * run the recognizers!
+ * called by the inputHandler function on every movement of the pointers (touches)
+ * it walks through all the recognizers and tries to detect the gesture that is being made
+ * @param {Object} inputData
+ */
+
+
+ _proto.recognize = function recognize(inputData) {
+ var session = this.session;
+
+ if (session.stopped) {
+ return;
+ } // run the touch-action polyfill
+
+
+ this.touchAction.preventDefaults(inputData);
+ var recognizer;
+ var recognizers = this.recognizers; // this holds the recognizer that is being recognized.
+ // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED
+ // if no recognizer is detecting a thing, it is set to `null`
+
+ var curRecognizer = session.curRecognizer; // reset when the last recognizer is recognized
+ // or when we're in a new session
+
+ if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {
+ session.curRecognizer = null;
+ curRecognizer = null;
+ }
+
+ var i = 0;
+
+ while (i < recognizers.length) {
+ recognizer = recognizers[i]; // find out if we are allowed try to recognize the input for this one.
+ // 1. allow if the session is NOT forced stopped (see the .stop() method)
+ // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one
+ // that is being recognized.
+ // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.
+ // this can be setup with the `recognizeWith()` method on the recognizer.
+
+ if (session.stopped !== FORCED_STOP && ( // 1
+ !curRecognizer || recognizer === curRecognizer || // 2
+ recognizer.canRecognizeWith(curRecognizer))) {
+ // 3
+ recognizer.recognize(inputData);
+ } else {
+ recognizer.reset();
+ } // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the
+ // current active recognizer. but only if we don't already have an active recognizer
+
+
+ if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {
+ session.curRecognizer = recognizer;
+ curRecognizer = recognizer;
+ }
+
+ i++;
+ }
+ };
+ /**
+ * @private
+ * get a recognizer by its event name.
+ * @param {Recognizer|String} recognizer
+ * @returns {Recognizer|Null}
+ */
+
+
+ _proto.get = function get(recognizer) {
+ if (recognizer instanceof Recognizer) {
+ return recognizer;
+ }
+
+ var recognizers = this.recognizers;
+
+ for (var i = 0; i < recognizers.length; i++) {
+ if (recognizers[i].options.event === recognizer) {
+ return recognizers[i];
+ }
+ }
+
+ return null;
+ };
+ /**
+ * @private add a recognizer to the manager
+ * existing recognizers with the same event name will be removed
+ * @param {Recognizer} recognizer
+ * @returns {Recognizer|Manager}
+ */
+
+
+ _proto.add = function add(recognizer) {
+ if (invokeArrayArg(recognizer, "add", this)) {
+ return this;
+ } // remove existing
+
+
+ var existing = this.get(recognizer.options.event);
+
+ if (existing) {
+ this.remove(existing);
+ }
+
+ this.recognizers.push(recognizer);
+ recognizer.manager = this;
+ this.touchAction.update();
+ return recognizer;
+ };
+ /**
+ * @private
+ * remove a recognizer by name or instance
+ * @param {Recognizer|String} recognizer
+ * @returns {Manager}
+ */
+
+
+ _proto.remove = function remove(recognizer) {
+ if (invokeArrayArg(recognizer, "remove", this)) {
+ return this;
+ }
+
+ var targetRecognizer = this.get(recognizer); // let's make sure this recognizer exists
+
+ if (recognizer) {
+ var recognizers = this.recognizers;
+ var index = inArray(recognizers, targetRecognizer);
+
+ if (index !== -1) {
+ recognizers.splice(index, 1);
+ this.touchAction.update();
+ }
+ }
+
+ return this;
+ };
+ /**
+ * @private
+ * bind event
+ * @param {String} events
+ * @param {Function} handler
+ * @returns {EventEmitter} this
+ */
+
+
+ _proto.on = function on(events, handler) {
+ if (events === undefined || handler === undefined) {
+ return this;
+ }
+
+ var handlers = this.handlers;
+ each(splitStr(events), function (event) {
+ handlers[event] = handlers[event] || [];
+ handlers[event].push(handler);
+ });
+ return this;
+ };
+ /**
+ * @private unbind event, leave emit blank to remove all handlers
+ * @param {String} events
+ * @param {Function} [handler]
+ * @returns {EventEmitter} this
+ */
+
+
+ _proto.off = function off(events, handler) {
+ if (events === undefined) {
+ return this;
+ }
+
+ var handlers = this.handlers;
+ each(splitStr(events), function (event) {
+ if (!handler) {
+ delete handlers[event];
+ } else {
+ handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);
+ }
+ });
+ return this;
+ };
+ /**
+ * @private emit event to the listeners
+ * @param {String} event
+ * @param {Object} data
+ */
+
+
+ _proto.emit = function emit(event, data) {
+ // we also want to trigger dom events
+ if (this.options.domEvents) {
+ triggerDomEvent(event, data);
+ } // no handlers, so skip it all
+
+
+ var handlers = this.handlers[event] && this.handlers[event].slice();
+
+ if (!handlers || !handlers.length) {
+ return;
+ }
+
+ data.type = event;
+
+ data.preventDefault = function () {
+ data.srcEvent.preventDefault();
+ };
+
+ var i = 0;
+
+ while (i < handlers.length) {
+ handlers[i](data);
+ i++;
+ }
+ };
+ /**
+ * @private
+ * destroy the manager and unbinds all events
+ * it doesn't unbind dom events, that is the user own responsibility
+ */
+
+
+ _proto.destroy = function destroy() {
+ this.element && toggleCssProps(this, false);
+ this.handlers = {};
+ this.session = {};
+ this.input.destroy();
+ this.element = null;
+ };
+
+ return Manager;
+ }();
+
+ var SINGLE_TOUCH_INPUT_MAP = {
+ touchstart: INPUT_START,
+ touchmove: INPUT_MOVE,
+ touchend: INPUT_END,
+ touchcancel: INPUT_CANCEL
+ };
+ var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';
+ var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';
+ /**
+ * @private
+ * Touch events input
+ * @constructor
+ * @extends Input
+ */
+
+ var SingleTouchInput =
+ /*#__PURE__*/
+ function (_Input) {
+ _inheritsLoose(SingleTouchInput, _Input);
+
+ function SingleTouchInput() {
+ var _this;
+
+ var proto = SingleTouchInput.prototype;
+ proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;
+ proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;
+ _this = _Input.apply(this, arguments) || this;
+ _this.started = false;
+ return _this;
+ }
+
+ var _proto = SingleTouchInput.prototype;
+
+ _proto.handler = function handler(ev) {
+ var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; // should we handle the touch events?
+
+ if (type === INPUT_START) {
+ this.started = true;
+ }
+
+ if (!this.started) {
+ return;
+ }
+
+ var touches = normalizeSingleTouches.call(this, ev, type); // when done, reset the started state
+
+ if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {
+ this.started = false;
+ }
+
+ this.callback(this.manager, type, {
+ pointers: touches[0],
+ changedPointers: touches[1],
+ pointerType: INPUT_TYPE_TOUCH,
+ srcEvent: ev
+ });
+ };
+
+ return SingleTouchInput;
+ }(Input);
+
+ function normalizeSingleTouches(ev, type) {
+ var all = toArray(ev.touches);
+ var changed = toArray(ev.changedTouches);
+
+ if (type & (INPUT_END | INPUT_CANCEL)) {
+ all = uniqueArray(all.concat(changed), 'identifier', true);
+ }
+
+ return [all, changed];
+ }
+
+ /**
+ * @private
+ * wrap a method with a deprecation warning and stack trace
+ * @param {Function} method
+ * @param {String} name
+ * @param {String} message
+ * @returns {Function} A new function wrapping the supplied method.
+ */
+ function deprecate(method, name, message) {
+ var deprecationMessage = "DEPRECATED METHOD: " + name + "\n" + message + " AT \n";
+ return function () {
+ var e = new Error('get-stack-trace');
+ var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '').replace(/^\s+at\s+/gm, '').replace(/^Object.\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';
+ var log = window.console && (window.console.warn || window.console.log);
+
+ if (log) {
+ log.call(window.console, deprecationMessage, stack);
+ }
+
+ return method.apply(this, arguments);
+ };
+ }
+
+ /**
+ * @private
+ * extend object.
+ * means that properties in dest will be overwritten by the ones in src.
+ * @param {Object} dest
+ * @param {Object} src
+ * @param {Boolean} [merge=false]
+ * @returns {Object} dest
+ */
+
+ var extend = deprecate(function (dest, src, merge) {
+ var keys = Object.keys(src);
+ var i = 0;
+
+ while (i < keys.length) {
+ if (!merge || merge && dest[keys[i]] === undefined) {
+ dest[keys[i]] = src[keys[i]];
+ }
+
+ i++;
+ }
+
+ return dest;
+ }, 'extend', 'Use `assign`.');
+
+ /**
+ * @private
+ * merge the values from src in the dest.
+ * means that properties that exist in dest will not be overwritten by src
+ * @param {Object} dest
+ * @param {Object} src
+ * @returns {Object} dest
+ */
+
+ var merge = deprecate(function (dest, src) {
+ return extend(dest, src, true);
+ }, 'merge', 'Use `assign`.');
+
+ /**
+ * @private
+ * simple class inheritance
+ * @param {Function} child
+ * @param {Function} base
+ * @param {Object} [properties]
+ */
+
+ function inherit(child, base, properties) {
+ var baseP = base.prototype;
+ var childP;
+ childP = child.prototype = Object.create(baseP);
+ childP.constructor = child;
+ childP._super = baseP;
+
+ if (properties) {
+ assign$1(childP, properties);
+ }
+ }
+
+ /**
+ * @private
+ * simple function bind
+ * @param {Function} fn
+ * @param {Object} context
+ * @returns {Function}
+ */
+ function bindFn(fn, context) {
+ return function boundFn() {
+ return fn.apply(context, arguments);
+ };
+ }
+
+ /**
+ * @private
+ * Simple way to create a manager with a default set of recognizers.
+ * @param {HTMLElement} element
+ * @param {Object} [options]
+ * @constructor
+ */
+
+ var Hammer =
+ /*#__PURE__*/
+ function () {
+ var Hammer =
+ /**
+ * @private
+ * @const {string}
+ */
+ function Hammer(element, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return new Manager(element, _extends({
+ recognizers: preset.concat()
+ }, options));
+ };
+
+ Hammer.VERSION = "2.0.17-rc";
+ Hammer.DIRECTION_ALL = DIRECTION_ALL;
+ Hammer.DIRECTION_DOWN = DIRECTION_DOWN;
+ Hammer.DIRECTION_LEFT = DIRECTION_LEFT;
+ Hammer.DIRECTION_RIGHT = DIRECTION_RIGHT;
+ Hammer.DIRECTION_UP = DIRECTION_UP;
+ Hammer.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;
+ Hammer.DIRECTION_VERTICAL = DIRECTION_VERTICAL;
+ Hammer.DIRECTION_NONE = DIRECTION_NONE;
+ Hammer.DIRECTION_DOWN = DIRECTION_DOWN;
+ Hammer.INPUT_START = INPUT_START;
+ Hammer.INPUT_MOVE = INPUT_MOVE;
+ Hammer.INPUT_END = INPUT_END;
+ Hammer.INPUT_CANCEL = INPUT_CANCEL;
+ Hammer.STATE_POSSIBLE = STATE_POSSIBLE;
+ Hammer.STATE_BEGAN = STATE_BEGAN;
+ Hammer.STATE_CHANGED = STATE_CHANGED;
+ Hammer.STATE_ENDED = STATE_ENDED;
+ Hammer.STATE_RECOGNIZED = STATE_RECOGNIZED;
+ Hammer.STATE_CANCELLED = STATE_CANCELLED;
+ Hammer.STATE_FAILED = STATE_FAILED;
+ Hammer.Manager = Manager;
+ Hammer.Input = Input;
+ Hammer.TouchAction = TouchAction;
+ Hammer.TouchInput = TouchInput;
+ Hammer.MouseInput = MouseInput;
+ Hammer.PointerEventInput = PointerEventInput;
+ Hammer.TouchMouseInput = TouchMouseInput;
+ Hammer.SingleTouchInput = SingleTouchInput;
+ Hammer.Recognizer = Recognizer;
+ Hammer.AttrRecognizer = AttrRecognizer;
+ Hammer.Tap = TapRecognizer;
+ Hammer.Pan = PanRecognizer;
+ Hammer.Swipe = SwipeRecognizer;
+ Hammer.Pinch = PinchRecognizer;
+ Hammer.Rotate = RotateRecognizer;
+ Hammer.Press = PressRecognizer;
+ Hammer.on = addEventListeners;
+ Hammer.off = removeEventListeners;
+ Hammer.each = each;
+ Hammer.merge = merge;
+ Hammer.extend = extend;
+ Hammer.bindFn = bindFn;
+ Hammer.assign = assign$1;
+ Hammer.inherit = inherit;
+ Hammer.bindFn = bindFn;
+ Hammer.prefixed = prefixed;
+ Hammer.toArray = toArray;
+ Hammer.inArray = inArray;
+ Hammer.uniqueArray = uniqueArray;
+ Hammer.splitStr = splitStr;
+ Hammer.boolOrFn = boolOrFn;
+ Hammer.hasParent = hasParent;
+ Hammer.addEventListeners = addEventListeners;
+ Hammer.removeEventListeners = removeEventListeners;
+ Hammer.defaults = assign$1({}, defaults, {
+ preset: preset
+ });
+ return Hammer;
+ }();
+
+ // style loader but by script tag, not by the loader.
+
+ var defaults$1 = Hammer.defaults;
+
+ var hammer_esm = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': Hammer,
+ INPUT_START: INPUT_START,
+ INPUT_MOVE: INPUT_MOVE,
+ INPUT_END: INPUT_END,
+ INPUT_CANCEL: INPUT_CANCEL,
+ STATE_POSSIBLE: STATE_POSSIBLE,
+ STATE_BEGAN: STATE_BEGAN,
+ STATE_CHANGED: STATE_CHANGED,
+ STATE_ENDED: STATE_ENDED,
+ STATE_RECOGNIZED: STATE_RECOGNIZED,
+ STATE_CANCELLED: STATE_CANCELLED,
+ STATE_FAILED: STATE_FAILED,
+ DIRECTION_NONE: DIRECTION_NONE,
+ DIRECTION_LEFT: DIRECTION_LEFT,
+ DIRECTION_RIGHT: DIRECTION_RIGHT,
+ DIRECTION_UP: DIRECTION_UP,
+ DIRECTION_DOWN: DIRECTION_DOWN,
+ DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,
+ DIRECTION_VERTICAL: DIRECTION_VERTICAL,
+ DIRECTION_ALL: DIRECTION_ALL,
+ Manager: Manager,
+ Input: Input,
+ TouchAction: TouchAction,
+ TouchInput: TouchInput,
+ MouseInput: MouseInput,
+ PointerEventInput: PointerEventInput,
+ TouchMouseInput: TouchMouseInput,
+ SingleTouchInput: SingleTouchInput,
+ Recognizer: Recognizer,
+ AttrRecognizer: AttrRecognizer,
+ Tap: TapRecognizer,
+ Pan: PanRecognizer,
+ Swipe: SwipeRecognizer,
+ Pinch: PinchRecognizer,
+ Rotate: RotateRecognizer,
+ Press: PressRecognizer,
+ on: addEventListeners,
+ off: removeEventListeners,
+ each: each,
+ merge: merge,
+ extend: extend,
+ assign: assign$1,
+ inherit: inherit,
+ bindFn: bindFn,
+ prefixed: prefixed,
+ toArray: toArray,
+ inArray: inArray,
+ uniqueArray: uniqueArray,
+ splitStr: splitStr,
+ boolOrFn: boolOrFn,
+ hasParent: hasParent,
+ addEventListeners: addEventListeners,
+ removeEventListeners: removeEventListeners,
+ defaults: defaults$1
+ });
+
+ var require$$0 = /*@__PURE__*/getAugmentedNamespace(hammer_esm);
+
+ var Utils = {};
+
+ Object.defineProperty(Utils, "__esModule", { value: true });
+ Utils.delay = Utils.blackPixel = Utils.isMobile = void 0;
+ function isMobile() {
+ return /Android|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i.test(navigator.userAgent);
+ }
+ Utils.isMobile = isMobile;
+ Utils.blackPixel = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';
+ function delay(duration) {
+ return new Promise(function (resolve) { return setTimeout(resolve, duration); });
+ }
+ Utils.delay = delay;
+
+ var hasRequiredComponent_ImageViewer;
+
+ function requireComponent_ImageViewer () {
+ if (hasRequiredComponent_ImageViewer) return Component_ImageViewer;
+ hasRequiredComponent_ImageViewer = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+ var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ };
+ Object.defineProperty(Component_ImageViewer, "__esModule", { value: true });
+ Component_ImageViewer.ComponentImageViewer = void 0;
+ var hammerjs_1 = require$$0;
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var Utils_1 = Utils;
+ var Morph_Components_1 = requireMorph_Components();
+ var ComponentImageViewer = /** @class */ (function (_super) {
+ __extends(ComponentImageViewer, _super);
+ function ComponentImageViewer(options) {
+ var _a, _b, _c, _d, _e;
+ var _this = _super.call(this) || this;
+ _this._rawScale = 1;
+ _this._relativeScale = 1;
+ _this._relativeScaleBase = 1;
+ _this._left = 0;
+ _this._top = 0;
+ _this._firstLoad = true;
+ _this._dragging = false;
+ _this._dragStart = { originX: 0, originY: 0, startX: 0, startY: 0 };
+ window.viewer = _this;
+ _this.background = (_a = options === null || options === void 0 ? void 0 : options.background) !== null && _a !== void 0 ? _a : true;
+ _this.container = (0, CE_1.ce)('div', 'mux_imageviewer');
+ if (options.background != false)
+ _this.container.style.background = 'var(--mux-panel-sub-color)';
+ _this._wrapper = (0, CE_1.ce)('div', 'mux_imageviewer-wrapper');
+ _this._image = (0, CE_1.ce)('img', 'mux_imageviewer-image');
+ _this._image.style.display = 'none';
+ _this._image.addEventListener('load', function () { return __awaiter(_this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ this._stopLoader();
+ return [4 /*yield*/, (0, Utils_1.delay)(10)];
+ case 1:
+ _a.sent();
+ this._image.style.display = 'block';
+ return [2 /*return*/];
+ }
+ });
+ }); });
+ _this._unsupported = (0, CE_1.ce)('div', 'mux_imageviewer-unsupported');
+ _this._unsupportedIcon = (0, CE_1.ce)('span', [
+ 'material-symbols-outlined',
+ 'mux_imageviewer-unsupported-icon',
+ ]);
+ _this._unsupportedText = (0, CE_1.ce)('div', 'mux_text');
+ _this._unsupportedButton = new Morph_Components_1.MorphComponent.Button({
+ mode: 'normal',
+ content: 'Open externally',
+ materialIcon: 'open_in_new',
+ target: function () {
+ window.open(_this._unsupportedTarget, '_blank');
+ },
+ }).container;
+ _this._unsupported.append(_this._unsupportedIcon, _this._unsupportedText, _this._unsupportedButton);
+ _this._wrapper.appendChild(_this._unsupported);
+ _this._wrapper.appendChild(_this._image);
+ _this._loader = (0, CE_1.ce)('div', 'mux_imageviewer-loader');
+ _this._loader.append((0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'), (0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'), (0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'), (0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'));
+ _this._wrapper.appendChild(_this._loader);
+ var controlscontainer = (0, CE_1.ce)('div', 'mux_imageviewer-controlscontainer');
+ var controls = (0, CE_1.ce)('div', 'mux_imageviewer-controls');
+ controlscontainer.appendChild(controls);
+ if ((options === null || options === void 0 ? void 0 : options.controls) != false) {
+ var srcCount = (_c = (_b = options === null || options === void 0 ? void 0 : options.src) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
+ if (srcCount > 1) {
+ _this._thumbnails = (0, CE_1.ce)('div', [
+ 'mux_imageviewer-control',
+ 'mux_active',
+ ]);
+ _this._thumbnails.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'photo_library'));
+ _this._thumbnails.appendChild((0, CE_1.ce)('span', [
+ 'mux_imageviewer-control-badge',
+ 'mux_text',
+ 'mux_tiny',
+ ], null, String(srcCount)));
+ controls.appendChild(_this._thumbnails);
+ }
+ _this._zoomIn = (0, CE_1.ce)('div', 'mux_imageviewer-control');
+ _this._zoomIn.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'zoom_in'));
+ _this._zoomOut = (0, CE_1.ce)('div', 'mux_imageviewer-control');
+ _this._zoomOut.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'zoom_out'));
+ _this._fit = (0, CE_1.ce)('div', 'mux_imageviewer-control');
+ _this._fit.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'fit_screen'));
+ _this._highRes = (0, CE_1.ce)('div', 'mux_imageviewer-control');
+ _this._highRes.style.display = 'none';
+ _this._highRes.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'high_res'));
+ controls.append(_this._zoomIn, _this._zoomOut, _this._fit, _this._highRes);
+ }
+ if ((options === null || options === void 0 ? void 0 : options.downloadable) == true) {
+ var download = (0, CE_1.ce)('div', 'mux_imageviewer-control');
+ download.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'download'));
+ download.addEventListener('click', function () {
+ var a = document.createElement('a');
+ a.href = _this._image.src;
+ a.download = 'image';
+ a.click();
+ });
+ controls.appendChild(download);
+ }
+ if (controls.childNodes.length > 0)
+ _this._wrapper.appendChild(controlscontainer);
+ _this.container.appendChild(_this._wrapper);
+ if ((options === null || options === void 0 ? void 0 : options.src) instanceof Array) {
+ var sources = options.src;
+ if (sources.length == 0)
+ return _this;
+ if (sources.length == 1) {
+ _this.setImage(sources[0]);
+ }
+ else {
+ _this._sources = sources;
+ _this._drawThumbnails(sources, (_d = options === null || options === void 0 ? void 0 : options.thumbnailsOpen) !== null && _d !== void 0 ? _d : ((0, Utils_1.isMobile)() ? false : true));
+ _this._drawNavigationControls();
+ _this._imageCount = sources.length;
+ var startIndex = (_e = options === null || options === void 0 ? void 0 : options.startSrc) !== null && _e !== void 0 ? _e : 0;
+ _this.setImage(sources[startIndex], startIndex);
+ }
+ }
+ else {
+ var source = options.src;
+ _this.setImage(source);
+ }
+ _this.registerListeners();
+ return _this;
+ }
+ ComponentImageViewer.prototype.setImage = function (source, index) {
+ return __awaiter(this, void 0, void 0, function () {
+ var extention;
+ var _this = this;
+ var _a, _b, _c;
+ return __generator(this, function (_d) {
+ switch (_d.label) {
+ case 0:
+ this._startLoader();
+ return [4 /*yield*/, (0, Utils_1.delay)(10)];
+ case 1:
+ _d.sent();
+ this._updateUI(index);
+ if (source.normal.split('/').pop().split('.').length > 1) {
+ extention = (_b = (_a = source.normal.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : '';
+ if (!['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(extention)) {
+ this._unsupportedTarget = (_c = source.full) !== null && _c !== void 0 ? _c : source.normal;
+ if (['mp4', 'webm'].includes(extention)) {
+ return [2 /*return*/, this._showUnsupported('play_arrow', "Videos are not supported yet. Please open the file in a new tab.")];
+ }
+ return [2 /*return*/, this._showUnsupported('error_outline', "File extention ".concat(extention, " is not supported!"))];
+ }
+ }
+ else
+ this._image.onerror = function () {
+ _this._showUnsupported('error_outline', "File extention ".concat(extention, " is not supported!"));
+ };
+ this._image.src = source.normal;
+ if (source.full != undefined) {
+ this._fullSrc = source.full;
+ this._highRes.style.display = 'flex';
+ }
+ return [2 /*return*/];
+ }
+ });
+ });
+ };
+ ComponentImageViewer.prototype.next = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var current, next;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ current = this.container.querySelector('.mux_imageviewer-gallery-thumb.active');
+ if (current == null)
+ return [2 /*return*/];
+ next = current.nextElementSibling;
+ if (next == null)
+ return [2 /*return*/];
+ this._startLoader();
+ return [4 /*yield*/, (0, Utils_1.delay)(10)];
+ case 1:
+ _a.sent();
+ next.click();
+ return [2 /*return*/];
+ }
+ });
+ });
+ };
+ ComponentImageViewer.prototype.previous = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var current, prev;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ current = this.container.querySelector('.mux_imageviewer-gallery-thumb.active');
+ if (current == null)
+ return [2 /*return*/];
+ prev = current.previousElementSibling;
+ if (prev == null)
+ return [2 /*return*/];
+ this._startLoader();
+ return [4 /*yield*/, (0, Utils_1.delay)(10)];
+ case 1:
+ _a.sent();
+ prev.click();
+ return [2 /*return*/];
+ }
+ });
+ });
+ };
+ ComponentImageViewer.prototype._updateUI = function (index) {
+ if (index != undefined) {
+ this.callEvent('imageIndexChanged', index);
+ var previousThumb = this.container.querySelector('.mux_imageviewer-gallery-thumb.active');
+ if (previousThumb != null)
+ previousThumb.classList.remove('active');
+ var thumb = this.container.querySelector(".mux_imageviewer-gallery-thumb[index=\"".concat(index, "\"]"));
+ if (thumb != null) {
+ thumb.classList.add('active');
+ thumb.scrollIntoView({
+ behavior: 'smooth',
+ inline: 'center',
+ });
+ if (this._firstLoad) {
+ this._firstLoad = false;
+ setTimeout(function () {
+ thumb.scrollIntoView({
+ behavior: 'smooth',
+ inline: 'center',
+ });
+ }, 500);
+ }
+ }
+ }
+ if (this._prev != undefined)
+ if (index == 0)
+ this._prev.classList.add('disabled');
+ else
+ this._prev.classList.remove('disabled');
+ if (this._next != undefined)
+ if (index == this._imageCount - 1)
+ this._next.classList.add('disabled');
+ else
+ this._next.classList.remove('disabled');
+ };
+ ComponentImageViewer.prototype._showUnsupported = function (icon, text) {
+ this._unsupportedIcon.innerText = icon;
+ this._unsupportedText.innerText = text;
+ this._stopLoader();
+ this._unsupported.style.display = 'flex';
+ };
+ ComponentImageViewer.prototype._startLoader = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ this._loader.style.display = 'flex';
+ this._unsupported.style.display = 'none';
+ this._image.style.display = 'none';
+ return [4 /*yield*/, (0, Utils_1.delay)(10)];
+ case 1:
+ _a.sent();
+ return [2 /*return*/];
+ }
+ });
+ });
+ };
+ ComponentImageViewer.prototype._stopLoader = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ this._loader.style.display = 'none';
+ this._restartScaling();
+ return [2 /*return*/];
+ });
+ });
+ };
+ ComponentImageViewer.prototype._handleStart = function (originX, originY) {
+ this._dragging = true;
+ this._dragStart = {
+ originX: originX,
+ originY: originY,
+ startX: this._image.offsetLeft,
+ startY: this._image.offsetTop,
+ };
+ };
+ ComponentImageViewer.prototype._handleMove = function (x, y) {
+ var newX = this._validateX(this._dragStart.startX + x - this._dragStart.originX);
+ var newY = this._validateY(this._dragStart.startY + y - this._dragStart.originY);
+ this._left = newX;
+ this._top = newY;
+ this._image.style.left = "".concat(newX, "px");
+ this._image.style.top = "".concat(newY, "px");
+ };
+ ComponentImageViewer.prototype.registerListeners = function () {
+ var _this = this;
+ //Start
+ this.container.addEventListener('mousedown', function (e) {
+ _this._handleStart(e.clientX, e.clientY);
+ });
+ this.container.addEventListener('touchstart', function (e) {
+ _this._handleStart(e.touches[0].clientX, e.touches[0].clientY);
+ });
+ //Move
+ this.container.addEventListener('mousemove', function (e) {
+ if (!_this._dragging)
+ return;
+ if (e.buttons != 1) {
+ _this._dragging = false;
+ return;
+ }
+ _this._handleMove(e.clientX, e.clientY);
+ });
+ this.container.addEventListener('touchmove', function (e) {
+ if (!_this._dragging)
+ return;
+ _this._handleMove(e.touches[0].clientX, e.touches[0].clientY);
+ });
+ //End
+ this.container.addEventListener('mouseup', function (e) {
+ _this._dragging = false;
+ });
+ this.container.addEventListener('touchend', function (e) {
+ _this._dragging = false;
+ });
+ //Zoom
+ this.container.addEventListener('wheel', function (e) {
+ e.preventDefault();
+ _this._setScale(_this._relativeScale + e.deltaY * -0.003);
+ });
+ var mc = new hammerjs_1.default(this._wrapper);
+ mc.add(new hammerjs_1.default.Pinch());
+ var beforeScale = this._relativeScale;
+ mc.on('pinchstart', function (e) {
+ beforeScale = _this._relativeScale;
+ });
+ mc.on('pinch', function (e) {
+ _this._setScale(beforeScale * e.scale);
+ });
+ //Controls
+ if (this._thumbnails != undefined)
+ this._thumbnails.addEventListener('click', function () {
+ if (_this.container.classList.contains('mux_imageviewer-galleryopen')) {
+ _this.container.classList.remove('mux_imageviewer-galleryopen');
+ _this._thumbnails.classList.remove('mux_active');
+ _this.callEvent('thumbnailsOpen', false);
+ }
+ else {
+ _this.container.classList.add('mux_imageviewer-galleryopen');
+ _this._thumbnails.classList.add('mux_active');
+ _this.callEvent('thumbnailsOpen', true);
+ }
+ });
+ if (this._zoomIn != undefined)
+ this._zoomIn.addEventListener('click', function () { return _this.zoomIn(); });
+ if (this._zoomOut != undefined)
+ this._zoomOut.addEventListener('click', function () { return _this.zoomOut(); });
+ if (this._fit != undefined)
+ this._fit.addEventListener('click', function () { return _this.fitToContainer(); });
+ if (this._highRes != undefined)
+ this._highRes.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ this._startLoader();
+ this._image.style.display = 'none';
+ return [4 /*yield*/, (0, Utils_1.delay)(10)];
+ case 1:
+ _a.sent();
+ this._image.src = this._fullSrc;
+ this._highRes.style.display = 'none';
+ return [2 /*return*/];
+ }
+ });
+ }); });
+ };
+ ComponentImageViewer.prototype._drawNavigationControls = function () {
+ var _this = this;
+ this._next = (0, CE_1.ce)('div', [
+ 'mux_imageviewer-navigation',
+ 'mux_imageviewer-navigation-right',
+ ]);
+ this._next.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'navigate_next'));
+ this._next.addEventListener('click', function () {
+ if (_this._next.classList.contains('disabled'))
+ return;
+ _this.next();
+ });
+ this._wrapper.appendChild(this._next);
+ this._prev = (0, CE_1.ce)('div', [
+ 'mux_imageviewer-navigation',
+ 'mux_imageviewer-navigation-left',
+ ]);
+ this._prev.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'navigate_before'));
+ this._prev.addEventListener('click', function () {
+ if (_this._prev.classList.contains('disabled'))
+ return;
+ _this.previous();
+ });
+ this._wrapper.appendChild(this._prev);
+ };
+ ComponentImageViewer.prototype._drawThumbnails = function (sources, openThumbnails) {
+ var _this = this;
+ var gallery = (0, CE_1.ce)('div', 'mux_imageviewer-gallery');
+ if (this.background != false)
+ gallery.style.background = 'var(--mux-panel-color)';
+ sources.forEach(function (source, index) {
+ var _a;
+ var thumb = (0, CE_1.ce)('img', 'mux_imageviewer-gallery-thumb', {
+ index: index,
+ src: (_a = source.thumbnail) !== null && _a !== void 0 ? _a : source.normal,
+ });
+ thumb.addEventListener('click', function () {
+ _this.setImage(source, index);
+ });
+ gallery.appendChild(thumb);
+ });
+ this.container.appendChild(gallery);
+ if (openThumbnails)
+ this.container.classList.add('mux_imageviewer-galleryopen');
+ this.fitToContainer();
+ };
+ ComponentImageViewer.prototype._validateX = function (x) {
+ var bounds = this._image.getBoundingClientRect();
+ var minInlay = this._wrapper.clientWidth - 10;
+ if (bounds.width < this._wrapper.clientWidth) {
+ x = (this._wrapper.clientWidth - bounds.width) / 2;
+ }
+ else {
+ x = Math.max(x, (bounds.width - minInlay) * -1);
+ x = Math.min(x, this._wrapper.clientWidth - minInlay);
+ }
+ return x;
+ };
+ ComponentImageViewer.prototype._validateY = function (y) {
+ var bounds = this._image.getBoundingClientRect();
+ var minInlay = this._wrapper.clientHeight - 10;
+ if (bounds.height < this._wrapper.clientHeight) {
+ y = (this._wrapper.clientHeight - bounds.height) / 2;
+ }
+ else {
+ y = Math.max(y, (bounds.height - minInlay) * -1);
+ y = Math.min(y, this._wrapper.clientHeight - minInlay);
+ }
+ return y;
+ };
+ ComponentImageViewer.prototype._restartScaling = function () {
+ var _this = this;
+ this._calculateRelativeScale(function () {
+ _this.fitToContainer();
+ _this._startScaleClock();
+ });
+ clearTimeout(this._restartScalingRepeat);
+ this._restartScalingRepeat = setTimeout(function () {
+ _this._calculateRelativeScale(function () {
+ _this.fitToContainer();
+ _this._startScaleClock();
+ });
+ }, 1000);
+ };
+ ComponentImageViewer.prototype._calculateRelativeScale = function (readyCallback) {
+ var _this = this;
+ var bounds = this._image.getBoundingClientRect();
+ clearTimeout(this._fitToContainerRetry);
+ if (bounds.width == 0 ||
+ bounds.height == 0 ||
+ this._image.width == 0 ||
+ this._image.height == 0)
+ return (this._fitToContainerRetry = setTimeout(function () { return _this._calculateRelativeScale(readyCallback); }, 100));
+ var maxWidth = this._wrapper.clientWidth - 20;
+ var maxHeight = this._wrapper.clientHeight - 20;
+ this._relativeScaleBase = Math.min(maxWidth / this._image.width, maxHeight / this._image.height);
+ this._setScale(this._relativeScale);
+ if (typeof readyCallback == 'function')
+ readyCallback();
+ };
+ ComponentImageViewer.prototype._setScale = function (factor) {
+ this._relativeScale = Math.min(Math.max(factor, 1), 10);
+ this._setRawScale(this._relativeScaleBase * factor);
+ };
+ ComponentImageViewer.prototype._setRawScale = function (scale) {
+ var bounds = this._image.getBoundingClientRect();
+ this._rawScale = Math.max(scale, this._relativeScaleBase);
+ var widthDiff = bounds.width - this._rawScale * this._image.clientWidth;
+ var heightDiff = bounds.height - this._rawScale * this._image.clientHeight;
+ this._image.style.transform = "scale(".concat(this._rawScale, ")");
+ this._left = this._validateX(this._left + widthDiff / 2);
+ this._image.style.left = "".concat(this._left, "px");
+ this._top = this._validateY(this._top + heightDiff / 2);
+ this._image.style.top = "".concat(this._top, "px");
+ };
+ ComponentImageViewer.prototype._startScaleClock = function () {
+ var _this = this;
+ if (this._startScaleClockInt != undefined)
+ return;
+ var lastWidth = this._wrapper.clientWidth;
+ var lastHeight = this._wrapper.clientHeight;
+ clearInterval(this._startScaleClockInt);
+ this._startScaleClockInt = setInterval(function () {
+ if (_this.container.parentElement == null)
+ return clearInterval(_this._startScaleClockInt);
+ if (lastWidth != _this._wrapper.clientWidth ||
+ lastHeight != _this._wrapper.clientHeight) {
+ lastWidth = _this._wrapper.clientWidth;
+ lastHeight = _this._wrapper.clientHeight;
+ _this._calculateRelativeScale();
+ }
+ }, 100);
+ };
+ ComponentImageViewer.prototype.setImageIndex = function (index) {
+ if (this._sources == undefined)
+ return;
+ if (this._sources[index] == undefined)
+ return;
+ this.setImage(this._sources[index], index);
+ };
+ ComponentImageViewer.prototype.fitToContainer = function () {
+ this._setScale(1);
+ this._left = this._validateX((this._wrapper.clientWidth - this._image.width * this._rawScale) / 2);
+ this._top = this._validateY((this._wrapper.clientHeight - this._image.height * this._rawScale) /
+ 2);
+ this._image.style.left = "".concat(this._left, "px");
+ this._image.style.top = "".concat(this._top, "px");
+ this._image.style.opacity = '1';
+ };
+ ComponentImageViewer.prototype.zoomIn = function () {
+ this._setScale(this._relativeScale + 0.3);
+ };
+ ComponentImageViewer.prototype.zoomOut = function () {
+ this._setScale(this._relativeScale - 0.3);
+ };
+ return ComponentImageViewer;
+ }(baseComponent_1.MUXComponent));
+ Component_ImageViewer.ComponentImageViewer = ComponentImageViewer;
+
+ return Component_ImageViewer;
+ }
+
+ var Component_Input = {};
+
+ var __extends$3 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Input, "__esModule", { value: true });
+ Component_Input.ComponentInput = void 0;
+ var CE_1$3 = CE;
+ var baseComponent_1$3 = baseComponent;
+ var ComponentInput = /** @class */ (function (_super) {
+ __extends$3(ComponentInput, _super);
+ function ComponentInput(options) {
+ var _a;
+ var _this = _super.call(this) || this;
+ _this.container = (0, CE_1$3.ce)('input', 'mux_input', {
+ type: options.type,
+ });
+ var border = (_a = options.border) !== null && _a !== void 0 ? _a : 'hover';
+ if (border == 'always')
+ _this.container.classList.add('mux_input-alwaysborder');
+ else if (border == 'never')
+ _this.container.classList.add('mux_input-noborder');
+ if ((options === null || options === void 0 ? void 0 : options.min) != undefined)
+ _this.container.min = String(options.min);
+ if ((options === null || options === void 0 ? void 0 : options.max) != undefined)
+ _this.container.max = String(options.max);
+ if ((options === null || options === void 0 ? void 0 : options.step) != undefined)
+ _this.container.step = String(options.step);
+ if ((options === null || options === void 0 ? void 0 : options.maxLength) != undefined)
+ _this.container.maxLength = options.maxLength;
+ if ((options === null || options === void 0 ? void 0 : options.readOnly) != undefined)
+ _this.container.readOnly = options.readOnly;
+ if ((options === null || options === void 0 ? void 0 : options.placeholder) != undefined)
+ _this.container.placeholder = options.placeholder;
+ if ((options === null || options === void 0 ? void 0 : options.value) != undefined)
+ _this.container.value = options.value;
+ if ((options === null || options === void 0 ? void 0 : options.valueAsNumber) != undefined)
+ _this.container.valueAsNumber = options.valueAsNumber;
+ if (options.enabled == false)
+ _this.container.setAttribute('disabled', '');
+ _this.container.oninput = function () {
+ return _this.callEvent('input', _this.container.value);
+ };
+ _this.container.onfocus = function () { return _this.callEvent('focus'); };
+ _this.container.onblur = function () { return _this.callEvent('blur'); };
+ return _this;
+ }
+ ComponentInput.prototype.getValue = function () {
+ return this.container.value;
+ };
+ ComponentInput.prototype.getValueAsNumber = function () {
+ return this.container.valueAsNumber;
+ };
+ ComponentInput.prototype.setValue = function (value) {
+ this.container.value = value;
+ };
+ ComponentInput.prototype.setValueAsNumber = function (value) {
+ this.container.valueAsNumber = value;
+ };
+ return ComponentInput;
+ }(baseComponent_1$3.MUXComponent));
+ Component_Input.ComponentInput = ComponentInput;
+
+ var Component_List = {};
+
+ var hasRequiredComponent_List;
+
+ function requireComponent_List () {
+ if (hasRequiredComponent_List) return Component_List;
+ hasRequiredComponent_List = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_List, "__esModule", { value: true });
+ Component_List.ComponentList = void 0;
+ var Index_1 = requireIndex();
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var Sortable = SortableExports;
+ var ComponentList = /** @class */ (function (_super) {
+ __extends(ComponentList, _super);
+ function ComponentList(options) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
+ var _this = _super.call(this) || this;
+ _this.openGroups = [];
+ _this.groupComponents = new Map();
+ _this.options = options;
+ _this.dragable = (_a = options === null || options === void 0 ? void 0 : options.dragable) !== null && _a !== void 0 ? _a : false;
+ _this.hover = (_b = options === null || options === void 0 ? void 0 : options.hover) !== null && _b !== void 0 ? _b : false;
+ _this.grouped = (_c = options === null || options === void 0 ? void 0 : options.grouped) !== null && _c !== void 0 ? _c : false;
+ _this.groupsCloseable = (_d = options === null || options === void 0 ? void 0 : options.groupsCloseable) !== null && _d !== void 0 ? _d : false;
+ _this.sortGroupsAlphabetically =
+ (_e = options === null || options === void 0 ? void 0 : options.sortGroupsAlphabetically) !== null && _e !== void 0 ? _e : false;
+ _this.openGroups = (_f = options === null || options === void 0 ? void 0 : options.groupsOpen) !== null && _f !== void 0 ? _f : [];
+ _this.allowSingleItemGroups = (_g = options === null || options === void 0 ? void 0 : options.allowSingleItemGroups) !== null && _g !== void 0 ? _g : false;
+ _this.highlighted = (_h = options === null || options === void 0 ? void 0 : options.highlightedItem) !== null && _h !== void 0 ? _h : null;
+ if (_this.dragable == true && _this.grouped == true)
+ throw new Error("Unable to use 'grouped' for list component when 'canReorderByDrag' is also enabled. ");
+ _this.container = (0, CE_1.ce)('div', 'mux_list');
+ _this.updateItems((_j = options === null || options === void 0 ? void 0 : options.items) !== null && _j !== void 0 ? _j : []);
+ if (_this.dragable == true) {
+ _this.sortable = new Sortable(_this.container, {
+ ghostClass: 'mux_list-item-dragging',
+ onStart: function () {
+ _this.container.classList.add('mux_list-dragging');
+ },
+ onEnd: function (evt) {
+ _this.container.classList.remove('mux_list-dragging');
+ _this.callEvent('orderUpdated', _this.getCurrentOrder());
+ },
+ });
+ }
+ return _this;
+ }
+ ComponentList.prototype.updateItems = function (items) {
+ var _this = this;
+ var _a;
+ this.container.innerHTML = '';
+ this.groupComponents.clear();
+ if (items == undefined || items.length == 0)
+ return;
+ if (this.grouped) {
+ var groups = [];
+ for (var i = 0; i < items.length; i++) {
+ var group = (_a = items[i].group) !== null && _a !== void 0 ? _a : 'Ungrouped';
+ if (!groups.includes(group)) {
+ groups.push(group);
+ }
+ }
+ if (this.sortGroupsAlphabetically == true)
+ groups.sort();
+ for (var i = 0; i < groups.length; i++) {
+ this.ensureGroup(groups[i]);
+ }
+ }
+ items.forEach(function (item) { return _this.addItem(item); });
+ this.groupComponents.forEach(function (_a, group) {
+ var container = _a.container, content = _a.content;
+ if (content.children.length == 0) {
+ container.parentElement.removeChild(container);
+ _this.groupComponents.delete(group);
+ }
+ else {
+ if (content.children.length == 1 &&
+ _this.allowSingleItemGroups == false) {
+ container.classList.add('mux_group-singular');
+ }
+ else
+ container.classList.remove('mux_group-singular');
+ }
+ });
+ };
+ ComponentList.prototype.getCurrentOrder = function () {
+ return Array.from(this.container.querySelectorAll('.mux_list-item')).map(function (item) {
+ return item.getAttribute('uid');
+ });
+ };
+ ComponentList.prototype.removeItem = function (uniqueIdentifier) {
+ var match = this.container.querySelector(".mux_list-item[uid=\"".concat(uniqueIdentifier, "\"]"));
+ if (match != null)
+ match.remove();
+ this.callEvent('orderUpdated', this.getCurrentOrder());
+ };
+ ComponentList.prototype.addItem = function (item) {
+ var _this = this;
+ var _a, _b;
+ var element = (0, CE_1.ce)('div', 'mux_list-item', {
+ uid: item.uniqueIdentifier,
+ });
+ if (this.hover)
+ element.classList.add('mux_list-item-hover');
+ // if (showSeperator) element.classList.add('mux_list-item-separator');
+ if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.overwriteCursor) != null)
+ element.style.cursor = this.options.overwriteCursor;
+ if (this.highlighted != null &&
+ this.highlighted == item.uniqueIdentifier)
+ element.classList.add('mux_list-item-selected');
+ if (item.tooltip != undefined)
+ element.title = item.tooltip;
+ if (item.enabled == false)
+ element.classList.add('mux_list-item-disabled');
+ var content = (0, CE_1.ce)('div', 'mux_list-item-content');
+ element.appendChild(content);
+ element.onclick = function (e) {
+ var _a;
+ if (((_a = _this.options) === null || _a === void 0 ? void 0 : _a.highlightOnClick) == true)
+ _this.highlight(item.uniqueIdentifier);
+ if (item.click != undefined)
+ item.click();
+ };
+ if (item.materialIcon != undefined) {
+ var mi = (0, CE_1.ce)('span', ['mux_list-item-icon', 'material-symbols-outlined'], null, item.materialIcon);
+ content.appendChild(mi);
+ if (item.materialIconColor != undefined)
+ mi.style.color = item.materialIconColor;
+ }
+ else if (item.icon != undefined)
+ content.appendChild((0, CE_1.ce)('img', 'mux_list-item-icon', { src: item.icon }));
+ var text = (0, CE_1.ce)('div', 'mux_list-item-text');
+ if (item.text != undefined)
+ text.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_normal'], null, item.text));
+ if (item.subText != undefined)
+ text.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, item.subText));
+ content.appendChild(text);
+ if (item.actions != undefined && item.actions.length > 0) {
+ var actions = (0, CE_1.ce)('div', 'mux_list-item-actions');
+ var _loop_1 = function (i) {
+ action = (0, CE_1.ce)('div', 'mux_list-item-action');
+ if (item.actions[i].tooltip != undefined)
+ action.title = item.actions[i].tooltip;
+ if (item.actions[i].materialIcon != undefined)
+ action.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, item.actions[i].materialIcon));
+ else if (item.actions[i].icon != undefined)
+ action.appendChild((0, CE_1.ce)('img', null, { src: item.actions[i].icon }));
+ action.onclick = function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ item.actions[i].click();
+ };
+ actions.appendChild(action);
+ };
+ var action;
+ for (var i = 0; i < item.actions.length; i++) {
+ _loop_1(i);
+ }
+ content.appendChild(actions);
+ }
+ if (this.grouped == true) {
+ var group = (_b = item.group) !== null && _b !== void 0 ? _b : 'Ungrouped';
+ var content = this.ensureGroup(group).content;
+ content.appendChild(element);
+ }
+ else
+ this.container.appendChild(element);
+ this.size = this.container.querySelectorAll('.mux_list-item').length;
+ };
+ ComponentList.prototype.highlight = function (uniqueIdentifier) {
+ this.highlighted = uniqueIdentifier;
+ this.container
+ .querySelectorAll('.mux_list-item')
+ .forEach(function (item) {
+ var uid = item.getAttribute('uid');
+ if (uid == uniqueIdentifier) {
+ item.classList.add('mux_list-item-selected');
+ item.scrollIntoView({
+ behavior: 'smooth',
+ block: 'center',
+ });
+ }
+ else
+ item.classList.remove('mux_list-item-selected');
+ });
+ };
+ ComponentList.prototype.ensureGroup = function (group) {
+ var _this = this;
+ if (this.groupComponents.has(group))
+ return this.groupComponents.get(group);
+ var groupComponent = new Index_1.MorphComponent.Group({
+ title: group,
+ open: this.openGroups.includes(group) ||
+ this.openGroups.includes('*') ||
+ this.groupsCloseable == false,
+ closeable: this.groupsCloseable,
+ });
+ groupComponent.on('openState', function (state) {
+ if (state) {
+ if (!_this.openGroups.includes(group))
+ _this.openGroups.push(group);
+ }
+ else {
+ if (_this.openGroups.includes(group))
+ _this.openGroups.splice(_this.openGroups.indexOf(group), 1);
+ }
+ _this.callEvent('openGroupsUpdated', _this.openGroups);
+ });
+ this.container.appendChild(groupComponent.container);
+ this.groupComponents.set(group, groupComponent);
+ return this.groupComponents.get(group);
+ };
+ return ComponentList;
+ }(baseComponent_1.MUXComponent));
+ Component_List.ComponentList = ComponentList;
+
+ return Component_List;
+ }
+
+ var Component_MenuBar = {};
+
+ var hasRequiredComponent_MenuBar;
+
+ function requireComponent_MenuBar () {
+ if (hasRequiredComponent_MenuBar) return Component_MenuBar;
+ hasRequiredComponent_MenuBar = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
+ __assign = Object.assign || function(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+ Object.defineProperty(Component_MenuBar, "__esModule", { value: true });
+ Component_MenuBar.ComponentMenuBar = void 0;
+ var Index_1 = requireIndex();
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var ComponentMenuBar = /** @class */ (function (_super) {
+ __extends(ComponentMenuBar, _super);
+ function ComponentMenuBar(options) {
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
+ var _this = _super.call(this) || this;
+ _this.enabledStates = {};
+ _this._leftItems = [];
+ _this._rightItems = [];
+ _this.mobileIgnoreItems = [];
+ _this._leftItems = (_a = options.left) !== null && _a !== void 0 ? _a : [];
+ _this._rightItems = (_b = options.right) !== null && _b !== void 0 ? _b : [];
+ _this.contextMaterialIconColor =
+ (_c = options.contextMaterialIconColor) !== null && _c !== void 0 ? _c : 'var(--mux-primary-color)';
+ _this.contextMenuAlign = (_d = options.contextMenuAlign) !== null && _d !== void 0 ? _d : 'below';
+ _this.contextAlignSide = {
+ below: 'center',
+ left: 'right',
+ right: 'left',
+ }[_this.contextMenuAlign];
+ _this.container = (0, CE_1.ce)('div', 'mux_menubar');
+ _this.size = (_e = options.size) !== null && _e !== void 0 ? _e : 'normal';
+ _this.container.classList.add("mux_menubar-".concat(_this.size));
+ _this.direction = (_f = options === null || options === void 0 ? void 0 : options.direction) !== null && _f !== void 0 ? _f : 'horizontal';
+ _this.container.classList.add("mux_menubar-direction-".concat(_this.direction));
+ _this.leftContainer = (0, CE_1.ce)('div', ['mux_menubar-locater', 'mux_left']);
+ _this.rightContainer = (0, CE_1.ce)('div', ['mux_menubar-locater', 'mux_right']);
+ _this.mobileContainer = (0, CE_1.ce)('div', 'mux_menubar-mobile');
+ var mobileRightItems = (0, CE_1.ce)('div', [
+ 'mux_menubar-mobile-items',
+ 'mux_right',
+ ]);
+ ((_h = (_g = options === null || options === void 0 ? void 0 : options.mobile) === null || _g === void 0 ? void 0 : _g.right) !== null && _h !== void 0 ? _h : []).forEach(function (item) {
+ return _this.addItem(item, mobileRightItems);
+ });
+ var mobileLeftItems = (0, CE_1.ce)('div', [
+ 'mux_menubar-mobile-items',
+ 'mux_left',
+ ]);
+ ((_k = (_j = options === null || options === void 0 ? void 0 : options.mobile) === null || _j === void 0 ? void 0 : _j.left) !== null && _k !== void 0 ? _k : []).forEach(function (item) {
+ return _this.addItem(item, mobileLeftItems);
+ });
+ if (((_l = options === null || options === void 0 ? void 0 : options.mobile) === null || _l === void 0 ? void 0 : _l.logo) != undefined) {
+ mobileLeftItems.style.left = '50px';
+ var logo = (0, CE_1.ce)('a', 'mux_menubar-mobile-logo', {
+ href: options.mobile.logo.href,
+ });
+ logo.appendChild((0, CE_1.ce)('img', null, { src: options.mobile.logo.src }));
+ _this.mobileContainer.appendChild(logo);
+ }
+ _this.mobileIgnoreItems = (_o = (_m = options === null || options === void 0 ? void 0 : options.mobile) === null || _m === void 0 ? void 0 : _m.ignoreItems) !== null && _o !== void 0 ? _o : [];
+ _this.addItem({
+ type: 'icon',
+ materialIcon: 'menu',
+ click: function () {
+ _this.openMobileMenu();
+ // this.rightContainer.classList.toggle('mux_menubar-visible');
+ },
+ }, mobileRightItems);
+ _this.mobileContainer.append(mobileLeftItems, mobileRightItems);
+ _this.container.append(_this.leftContainer, _this.rightContainer, _this.mobileContainer);
+ if ((options === null || options === void 0 ? void 0 : options.left) != undefined)
+ options.left.forEach(function (item) {
+ return _this.addItem(item, _this.leftContainer);
+ });
+ if ((options === null || options === void 0 ? void 0 : options.right) != undefined)
+ options.right.forEach(function (item) {
+ return _this.addItem(item, _this.rightContainer);
+ });
+ if (_this.direction == 'horizontal') {
+ _this.calculateSizing();
+ window.addEventListener('resize', function () {
+ _this.calculateSizing();
+ });
+ var c = 0;
+ _this.sizeClock = setInterval(function () {
+ if (c++ > 200)
+ clearInterval(_this.sizeClock);
+ if (_this.container.parentElement != null) {
+ clearInterval(_this.sizeClock);
+ _this.calculateSizing();
+ }
+ }, 10);
+ }
+ else {
+ _this.leftContainer.classList.add('mux_menubar-visible');
+ _this.rightContainer.classList.add('mux_menubar-visible');
+ }
+ return _this;
+ }
+ ComponentMenuBar.prototype.calculateSizing = function () {
+ var menuSize = this.leftContainer.clientWidth + this.rightContainer.clientWidth;
+ var containerWidth = this.container.clientWidth;
+ if (menuSize != 0 && containerWidth != 0)
+ clearInterval(this.sizeClock);
+ if (menuSize > containerWidth) {
+ this.leftContainer.classList.remove('mux_menubar-visible');
+ this.rightContainer.classList.remove('mux_menubar-visible');
+ this.mobileContainer.classList.add('mux_menubar-visible');
+ }
+ else {
+ this.leftContainer.classList.add('mux_menubar-visible');
+ this.rightContainer.classList.add('mux_menubar-visible');
+ this.mobileContainer.classList.remove('mux_menubar-visible');
+ }
+ };
+ ComponentMenuBar.prototype.addItem = function (item, target) {
+ var _this = this;
+ if (item.type != 'image') {
+ var element = (0, CE_1.ce)(item.href != undefined ? 'a' : 'div', 'mux_menubar-item');
+ if (item.uniqueIdentifier != undefined)
+ element.setAttribute('uid', item.uniqueIdentifier);
+ if (item.enabled != undefined && item.enabled == false)
+ element.classList.add('mux_menubar-item-disabled');
+ if (item.href != undefined)
+ element.setAttribute('href', item.href);
+ if (item.tooltip != undefined)
+ element.title = item.tooltip;
+ if (item.selected == true)
+ element.classList.add('mux_menubar-item-selected');
+ if (item.materialIcon != undefined) {
+ var materialIcon = (0, CE_1.ce)('span', [
+ 'mux_menubar-item-materialicon',
+ 'material-symbols-outlined',
+ ], null, item.materialIcon);
+ if (item.materialIconTransform != undefined)
+ materialIcon.style.transform = item.materialIconTransform;
+ element.appendChild(materialIcon);
+ }
+ switch (item.type) {
+ case 'icon':
+ element.classList.add('mux_menubar-item-icon');
+ element.onclick = item.click;
+ break;
+ case 'normal':
+ element.classList.add('mux_menubar-item-normal');
+ element.appendChild((0, CE_1.ce)('p', ['mux_text', "mux_".concat(this.size)], null, item.text));
+ break;
+ }
+ if (item.children == undefined || item.children.length == 0) {
+ if (item.click != undefined && item.href == undefined)
+ element.onclick = item.click;
+ }
+ else {
+ // if (item.type == 'normal')
+ element.appendChild((0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_menubar-item-arrow'], null, "keyboard_arrow_".concat({ below: 'down', left: 'left', right: 'right' }[this.contextMenuAlign])));
+ element.onclick = function () {
+ var _a;
+ if (element.classList.contains('mux_menubar-item-disabled'))
+ return;
+ var bounds = element.getBoundingClientRect();
+ element.classList.add('mux_menubar-item-selected');
+ for (var i = 0; i < item.children.length; i++)
+ if (((_a = item.children[i]) === null || _a === void 0 ? void 0 : _a.uniqueIdentifier) != undefined) {
+ if (_this.enabledStates[item.children[i].uniqueIdentifier] != undefined)
+ item.children[i].enabled =
+ _this.enabledStates[item.children[i].uniqueIdentifier];
+ }
+ var x;
+ var y;
+ if (_this.contextMenuAlign == 'below') {
+ x = bounds.x + bounds.width / 2;
+ y = bounds.y + bounds.height;
+ }
+ else if (_this.contextMenuAlign == 'left') {
+ x = bounds.x;
+ y = bounds.y;
+ }
+ else if (_this.contextMenuAlign == 'right') {
+ x = bounds.x + bounds.width;
+ y = bounds.y;
+ }
+ _this.dropdown = new Index_1.MorphComponent.ContextMenu({
+ x: x,
+ y: y,
+ align: _this.contextAlignSide,
+ items: item.children,
+ materialIconColor: _this.contextMaterialIconColor,
+ });
+ _this.dropdown.on('close', function () {
+ element.classList.remove('mux_menubar-item-selected');
+ });
+ };
+ }
+ target.appendChild(element);
+ }
+ else {
+ var icon = (0, CE_1.ce)(item.href != undefined ? 'a' : 'div', 'mux_menubar-image');
+ if (item.href != undefined)
+ icon.href = item.href;
+ icon.appendChild((0, CE_1.ce)('img', null, { src: item.url }));
+ target.appendChild(icon);
+ }
+ };
+ ComponentMenuBar.prototype.setSelected = function (uniqueIdentifier) {
+ this.selected = uniqueIdentifier;
+ this.container
+ .querySelectorAll('.mux_menubar-item')
+ .forEach(function (item) {
+ if (item.getAttribute('uid') == uniqueIdentifier &&
+ uniqueIdentifier != null)
+ item.classList.add('mux_menubar-item-selected');
+ else
+ item.classList.remove('mux_menubar-item-selected');
+ });
+ if (this.mobileMenu != null)
+ this.mobileMenu.setSelected(uniqueIdentifier);
+ };
+ ComponentMenuBar.prototype.setEnabled = function (uniqueIdentifier, enabled) {
+ var item = this.container.querySelector(".mux_menubar-item[uid=\"".concat(uniqueIdentifier, "\"]"));
+ if (item == null)
+ return;
+ if (enabled)
+ item.classList.remove('mux_menubar-item-disabled');
+ else
+ item.classList.add('mux_menubar-item-disabled');
+ };
+ ComponentMenuBar.prototype.openMobileMenu = function () {
+ var _this = this;
+ var container = (0, CE_1.ce)('div', 'mux_mobilemenu');
+ var inner = (0, CE_1.ce)('div', 'mux_mobilemenu-inner');
+ this.mobileMenu = new ComponentMenuBar({
+ direction: 'vertical',
+ left: this._leftItems
+ .filter(function (item) {
+ if (item.uniqueIdentifier == undefined)
+ return true;
+ return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);
+ })
+ .map(function (item) {
+ if (item.type !== 'icon')
+ return item;
+ return __assign(__assign({}, item), { type: 'normal' });
+ }),
+ right: this._rightItems
+ .filter(function (item) {
+ if (item.uniqueIdentifier == undefined)
+ return true;
+ return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);
+ })
+ .map(function (item) {
+ if (item.type !== 'icon')
+ return item;
+ return __assign(__assign({}, item), { type: 'normal' });
+ }),
+ });
+ this.mobileMenu.setSelected(this.selected);
+ inner.appendChild(this.mobileMenu.container);
+ container.appendChild(inner);
+ document.body.appendChild(container);
+ container.animate({ opacity: '1' }, { duration: 200 }).onfinish =
+ function () {
+ container.style.opacity = '1';
+ };
+ inner.animate({ transform: 'translateX(0%)' }, { duration: 200, easing: 'ease-out' }).onfinish = function () {
+ inner.style.transform = 'translateX(0%)';
+ };
+ container.onclick = function () {
+ container.animate({ opacity: '0' }, { duration: 200 }).onfinish =
+ function () {
+ container.style.opacity = '0';
+ };
+ inner.animate({ transform: 'translateX(100%)' }, { duration: 200, easing: 'ease-in' }).onfinish = function () {
+ inner.style.transform = 'translateX(100%)';
+ _this.mobileMenu = null;
+ container.remove();
+ };
+ };
+ inner.onclick = function (e) {
+ e.stopPropagation();
+ };
+ };
+ return ComponentMenuBar;
+ }(baseComponent_1.MUXComponent));
+ Component_MenuBar.ComponentMenuBar = ComponentMenuBar;
+
+ return Component_MenuBar;
+ }
+
+ var Component_PaletteCheckbox = {};
+
+ var hasRequiredComponent_PaletteCheckbox;
+
+ function requireComponent_PaletteCheckbox () {
+ if (hasRequiredComponent_PaletteCheckbox) return Component_PaletteCheckbox;
+ hasRequiredComponent_PaletteCheckbox = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_PaletteCheckbox, "__esModule", { value: true });
+ Component_PaletteCheckbox.ComponentPaletteCheckbox = void 0;
+ var Index_1 = requireIndex();
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var ComponentPaletteCheckbox = /** @class */ (function (_super) {
+ __extends(ComponentPaletteCheckbox, _super);
+ function ComponentPaletteCheckbox(options) {
+ var _a;
+ var _this = _super.call(this) || this;
+ _this.defaultView = 'recent_and_rest';
+ _this.lastChecked = [];
+ _this.recents = [];
+ _this.pid = options === null || options === void 0 ? void 0 : options.paletteUniqueIdentifier;
+ // if (pid != undefined && pid.length > 0)
+ // lastChecked = Validator.array(
+ // FieldStorage.getChannelValue('palette_checkbox', pid),
+ // []
+ // );
+ _this.container = (0, CE_1.ce)('div', ['mux_palette', 'mux_palette-checkboxes']);
+ _this.container.onclick = function () { return _this.close(); };
+ _this.inner = (0, CE_1.ce)('div', 'mux_palette-inner');
+ _this.inner.onclick = function (e) { return e.stopPropagation(); };
+ _this.results = (0, CE_1.ce)('div', ['mux_palette-results']);
+ _this.inner.appendChild(_this.results);
+ _this.container.appendChild(_this.inner);
+ if ((options === null || options === void 0 ? void 0 : options.title) != undefined && options.title.trim().length > 0) {
+ _this.showResultLabel(options.title);
+ }
+ ((_a = options === null || options === void 0 ? void 0 : options.items) !== null && _a !== void 0 ? _a : []).forEach(function (item, i) {
+ return _this.renderSearchResult(item, i);
+ });
+ document.body.appendChild(_this.container);
+ setTimeout(function () {
+ _this.container.style.opacity = '1';
+ _this.inner.style.opacity = '1';
+ _this.inner.style.transform = 'scale(1)';
+ }, 20);
+ _this.registerKeyListener();
+ return _this;
+ }
+ ComponentPaletteCheckbox.prototype.close = function () {
+ var _this = this;
+ this.overwrite.close();
+ this.container.style.pointerEvents = 'none';
+ this.container.style.opacity = '0';
+ this.inner.style.opacity = '0';
+ this.inner.style.transform = 'scale(0.8)';
+ setTimeout(function () { return _this.destroy(); }, 400);
+ this.callEvent('close');
+ };
+ ComponentPaletteCheckbox.prototype.getChecked = function () {
+ var selected = Array.from(this.results.querySelectorAll('.mux_palette-results-item-checked')).map(function (item) {
+ return item.getAttribute('uid');
+ });
+ this.lastChecked = selected;
+ // FieldStorage.setChannelValue('palette_checkbox', this.pid, selected);
+ return selected;
+ };
+ ComponentPaletteCheckbox.prototype.renderSearchResult = function (result, index) {
+ var _this = this;
+ if (result.uniqueIdentifier == undefined)
+ throw new Error("Missing property 'uniqueIdentifier' inside one or more items of component 'PaletteCheckbox'");
+ var item = (0, CE_1.ce)('div', 'mux_palette-results-item', {
+ uid: result.uniqueIdentifier,
+ });
+ if (this.lastChecked.length == 0 && result.defaultValue == true)
+ item.classList.add('mux_palette-results-item-checked');
+ if (this.lastChecked.includes(result.uniqueIdentifier))
+ item.classList.add('mux_palette-results-item-checked');
+ if (index == 0)
+ item.classList.add('mux_palette-results-item-selected');
+ item.addEventListener('click', function () {
+ if (item.classList.contains('mux_palette-results-item-checked'))
+ item.classList.remove('mux_palette-results-item-checked');
+ else
+ item.classList.add('mux_palette-results-item-checked');
+ _this.getChecked();
+ });
+ var checkbox = (0, CE_1.ce)('div', 'mux_palette-results-item-checkbox');
+ checkbox.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'done'));
+ item.appendChild(checkbox);
+ if (result.materialIcon != undefined) {
+ var icon = (0, CE_1.ce)('div', 'material-symbols-outlined', null, result.materialIcon);
+ if (result.materialIconTransform != undefined)
+ icon.style.transform = result.materialIconTransform;
+ item.appendChild(icon);
+ }
+ else if (result.iconSrc != undefined)
+ item.appendChild((0, CE_1.ce)('img', 'mux_palette-results-item-icon', {
+ src: result.iconSrc,
+ }));
+ var text = (0, CE_1.ce)('div', [
+ 'mux_palette-results-item-text',
+ 'mux_text',
+ 'mux_small',
+ ]);
+ if (result.prefix != undefined)
+ text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.prefix.trim()));
+ text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-main', null, result.name.trim()));
+ if (result.suffix != undefined)
+ text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.suffix.trim()));
+ item.appendChild(text);
+ item.appendChild((0, CE_1.ce)('div', [
+ 'mux_palette-results-item-selectedtext',
+ 'mux_text',
+ 'mux_tiny',
+ ], null, ' to toggle'));
+ this.results.appendChild(item);
+ return item;
+ };
+ ComponentPaletteCheckbox.prototype.registerKeyListener = function () {
+ var _this = this;
+ this.overwrite = Index_1.MorphKey.createOverwrite();
+ this.overwrite.bind('Escape', function () { return _this.close(); });
+ this.overwrite.bind('Enter', function () {
+ var checked = _this.getChecked();
+ _this.callEvent('selected', checked);
+ _this.close();
+ });
+ this.overwrite.bind(' ', function () {
+ var selected = _this.getSelectedResult();
+ if (selected != null)
+ selected.click();
+ });
+ this.overwrite.bind('ArrowUp', function () {
+ var selected = _this.getSelectedResult();
+ if (selected != null &&
+ selected.previousElementSibling != null &&
+ selected.previousElementSibling.classList.contains('mux_palette-results-item')) {
+ selected.classList.remove('mux_palette-results-item-selected');
+ selected.previousElementSibling.classList.add('mux_palette-results-item-selected');
+ setTimeout(function () {
+ if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)
+ selected.previousElementSibling.scrollIntoView({
+ behavior: 'auto',
+ block: 'center',
+ inline: 'center',
+ });
+ }, 50);
+ }
+ });
+ this.overwrite.bind('ArrowDown', function () {
+ var selected = _this.getSelectedResult();
+ if (selected != null &&
+ selected.nextElementSibling != null &&
+ selected.nextElementSibling.classList.contains('mux_palette-results-item')) {
+ selected.classList.remove('mux_palette-results-item-selected');
+ selected.nextElementSibling.classList.add('mux_palette-results-item-selected');
+ setTimeout(function () {
+ if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)
+ selected.previousElementSibling.scrollIntoView({
+ behavior: 'auto',
+ block: 'center',
+ inline: 'center',
+ });
+ }, 50);
+ }
+ });
+ };
+ ComponentPaletteCheckbox.prototype.showResultLabel = function (text, materialIcon) {
+ var label = (0, CE_1.ce)('div', 'mux_palette-results-header');
+ if (materialIcon != undefined)
+ label.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, materialIcon));
+ label.appendChild((0, CE_1.ce)('span', null, null, text));
+ this.results.appendChild(label);
+ };
+ ComponentPaletteCheckbox.prototype.getSelectedResult = function () {
+ if (this.results == null)
+ return null;
+ return this.results.querySelector('.mux_palette-results-item-selected');
+ };
+ return ComponentPaletteCheckbox;
+ }(baseComponent_1.MUXComponent));
+ Component_PaletteCheckbox.ComponentPaletteCheckbox = ComponentPaletteCheckbox;
+
+ return Component_PaletteCheckbox;
+ }
+
+ var Component_PaletteSearch = {};
+
+ var hasRequiredComponent_PaletteSearch;
+
+ function requireComponent_PaletteSearch () {
+ if (hasRequiredComponent_PaletteSearch) return Component_PaletteSearch;
+ hasRequiredComponent_PaletteSearch = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
+ __assign = Object.assign || function(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+ var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+ };
+ Object.defineProperty(Component_PaletteSearch, "__esModule", { value: true });
+ Component_PaletteSearch.ComponentPaletteSearch = void 0;
+ var Index_1 = requireIndex();
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var ComponentPaletteSearch = /** @class */ (function (_super) {
+ __extends(ComponentPaletteSearch, _super);
+ function ComponentPaletteSearch(options) {
+ var _a, _b, _c;
+ var _this = _super.call(this) || this;
+ _this.defaultView = 'recent_and_rest';
+ _this.recents = [];
+ _this.pid = options === null || options === void 0 ? void 0 : options.paletteUniqueIdentifier;
+ _this.defaultView = (_a = options === null || options === void 0 ? void 0 : options.defaultView) !== null && _a !== void 0 ? _a : 'recent_and_rest';
+ if ((_this.defaultView == 'recent' ||
+ _this.defaultView == 'recent_and_rest') &&
+ (_this.pid == undefined || _this.pid.trim().length == 0))
+ throw new Error("Property 'paletteUniqueIdentifier' is required in component 'PaletteSearch' to use recents.");
+ // if (pid != undefined && pid.length > 0)
+ // recents = Validator.array(
+ // FieldStorage.getChannelValue('palette_search', pid),
+ // []
+ // );
+ _this.container = (0, CE_1.ce)('div', 'mux_palette');
+ _this.container.onclick = function () { return _this.close(); };
+ _this.inner = (0, CE_1.ce)('div', 'mux_palette-inner');
+ _this.inner.onclick = function (e) { return e.stopPropagation(); };
+ var input = (0, CE_1.ce)('input', 'mux_palette-input', {
+ type: 'text',
+ placeholder: (_b = options === null || options === void 0 ? void 0 : options.placeholder) !== null && _b !== void 0 ? _b : 'Starting typing to search...',
+ });
+ input.oninput = function () { return _this.handleInputUpdate(input.value); };
+ _this.inner.appendChild(input);
+ _this.results = (0, CE_1.ce)('div', ['mux_palette-results']);
+ _this.inner.appendChild(_this.results);
+ _this.container.appendChild(_this.inner);
+ document.body.appendChild(_this.container);
+ _this.items = (_c = options === null || options === void 0 ? void 0 : options.items) !== null && _c !== void 0 ? _c : [];
+ _this.registerKeyListener();
+ _this.showDefaultView();
+ setTimeout(function () {
+ _this.container.style.opacity = '1';
+ _this.inner.style.opacity = '1';
+ _this.inner.style.transform = 'scale(1)';
+ input.focus();
+ }, 20);
+ return _this;
+ }
+ ComponentPaletteSearch.prototype.close = function () {
+ var _this = this;
+ this.overwrite.close();
+ this.container.style.pointerEvents = 'none';
+ this.container.style.opacity = '0';
+ this.inner.style.opacity = '0';
+ this.inner.style.transform = 'scale(0.8)';
+ setTimeout(function () { return _this.destroy(); }, 400);
+ this.callEvent('close');
+ };
+ ComponentPaletteSearch.prototype.registerKeyListener = function () {
+ var _this = this;
+ this.overwrite = Index_1.MorphKey.createOverwrite();
+ this.overwrite.bind('Escape', function () { return _this.close(); });
+ this.overwrite.bind('Enter', function () {
+ var selected = _this.getSelectedResult();
+ if (selected != null)
+ selected.click();
+ });
+ this.overwrite.bind('ArrowUp', function () {
+ var selected = _this.getSelectedResult();
+ if (selected != null &&
+ selected.previousElementSibling != null &&
+ selected.previousElementSibling.classList.contains('mux_palette-results-item')) {
+ selected.classList.remove('mux_palette-results-item-selected');
+ selected.previousElementSibling.classList.add('mux_palette-results-item-selected');
+ setTimeout(function () {
+ if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)
+ selected.previousElementSibling.scrollIntoView({
+ behavior: 'auto',
+ block: 'center',
+ inline: 'center',
+ });
+ }, 50);
+ }
+ });
+ this.overwrite.bind('ArrowDown', function () {
+ var selected = _this.getSelectedResult();
+ if (selected != null &&
+ selected.nextElementSibling != null &&
+ selected.nextElementSibling.classList.contains('mux_palette-results-item')) {
+ selected.classList.remove('mux_palette-results-item-selected');
+ selected.nextElementSibling.classList.add('mux_palette-results-item-selected');
+ setTimeout(function () {
+ if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)
+ selected.previousElementSibling.scrollIntoView({
+ behavior: 'auto',
+ block: 'center',
+ inline: 'center',
+ });
+ }, 50);
+ }
+ });
+ };
+ ComponentPaletteSearch.prototype.search = function (query) {
+ var tagwords = this.getTags(query);
+ var results = [];
+ for (var i = 0; i < this.items.length; i++) {
+ var item = this.items[i];
+ var score = this.getScore(tagwords, item.tags != undefined ? item.tags : this.getTags(item.name)) *
+ (item.scoreWeight != undefined && !isNaN(item.scoreWeight)
+ ? item.scoreWeight
+ : 1);
+ if (score > 0)
+ results.push(__assign({ score: score }, item));
+ }
+ return results;
+ };
+ ComponentPaletteSearch.prototype.addToRecents = function (recentId) {
+ var newRecents = [];
+ __spreadArray([recentId], this.recents, true).forEach(function (id) {
+ if (!newRecents.includes(id))
+ newRecents.push(id);
+ });
+ if (newRecents.length > 5)
+ newRecents.splice(5, newRecents.length - 5);
+ this.recents = newRecents;
+ // FieldStorage.setChannelValue('palette_search', pid, this.recents);
+ };
+ ComponentPaletteSearch.prototype.renderSearchResult = function (result, index) {
+ var _this = this;
+ var item = (0, CE_1.ce)(result.href != undefined ? 'a' : 'div', 'mux_palette-results-item');
+ if (result.href != undefined)
+ item.href = result.href;
+ else if (result.click != undefined)
+ item.addEventListener('click', function () {
+ result.click();
+ _this.close();
+ });
+ if (this.pid != undefined &&
+ this.pid.length > 0 &&
+ (result.uniqueIdentifier != undefined || result.href != undefined)) {
+ item.addEventListener('click', function () {
+ var _a;
+ return _this.addToRecents((_a = result.uniqueIdentifier) !== null && _a !== void 0 ? _a : "address:".concat(result.href));
+ });
+ }
+ if (index == 0)
+ item.classList.add('mux_palette-results-item-selected');
+ if (result.materialIcon != undefined) {
+ var icon = (0, CE_1.ce)('span', 'material-symbols-outlined', null, result.materialIcon);
+ if (result.materialIconTransform != undefined)
+ icon.style.transform = result.materialIconTransform;
+ item.appendChild(icon);
+ }
+ else if (result.iconSrc != undefined)
+ item.appendChild((0, CE_1.ce)('img', 'mux_palette-results-item-icon', {
+ src: result.iconSrc,
+ }));
+ var text = (0, CE_1.ce)('div', [
+ 'mux_palette-results-item-text',
+ 'mux_text',
+ 'mux_small',
+ ]);
+ if (result.prefix != undefined)
+ text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.prefix.trim()));
+ text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-main', null, result.name.trim()));
+ if (result.suffix != undefined)
+ text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.suffix.trim()));
+ item.appendChild(text);
+ // if (result.selectedText != undefined) {
+ // item.appendChild(
+ // ce(
+ // 'div',
+ // ['mux_palette-results-item-selectedtext', 'mux_text', 'mux_tiny'],
+ // null,
+ // result.selectedText
+ // )
+ // );
+ // }
+ this.results.appendChild(item);
+ return item;
+ };
+ ComponentPaletteSearch.prototype.showDefaultView = function () {
+ var _this = this;
+ this.results.innerHTML = '';
+ switch (this.defaultView) {
+ case 'all':
+ this.items.forEach(function (item, i) {
+ return _this.renderSearchResult(item, i);
+ });
+ break;
+ case 'none':
+ return;
+ case 'recent_and_rest':
+ var recentItems = this.getRecentItems();
+ if (recentItems.length > 0)
+ this.showResultLabel('Recent actions', 'schedule');
+ recentItems.forEach(function (item, i) {
+ return _this.renderSearchResult(item, i);
+ });
+ var otherItems = this.items.filter(function (item) {
+ var _a;
+ if (item.uniqueIdentifier == undefined && item.href == null)
+ return true;
+ return !_this.recents.includes((_a = item.uniqueIdentifier) !== null && _a !== void 0 ? _a : "address:".concat(item.href));
+ });
+ if (otherItems.length > 0) {
+ otherItems.forEach(function (item, i) {
+ var itemElement = _this.renderSearchResult(item, i + recentItems.length);
+ if (i == 0 && recentItems.length > 0)
+ itemElement.classList.add('mux_palette-results-item-separator');
+ });
+ }
+ break;
+ case 'recent':
+ default:
+ this.showResultLabel('Recent actions', 'schedule');
+ this.getRecentItems().forEach(function (item, i) {
+ return _this.renderSearchResult(item, i);
+ });
+ break;
+ }
+ };
+ ComponentPaletteSearch.prototype.getRecentItems = function () {
+ if (this.recents == undefined || this.recents.length == 0)
+ return [];
+ var addressMap = new Map();
+ var uidMap = new Map();
+ this.items.forEach(function (item) {
+ if (item.uniqueIdentifier != undefined &&
+ item.uniqueIdentifier.trim().length > 0)
+ uidMap.set(item.uniqueIdentifier.trim(), item);
+ if (item.href != undefined && item.href.trim().length > 0)
+ addressMap.set(item.href.trim(), item);
+ });
+ var recentItems = [];
+ this.recents.forEach(function (recentId) {
+ if (recentId.startsWith('address:')) {
+ if (addressMap.has(recentId.replace('address:', '')))
+ recentItems.push(addressMap.get(recentId.replace('address:', '')));
+ }
+ else {
+ if (uidMap.has(recentId))
+ recentItems.push(uidMap.get(recentId));
+ }
+ });
+ return recentItems;
+ };
+ ComponentPaletteSearch.prototype.handleInputUpdate = function (value) {
+ var _this = this;
+ if (value.trim().length < 1)
+ return this.showDefaultView();
+ this.results.innerHTML = '';
+ var searchresults = this.search(value.trim());
+ if (searchresults.length == 0)
+ return this.showResultLabel('No results based on your search query.', 'warning');
+ searchresults
+ .sort(function (a, b) {
+ return b.score - a.score;
+ })
+ .forEach(function (result, index) { return _this.renderSearchResult(result, index); });
+ };
+ ComponentPaletteSearch.prototype.showResultLabel = function (text, materialIcon) {
+ var label = (0, CE_1.ce)('div', 'mux_palette-results-label');
+ if (materialIcon != undefined)
+ label.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, materialIcon));
+ label.appendChild((0, CE_1.ce)('span', null, null, text));
+ this.results.appendChild(label);
+ };
+ ComponentPaletteSearch.prototype.getSelectedResult = function () {
+ if (this.results == null)
+ return null;
+ return this.results.querySelector('.mux_palette-results-item-selected');
+ };
+ ComponentPaletteSearch.prototype.getScore = function (queryWords, tagWords) {
+ var score = 0;
+ var _loop_1 = function (i) {
+ tagWords.forEach(function (tagWord) {
+ if (tagWord.includes(queryWords[i])) {
+ score += tagWord.startsWith(queryWords[i]) ? 2 : 1;
+ }
+ });
+ };
+ for (var i = 0; i < queryWords.length; i++) {
+ _loop_1(i);
+ }
+ return score;
+ };
+ ComponentPaletteSearch.prototype.getTags = function (query) {
+ var tags = [];
+ query
+ .toLowerCase()
+ .split(' ')
+ .map(function (word) {
+ return word.trim();
+ })
+ .filter(function (word) {
+ return word.length > 0;
+ })
+ .forEach(function (tag) {
+ if (!tags.includes(tag))
+ tags.push(tag);
+ });
+ return tags;
+ };
+ return ComponentPaletteSearch;
+ }(baseComponent_1.MUXComponent));
+ Component_PaletteSearch.ComponentPaletteSearch = ComponentPaletteSearch;
+
+ return Component_PaletteSearch;
+ }
+
+ var Component_Resizer = {};
+
+ var __extends$2 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Resizer, "__esModule", { value: true });
+ Component_Resizer.ComponentResizer = void 0;
+ var CE_1$2 = CE;
+ var baseComponent_1$2 = baseComponent;
+ var ComponentResizer = /** @class */ (function (_super) {
+ __extends$2(ComponentResizer, _super);
+ function ComponentResizer(options) {
+ var _a, _b, _c;
+ var _this = _super.call(this) || this;
+ _this.startPoint = null;
+ _this.startSize = null;
+ _this.preMove = true;
+ _this.moveEvent = function (e) {
+ _this.handleMove(e);
+ };
+ _this.touchEndEvent = function (e) {
+ _this.stopResize();
+ };
+ _this.direction = (_a = options === null || options === void 0 ? void 0 : options.direction) !== null && _a !== void 0 ? _a : 'right';
+ _this.closeable = (_b = options === null || options === void 0 ? void 0 : options.closeable) !== null && _b !== void 0 ? _b : false;
+ _this.min = options === null || options === void 0 ? void 0 : options.min;
+ _this.max = options === null || options === void 0 ? void 0 : options.max;
+ _this.relative = (_c = options === null || options === void 0 ? void 0 : options.relative) !== null && _c !== void 0 ? _c : false;
+ _this.container = (0, CE_1$2.ce)('div', 'mux_resizer');
+ var area = (0, CE_1$2.ce)('div', 'mux_resizer-area');
+ var grab = (0, CE_1$2.ce)('div', 'mux_resizer-grab');
+ var grabHandle = (0, CE_1$2.ce)('span', ['material-symbols-outlined', 'mux_resizer-grab-handle'], null, 'drag_handle');
+ if (options.direction == 'left' || options.direction == 'right')
+ grabHandle.style.transform = 'rotate(90deg)';
+ grab.appendChild(grabHandle);
+ var grabOpen = (0, CE_1$2.ce)('span', ['material-symbols-outlined', 'mux_resizer-grab-open'], null, {
+ left: 'arrow_left',
+ right: 'arrow_right',
+ up: 'arrow_drop_up',
+ down: 'arrow_drop_down',
+ }[_this.direction]);
+ grab.appendChild(grabOpen);
+ area.appendChild(grab);
+ if ((options === null || options === void 0 ? void 0 : options.existingContainer) != undefined) {
+ if (!options.existingContainer.classList.contains('mux_resizer'))
+ throw new Error('Container of registered resizer does not contain mux_resizer classname');
+ _this.container = options.existingContainer;
+ if (_this.container.querySelector('.mux_resizer-area') != null) {
+ var existingArea = _this.container.querySelector('.mux_resizer-area');
+ _this.container.removeChild(existingArea);
+ }
+ }
+ _this.container.appendChild(area);
+ _this.container.classList.add("mux_resizer-direction-".concat(_this.direction));
+ _this.currentSize =
+ _this.direction == 'left' || _this.direction == 'right'
+ ? _this.container.clientWidth
+ : _this.container.clientHeight;
+ area.addEventListener('mousedown', function (e) { return _this.startResize(e); });
+ area.addEventListener('touchstart', function (e) { return _this.startResize(e); });
+ grab.addEventListener('mousedown', function (e) { return _this.startResize(e); });
+ area.addEventListener('touchstart', function (e) { return _this.startResize(e); });
+ grab.addEventListener('click', function () {
+ if (!_this.container.classList.contains('mux_resizer-closed'))
+ return;
+ var size = typeof _this.min === 'function' ? _this.min() : _this.min;
+ if (_this.direction == 'left' || _this.direction == 'right')
+ _this.container.style.width = _this.toSize(size);
+ else if (_this.direction == 'up' || _this.direction == 'down')
+ _this.container.style.height = _this.toSize(size);
+ _this.currentSize = size;
+ _this.callEvent('resized', size);
+ _this.container.classList.remove('mux_resizer-closed');
+ });
+ if (!_this.relative)
+ window.addEventListener('resize', function () {
+ _this.setSize(_this.currentSize);
+ });
+ return _this;
+ }
+ ComponentResizer.prototype.toSize = function (value) {
+ if (!this.relative)
+ return "".concat(value, "px");
+ var parentSize = this.direction == 'left' || this.direction == 'right'
+ ? this.container.parentElement.clientWidth
+ : this.container.parentElement.clientHeight;
+ var percent = (value / parentSize) * 100;
+ return "".concat(percent, "%");
+ };
+ ComponentResizer.prototype.setSize = function (size) {
+ var value = this.parseNewValue(size);
+ if (this.direction == 'left' || this.direction == 'right')
+ this.container.style.width = this.toSize(value);
+ else if (this.direction == 'up' || this.direction == 'down')
+ this.container.style.height = this.toSize(value);
+ this.currentSize = value;
+ this.callEvent('resized', value);
+ };
+ ComponentResizer.prototype.getSize = function () {
+ return this.currentSize;
+ };
+ ComponentResizer.prototype.parseNewValue = function (value) {
+ var _min = typeof this.min === 'function' ? this.min() : this.min;
+ var _max = typeof this.max === 'function' ? this.max() : this.max;
+ value >= _min
+ ? this.container.classList.remove('mux_resizer-block')
+ : this.container.classList.add('mux_resizer-block');
+ if (_min >= 0) {
+ if (this.closeable == true && value < _min * 0.5) {
+ this.container.classList.add('mux_resizer-closed');
+ this.callEvent('resized', 0);
+ return 0;
+ }
+ else
+ value = Math.max(_min, value);
+ }
+ if (_max > 0)
+ value = Math.min(_max, value);
+ this.container.classList.remove('mux_resizer-closed');
+ return value;
+ };
+ ComponentResizer.prototype.startResize = function (e) {
+ var _a = this.pageCoords(e), x = _a.x, y = _a.y;
+ var bounds = this.container.getBoundingClientRect();
+ if (this.direction == 'left' || this.direction == 'right') {
+ this.startPoint = x;
+ this.startSize = bounds.width;
+ }
+ else if (this.direction == 'up' || this.direction == 'down') {
+ this.startPoint = y;
+ this.startSize = bounds.height;
+ }
+ window.addEventListener('mousemove', this.moveEvent);
+ window.addEventListener('touchmove', this.moveEvent);
+ window.addEventListener('touchend', this.touchEndEvent);
+ this.container.classList.add('mux_resizer-moving');
+ this.callEvent('startResize');
+ };
+ ComponentResizer.prototype.stopResize = function () {
+ this.startPoint = null;
+ this.startSize = null;
+ this.preMove = true;
+ this.container.classList.remove('mux_resizer-moving');
+ window.removeEventListener('mousemove', this.moveEvent);
+ window.removeEventListener('touchmove', this.moveEvent);
+ window.removeEventListener('touchend', this.touchEndEvent);
+ this.callEvent('stopResize');
+ };
+ ComponentResizer.prototype.handleMove = function (e) {
+ var _a, _b, _c;
+ if (((_a = e === null || e === void 0 ? void 0 : e.buttons) !== null && _a !== void 0 ? _a : 1) != 1 ||
+ ((_c = (_b = e === null || e === void 0 ? void 0 : e.touches) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 1) == 0 ||
+ this.startPoint == null ||
+ this.startSize == null) {
+ this.stopResize();
+ return;
+ }
+ var _d = this.pageCoords(e), x = _d.x, y = _d.y;
+ if (this.preMove) {
+ var startSpan = Math.abs(this.startPoint -
+ (this.direction == 'left' || this.direction == 'right'
+ ? x
+ : y));
+ if (startSpan >= 10) {
+ this.preMove = false;
+ this.container.classList.add('mux_resizer-moving');
+ }
+ else
+ return;
+ }
+ var value = null;
+ if (this.direction == 'left' || this.direction == 'right') {
+ value = this.parseNewValue(this.startSize +
+ (this.direction == 'left'
+ ? this.startPoint - x
+ : x - this.startPoint));
+ this.container.style.width = this.toSize(value);
+ }
+ else if (this.direction == 'up' || this.direction == 'down') {
+ value = this.parseNewValue(this.startSize +
+ (this.direction == 'up'
+ ? this.startPoint - y
+ : y - this.startPoint));
+ this.container.style.height = this.toSize(value);
+ }
+ this.currentSize = value;
+ this.callEvent('resized', value);
+ };
+ ComponentResizer.prototype.pageCoords = function (e) {
+ var _a, _b, _c, _d;
+ return {
+ x: (_a = e.pageX) !== null && _a !== void 0 ? _a : (_b = e.touches[0]) === null || _b === void 0 ? void 0 : _b.pageX,
+ y: (_c = e.pageY) !== null && _c !== void 0 ? _c : (_d = e.touches[0]) === null || _d === void 0 ? void 0 : _d.pageY,
+ };
+ };
+ return ComponentResizer;
+ }(baseComponent_1$2.MUXComponent));
+ Component_Resizer.ComponentResizer = ComponentResizer;
+
+ var Component_Row = {};
+
+ var __extends$1 = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Row, "__esModule", { value: true });
+ Component_Row.ComponentRow = void 0;
+ var CE_1$1 = CE;
+ var baseComponent_1$1 = baseComponent;
+ var ComponentRow = /** @class */ (function (_super) {
+ __extends$1(ComponentRow, _super);
+ function ComponentRow(options) {
+ var _this = _super.call(this) || this;
+ _this.container = (0, CE_1$1.ce)('div', 'mux_row');
+ if ((options === null || options === void 0 ? void 0 : options.spreadEven) == true)
+ _this.container.classList.add('mux_spread');
+ if ((options === null || options === void 0 ? void 0 : options.indent) == true)
+ _this.container.classList.add('mux_indent');
+ if ((options === null || options === void 0 ? void 0 : options.disabled) == true)
+ _this.container.classList.add('mux_disabled');
+ if ((options === null || options === void 0 ? void 0 : options.tooltip) != undefined)
+ _this.container.title = options.tooltip;
+ _this.content = (0, CE_1$1.ce)('div', 'mux_row-content');
+ var label = (0, CE_1$1.ce)('div', ['mux_row-label', 'mux_text'], null, options.label);
+ if ((options === null || options === void 0 ? void 0 : options.layout) != undefined && options.layout == 'valueFirst') {
+ _this.container.appendChild(_this.content);
+ _this.container.appendChild(label);
+ }
+ else {
+ _this.container.appendChild(label);
+ _this.container.appendChild(_this.content);
+ }
+ if (options.content != undefined)
+ _this.content.appendChild(options.content);
+ return _this;
+ }
+ ComponentRow.prototype.setEnabled = function (state) {
+ if (state)
+ this.container.classList.remove('mux_disabled');
+ else
+ this.container.classList.add('mux_disabled');
+ };
+ ComponentRow.prototype.setTooltip = function (tooltip) {
+ if (tooltip == null)
+ this.container.removeAttribute('title');
+ else
+ this.container.title = tooltip;
+ };
+ return ComponentRow;
+ }(baseComponent_1$1.MUXComponent));
+ Component_Row.ComponentRow = ComponentRow;
+
+ var Component_Select = {};
+
+ var hasRequiredComponent_Select;
+
+ function requireComponent_Select () {
+ if (hasRequiredComponent_Select) return Component_Select;
+ hasRequiredComponent_Select = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Select, "__esModule", { value: true });
+ Component_Select.ComponentSelect = void 0;
+ var Index_1 = requireIndex();
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var ComponentSelect = /** @class */ (function (_super) {
+ __extends(ComponentSelect, _super);
+ function ComponentSelect(options) {
+ var _a, _b, _c;
+ var _this = _super.call(this) || this;
+ _this.show = 'name';
+ _this.show = (_a = options.show) !== null && _a !== void 0 ? _a : 'name';
+ _this.container = (0, CE_1.ce)('div', 'mux_select');
+ var border = (_b = options.border) !== null && _b !== void 0 ? _b : 'hover';
+ if (border == 'always')
+ _this.container.classList.add('mux_select-alwaysborder');
+ else if (border == 'never')
+ _this.container.classList.add('mux_select-noborder');
+ _this.input = new Index_1.MorphComponent.Input({
+ type: 'text',
+ border: 'never',
+ });
+ _this.input.container.onkeydown = function (e) {
+ e.preventDefault();
+ };
+ _this.container.appendChild(_this.input.container);
+ _this.content = (0, CE_1.ce)('div', 'mux_select-content');
+ _this.container.appendChild(_this.content);
+ _this.container.appendChild((0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_select-arrow'], null, 'keyboard_arrow_down'));
+ _this.input.container.onfocus = function () {
+ _this.input.container.blur();
+ _this.toggleContext();
+ };
+ _this.input.container.onblur = function () {
+ _this.context.close('selectblur');
+ };
+ _this.container.onclick = function () { return _this.toggleContext(); };
+ _this.items = (_c = options === null || options === void 0 ? void 0 : options.items) !== null && _c !== void 0 ? _c : [];
+ _this.select(options.selectedId, false);
+ return _this;
+ }
+ ComponentSelect.prototype.setItems = function (items) {
+ this.items = items;
+ };
+ ComponentSelect.prototype.select = function (id, dispatchEvent) {
+ var _a;
+ if (dispatchEvent === void 0) { dispatchEvent = true; }
+ var item = this.items.find(function (i) {
+ if (i.type == 'separator')
+ return false;
+ return i.id == id;
+ });
+ this.selectedId = id;
+ this.content.innerHTML = '';
+ if (item == null) {
+ this.content.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small', 'mux_select-none'], null, 'None selected'));
+ return;
+ }
+ if (item.materialIcon != undefined) {
+ var materialIcon = (0, CE_1.ce)('span', 'material-symbols-outlined', null, item.materialIcon);
+ if (item.materialIconTransform != undefined)
+ materialIcon.style.transform = item.materialIconTransform;
+ this.content.appendChild(materialIcon);
+ }
+ else if (item.icon != undefined) {
+ this.content.appendChild((0, CE_1.ce)('img', 'mux_select-content-icon', { src: item.icon }));
+ }
+ this.content.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, (_a = item.text) !== null && _a !== void 0 ? _a : item.id));
+ if (dispatchEvent)
+ this.callEvent('input', id);
+ };
+ ComponentSelect.prototype.setSelected = function (id) {
+ this.select(id, false);
+ };
+ ComponentSelect.prototype.getSelected = function () {
+ return this.selectedId;
+ };
+ ComponentSelect.prototype.toggleContext = function () {
+ var _this = this;
+ if (this.context != null) {
+ return this.context.close('selecttoggle');
+ }
+ var bounds = this.container.getBoundingClientRect();
+ this.context = new Index_1.MorphComponent.ContextMenu({
+ x: bounds.x + bounds.width / 2,
+ y: bounds.y + bounds.height,
+ align: 'center',
+ selected: this.selectedId,
+ items: this.items.map(function (item) {
+ var _a, _b;
+ if (item.type == 'separator') {
+ return { type: 'separator' };
+ }
+ return {
+ type: (_a = item.type) !== null && _a !== void 0 ? _a : 'normal',
+ uniqueIdentifier: item.id,
+ text: (_b = item.text) !== null && _b !== void 0 ? _b : item.id,
+ materialIcon: item.materialIcon,
+ materialIconTransform: item.materialIconTransform,
+ icon: item.icon,
+ click: function () {
+ _this.select(item.id, true);
+ },
+ };
+ }),
+ });
+ this.container.classList.add('mux_select-open');
+ this.context.on('close', function () {
+ _this.container.classList.remove('mux_select-open');
+ _this.context = null;
+ });
+ };
+ return ComponentSelect;
+ }(baseComponent_1.MUXComponent));
+ Component_Select.ComponentSelect = ComponentSelect;
+
+ return Component_Select;
+ }
+
+ var Component_Table = {};
+
+ var Component_Table_Button = {};
+
+ var Component_Table__base = {};
+
+ Object.defineProperty(Component_Table__base, "__esModule", { value: true });
+ Component_Table__base.ComponentTable_Base = void 0;
+ var ComponentTable_Base = /** @class */ (function () {
+ function ComponentTable_Base() {
+ }
+ ComponentTable_Base.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ return null;
+ };
+ return ComponentTable_Base;
+ }());
+ Component_Table__base.ComponentTable_Base = ComponentTable_Base;
+
+ var hasRequiredComponent_Table_Button;
+
+ function requireComponent_Table_Button () {
+ if (hasRequiredComponent_Table_Button) return Component_Table_Button;
+ hasRequiredComponent_Table_Button = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table_Button, "__esModule", { value: true });
+ Component_Table_Button.ComponentTable_Button = void 0;
+ var Index_1 = requireIndex();
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_Button = /** @class */ (function (_super) {
+ __extends(ComponentTable_Button, _super);
+ function ComponentTable_Button() {
+ return _super.call(this) || this;
+ }
+ ComponentTable_Button.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var container = (0, Index_1.ce)('div', ['mux_table-button']);
+ var btn = (0, Index_1.ce)('div', [
+ 'mux_table-button-btn',
+ 'mux_text',
+ 'mux_small',
+ "mux_table-button-btn-".concat(encodeURI(cell.text)),
+ ], { title: cell.tooltip }, cell.text);
+ btn.onclick = function (e) {
+ e.stopPropagation();
+ component.callEvent('buttonClick', rowId, column.uniqueIdentifier);
+ };
+ container.appendChild(btn);
+ return container;
+ };
+ return ComponentTable_Button;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_Button.ComponentTable_Button = ComponentTable_Button;
+
+ return Component_Table_Button;
+ }
+
+ var Component_Table_Duration = {};
+
+ var Component_Table_Text = {};
+
+ var hasRequiredComponent_Table_Text;
+
+ function requireComponent_Table_Text () {
+ if (hasRequiredComponent_Table_Text) return Component_Table_Text;
+ hasRequiredComponent_Table_Text = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table_Text, "__esModule", { value: true });
+ Component_Table_Text.ComponentTable_Text = void 0;
+ var Index_1 = requireIndex();
+ var TextHighlighter_1 = TextHighlighter;
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_Text = /** @class */ (function (_super) {
+ __extends(ComponentTable_Text, _super);
+ function ComponentTable_Text(allowHighlighting) {
+ var _this = _super.call(this) || this;
+ _this.allowHighlighting = allowHighlighting;
+ return _this;
+ }
+ ComponentTable_Text.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var _a, _b, _c, _d, _e, _f;
+ if (asNumber === void 0) { asNumber = false; }
+ var wrapper = (0, Index_1.ce)('div', 'mux_table-wrapper');
+ var container = (0, Index_1.ce)('div', 'mux_table-text', {
+ title: (_a = cell === null || cell === void 0 ? void 0 : cell.tooltip) !== null && _a !== void 0 ? _a : '',
+ });
+ var text = this.allowHighlighting
+ ? (0, TextHighlighter_1.generateTextHighlights)(String(cell.value).trim())
+ : (0, Index_1.ce)('div', ['mux_text', 'mux_small'], null, "".concat((_b = cell.prefix) !== null && _b !== void 0 ? _b : '', " ").concat(cell.value).trim());
+ text.prepend((0, Index_1.ce)('span', null, null, cell.prefix));
+ text.style.justifyContent = {
+ left: 'flex-Start',
+ right: 'flex-end',
+ center: 'center',
+ }[(_c = cell.align) !== null && _c !== void 0 ? _c : 'left'];
+ var editonly = column.editonly;
+ container.appendChild(text);
+ if (column.editable) {
+ var inputContainer = (0, Index_1.ce)('div', 'mux_table-edit-input');
+ var inputPrefix = (0, Index_1.ce)('div', ['mux_text', 'mux_small', 'mux_table-edit-input-prefix'], null, (_d = cell.prefix) !== null && _d !== void 0 ? _d : '');
+ var input = new Index_1.MorphComponent.Input({
+ type: 'text',
+ value: String((_e = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _e !== void 0 ? _e : '').trim(),
+ border: 'always',
+ });
+ if (editonly)
+ input.on('input', function () {
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, !asNumber
+ ? input.container.value
+ : parseFloat(input.container.value));
+ });
+ input.container.style.textAlign = (_f = cell.align) !== null && _f !== void 0 ? _f : 'left';
+ inputContainer.appendChild(inputPrefix);
+ inputContainer.appendChild(input.container);
+ container.appendChild(inputContainer);
+ container.style.cursor = 'pointer';
+ var hasFirst = false;
+ var clickTimeout;
+ container.onclick = function () {
+ clearTimeout(clickTimeout);
+ if (hasFirst == false) {
+ hasFirst = true;
+ clickTimeout = setTimeout(function () {
+ hasFirst = false;
+ }, 1000);
+ }
+ else {
+ openEdit();
+ hasFirst = false;
+ }
+ };
+ var openEdit = function () {
+ text.style.display = 'none';
+ inputContainer.style.display = 'flex';
+ input.container.focus();
+ input.container.setSelectionRange(input.container.value.length, input.container.value.length);
+ var initValue = input.container.value;
+ var close = function () {
+ if (editonly)
+ return;
+ window.removeEventListener('click', onclick);
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, !asNumber
+ ? input.container.value
+ : parseFloat(input.container.value));
+ text.innerText = input.container.value;
+ text.style.display = 'flex';
+ inputContainer.style.display = 'none';
+ };
+ input.container.onkeydown = function (e) {
+ if (editonly)
+ return;
+ if (e.key == 'Enter')
+ close();
+ else if (e.key == 'Escape') {
+ input.container.value = initValue;
+ text.innerText = input.container.value;
+ close();
+ }
+ };
+ if (!editonly) {
+ var onclick = function (e) {
+ if (e.target == undefined ||
+ e.target != input.container)
+ close();
+ };
+ setTimeout(function () { return window.addEventListener('click', onclick); }, 100);
+ }
+ };
+ if (editonly)
+ openEdit();
+ }
+ wrapper.appendChild(container);
+ if (cell.subText != undefined) {
+ wrapper.appendChild((0, Index_1.ce)('div', ['mux_text', 'mux_tiny', 'mux_table-subtext'], null, cell.subText.trim()));
+ }
+ return wrapper;
+ };
+ return ComponentTable_Text;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_Text.ComponentTable_Text = ComponentTable_Text;
+
+ return Component_Table_Text;
+ }
+
+ var hasRequiredComponent_Table_Duration;
+
+ function requireComponent_Table_Duration () {
+ if (hasRequiredComponent_Table_Duration) return Component_Table_Duration;
+ hasRequiredComponent_Table_Duration = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table_Duration, "__esModule", { value: true });
+ Component_Table_Duration.ComponentTable_Duration = void 0;
+ var Component_Table_Text_1 = requireComponent_Table_Text();
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_Duration = /** @class */ (function (_super) {
+ __extends(ComponentTable_Duration, _super);
+ function ComponentTable_Duration() {
+ var _this = _super.call(this) || this;
+ _this._text = new Component_Table_Text_1.ComponentTable_Text(false);
+ return _this;
+ }
+ ComponentTable_Duration.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var element = this._text.createElement(cell, rowId, column, component, true);
+ var elementText = element.querySelector('.mux_text');
+ if (elementText != null)
+ elementText.style.justifyContent = 'center';
+ element.classList.add('mux_table-duration');
+ var input = element.querySelector('input');
+ var regex = /^[0-9.]+$/;
+ element.addEventListener('input', function () {
+ var currentValue = input.value;
+ if (!regex.test(currentValue)) {
+ input.value = currentValue.slice(0, -1);
+ }
+ });
+ return element;
+ };
+ return ComponentTable_Duration;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_Duration.ComponentTable_Duration = ComponentTable_Duration;
+
+ return Component_Table_Duration;
+ }
+
+ var Component_Table_Icons = {};
+
+ var hasRequiredComponent_Table_Icons;
+
+ function requireComponent_Table_Icons () {
+ if (hasRequiredComponent_Table_Icons) return Component_Table_Icons;
+ hasRequiredComponent_Table_Icons = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table_Icons, "__esModule", { value: true });
+ Component_Table_Icons.ComponentTable_Icons = void 0;
+ var Index_1 = requireIndex();
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_Icons = /** @class */ (function (_super) {
+ __extends(ComponentTable_Icons, _super);
+ function ComponentTable_Icons() {
+ return _super.call(this) || this;
+ }
+ ComponentTable_Icons.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var _a;
+ var container = (0, Index_1.ce)('div', ['mux_table-icons']);
+ ((_a = cell === null || cell === void 0 ? void 0 : cell.items) !== null && _a !== void 0 ? _a : []).forEach(function (item) {
+ var itemElement = (0, Index_1.ce)('div', 'mux_table-icon');
+ itemElement.appendChild((0, Index_1.ce)('span', 'material-symbols-outlined', null, item.materialIcon));
+ if (item.color != undefined)
+ itemElement.style.color = item.color;
+ itemElement.onclick = function (e) {
+ e.stopPropagation();
+ item.click();
+ };
+ container.appendChild(itemElement);
+ });
+ return container;
+ };
+ return ComponentTable_Icons;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_Icons.ComponentTable_Icons = ComponentTable_Icons;
+
+ return Component_Table_Icons;
+ }
+
+ var Component_Table_MaterialSymbol = {};
+
+ var hasRequiredComponent_Table_MaterialSymbol;
+
+ function requireComponent_Table_MaterialSymbol () {
+ if (hasRequiredComponent_Table_MaterialSymbol) return Component_Table_MaterialSymbol;
+ hasRequiredComponent_Table_MaterialSymbol = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table_MaterialSymbol, "__esModule", { value: true });
+ Component_Table_MaterialSymbol.ComponentTable_MaterialSymbol = void 0;
+ var Index_1 = requireIndex();
+ var TextHighlighter_1 = TextHighlighter;
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_MaterialSymbol = /** @class */ (function (_super) {
+ __extends(ComponentTable_MaterialSymbol, _super);
+ function ComponentTable_MaterialSymbol() {
+ return _super.call(this) || this;
+ }
+ ComponentTable_MaterialSymbol.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var _a, _b, _c, _d;
+ if (asNumber === void 0) { asNumber = false; }
+ var wrapper = (0, Index_1.ce)('div', 'mux_table-wrapper');
+ var container = (0, Index_1.ce)('div', 'mux_table-text', {
+ title: (_a = cell === null || cell === void 0 ? void 0 : cell.tooltip) !== null && _a !== void 0 ? _a : '',
+ });
+ var text = this.allowHighlighting
+ ? (0, TextHighlighter_1.generateTextHighlights)(String(cell.materialIcon).trim())
+ : (0, Index_1.ce)('span', ['material-symbols-outlined', 'g_text'], null, cell.materialIcon);
+ text.style.justifyContent = {
+ left: 'flex-Start',
+ right: 'flex-end',
+ center: 'center',
+ }[(_b = cell.align) !== null && _b !== void 0 ? _b : 'left'];
+ container.appendChild(text);
+ if (column.editable) {
+ var inputContainer = (0, Index_1.ce)('div', 'mux_table-edit-input');
+ var input = (0, Index_1.ce)('input', null, {
+ type: 'text',
+ value: String((_c = cell === null || cell === void 0 ? void 0 : cell.materialIcon) !== null && _c !== void 0 ? _c : '').trim(),
+ });
+ input.style.textAlign = (_d = cell.align) !== null && _d !== void 0 ? _d : 'left';
+ inputContainer.appendChild(input);
+ container.appendChild(inputContainer);
+ container.style.cursor = 'pointer';
+ var hasFirst = false;
+ var clickTimeout;
+ container.onclick = function () {
+ clearTimeout(clickTimeout);
+ if (hasFirst == false) {
+ hasFirst = true;
+ clickTimeout = setTimeout(function () {
+ hasFirst = false;
+ }, 1000);
+ }
+ else {
+ openEdit();
+ hasFirst = false;
+ }
+ };
+ var openEdit = function () {
+ text.style.display = 'none';
+ inputContainer.style.display = 'flex';
+ input.focus();
+ input.setSelectionRange(input.value.length, input.value.length);
+ var initValue = input.value;
+ var close = function () {
+ window.removeEventListener('click', onclick);
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, !asNumber ? input.value : parseFloat(input.value));
+ text.innerText = input.value;
+ text.style.display = 'flex';
+ inputContainer.style.display = 'none';
+ };
+ input.onkeydown = function (e) {
+ if (e.key == 'Enter')
+ close();
+ else if (e.key == 'Escape') {
+ input.value = initValue;
+ text.innerText = input.value;
+ close();
+ }
+ };
+ var onclick = function (e) {
+ if (e.target == undefined || e.target != input)
+ close();
+ };
+ setTimeout(function () { return window.addEventListener('click', onclick); }, 100);
+ };
+ }
+ wrapper.appendChild(container);
+ // if (cell.materialIcon != undefined) {
+ // wrapper.appendChild(
+ // ce(
+ // 'div',
+ // ['mux_text', 'mux_tiny', 'mux_table-subtext'],
+ // null,
+ // cell.subMaterialSymbol.trim()
+ // )
+ // );
+ // }
+ return wrapper;
+ };
+ return ComponentTable_MaterialSymbol;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_MaterialSymbol.ComponentTable_MaterialSymbol = ComponentTable_MaterialSymbol;
+
+ return Component_Table_MaterialSymbol;
+ }
+
+ var Component_Table_Number = {};
+
+ var hasRequiredComponent_Table_Number;
+
+ function requireComponent_Table_Number () {
+ if (hasRequiredComponent_Table_Number) return Component_Table_Number;
+ hasRequiredComponent_Table_Number = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table_Number, "__esModule", { value: true });
+ Component_Table_Number.ComponentTable_Number = void 0;
+ var Component_Table_Text_1 = requireComponent_Table_Text();
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_Number = /** @class */ (function (_super) {
+ __extends(ComponentTable_Number, _super);
+ function ComponentTable_Number() {
+ var _this = _super.call(this) || this;
+ _this._text = new Component_Table_Text_1.ComponentTable_Text(false);
+ return _this;
+ }
+ ComponentTable_Number.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var element = this._text.createElement(cell, rowId, column, component);
+ element.classList.add('mux_table-number');
+ var input = element.querySelector('input');
+ var regex = /^[0-9.]+$/;
+ element.addEventListener('input', function () {
+ var currentValue = input.value;
+ if (!regex.test(currentValue)) {
+ input.value = currentValue.slice(0, -1);
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, input.value);
+ }
+ });
+ return element;
+ };
+ return ComponentTable_Number;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_Number.ComponentTable_Number = ComponentTable_Number;
+
+ return Component_Table_Number;
+ }
+
+ var Component_Table_Select = {};
+
+ var hasRequiredComponent_Table_Select;
+
+ function requireComponent_Table_Select () {
+ if (hasRequiredComponent_Table_Select) return Component_Table_Select;
+ hasRequiredComponent_Table_Select = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
+ __assign = Object.assign || function(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+ Object.defineProperty(Component_Table_Select, "__esModule", { value: true });
+ Component_Table_Select.ComponentTable_Select = void 0;
+ var Index_1 = requireIndex();
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_Select = /** @class */ (function (_super) {
+ __extends(ComponentTable_Select, _super);
+ function ComponentTable_Select() {
+ return _super.call(this) || this;
+ }
+ ComponentTable_Select.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var container = (0, Index_1.ce)('div', 'mux_table-select', { title: cell.tooltip });
+ var options = {};
+ for (var i = 0; i < column.options.length; i++)
+ options[column.options[i].uniqueIdentifier] = column.options[i];
+ var setSelected = function (uniqueIdentifier) {
+ var _a, _b, _c, _d, _e, _f;
+ var selected = (options === null || options === void 0 ? void 0 : options[uniqueIdentifier]) != undefined
+ ? uniqueIdentifier
+ : column.options[0].uniqueIdentifier;
+ var selectedTransform = (_a = options === null || options === void 0 ? void 0 : options[selected].materialIconTransform) !== null && _a !== void 0 ? _a : 'unset';
+ var option = options === null || options === void 0 ? void 0 : options[selected];
+ textSpan.innerText = (_b = option === null || option === void 0 ? void 0 : option.text) !== null && _b !== void 0 ? _b : '';
+ iconSpan.innerText = (_d = (_c = options === null || options === void 0 ? void 0 : options[selected]) === null || _c === void 0 ? void 0 : _c.materialIcon) !== null && _d !== void 0 ? _d : '';
+ iconSpan.style.transform = selectedTransform !== null && selectedTransform !== void 0 ? selectedTransform : '';
+ container.title = "".concat((_f = (_e = options === null || options === void 0 ? void 0 : options[selected]) === null || _e === void 0 ? void 0 : _e.text) !== null && _f !== void 0 ? _f : '', " | Click to change");
+ };
+ var iconSpan = (0, Index_1.ce)('span', 'material-symbols-outlined', null);
+ var textSpan = (0, Index_1.ce)('span', ['mux_text', 'mux_small'], null);
+ var arrow = (0, Index_1.ce)('span', ['mux_table-select-arrow', 'material-symbols-outlined'], null, 'keyboard_arrow_down');
+ container.append(iconSpan, textSpan);
+ container.appendChild(arrow);
+ setSelected(cell.value);
+ container.onclick = function () {
+ var bounds = container.getBoundingClientRect();
+ var items = column.options.map(function (item) {
+ return __assign({ click: function () {
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, item.uniqueIdentifier);
+ setSelected(item.uniqueIdentifier);
+ } }, item);
+ });
+ new Index_1.MorphComponent.ContextMenu({
+ x: bounds.x + bounds.width / 2,
+ y: bounds.y + bounds.height,
+ items: items,
+ });
+ };
+ return container;
+ };
+ return ComponentTable_Select;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_Select.ComponentTable_Select = ComponentTable_Select;
+
+ return Component_Table_Select;
+ }
+
+ var Component_Table_TextSuggestions = {};
+
+ var hasRequiredComponent_Table_TextSuggestions;
+
+ function requireComponent_Table_TextSuggestions () {
+ if (hasRequiredComponent_Table_TextSuggestions) return Component_Table_TextSuggestions;
+ hasRequiredComponent_Table_TextSuggestions = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
+ __assign = Object.assign || function(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+ var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+ var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ };
+ Object.defineProperty(Component_Table_TextSuggestions, "__esModule", { value: true });
+ Component_Table_TextSuggestions.ComponentTable_TextSuggestions = void 0;
+ var Index_1 = requireIndex();
+ var Component_ContextMenu_1 = Component_ContextMenu;
+ var Component_Table__base_1 = Component_Table__base;
+ var ComponentTable_TextSuggestions = /** @class */ (function (_super) {
+ __extends(ComponentTable_TextSuggestions, _super);
+ function ComponentTable_TextSuggestions() {
+ return _super.call(this) || this;
+ }
+ ComponentTable_TextSuggestions.prototype.createElement = function (cell, rowId, column, component, asNumber) {
+ var _a, _b, _c, _d;
+ var wrapper = (0, Index_1.ce)('div', 'mux_table-wrapper');
+ var container = (0, Index_1.ce)('div', 'mux_table-textsuggestions');
+ var optionTitles = {};
+ var optionIds = column.options.map(function (option) {
+ optionTitles[option.uniqueIdentifier] = option.text;
+ return option.uniqueIdentifier;
+ });
+ var input = new Index_1.MorphComponent.Input({
+ type: 'text',
+ value: (_b = optionTitles[String((_a = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _a !== void 0 ? _a : '').trim()]) !== null && _b !== void 0 ? _b : String((_c = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _c !== void 0 ? _c : '').trim(),
+ border: 'always',
+ });
+ input.container.setAttribute('valueId', String((_d = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _d !== void 0 ? _d : '').trim());
+ var arrow = (0, Index_1.ce)('span', 'material-symbols-outlined', null, 'arrow_drop_down');
+ arrow.onclick = function () {
+ input.container.focus();
+ showContext();
+ };
+ input.container.addEventListener('focus', function () {
+ var _a;
+ input.setValue((_a = input.container.getAttribute('valueId')) !== null && _a !== void 0 ? _a : '');
+ });
+ input.on('blur', function () {
+ var optionTitle = optionTitles[input.container.getAttribute('valueId')];
+ if (optionTitle == null) {
+ if (input.getValue().length > 0)
+ component.callEvent('textSuggestionFailed', rowId, column.uniqueIdentifier);
+ input.setValue('');
+ input.container.removeAttribute('valueId');
+ }
+ else {
+ input.setValue(optionTitle);
+ }
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, input.container.getAttribute('valueId'));
+ setTimeout(function () {
+ context === null || context === void 0 ? void 0 : context.destroy();
+ }, 250);
+ });
+ input.container.addEventListener('keydown', function (e) {
+ if (e.key != ' ' || !e.ctrlKey)
+ return;
+ e.preventDefault();
+ showContext();
+ });
+ input.on('input', function () { return showContext(); });
+ var context;
+ var showContextTimeout;
+ function showContext() {
+ return __awaiter(this, arguments, void 0, function (instant) {
+ if (instant === void 0) { instant = false; }
+ return __generator(this, function (_a) {
+ context === null || context === void 0 ? void 0 : context.close('blur');
+ if (optionIds.includes(input.getValue())) {
+ input.container.setAttribute('valueId', input.getValue());
+ return [2 /*return*/];
+ }
+ input.container.removeAttribute('valueId');
+ clearTimeout(showContextTimeout);
+ showContextTimeout = setTimeout(function () {
+ var _a;
+ var firstId;
+ var value = ((_a = input.getValue()) !== null && _a !== void 0 ? _a : '').toLowerCase();
+ var options = value.length == 0
+ ? []
+ : column.options
+ .map(function (option) {
+ var _a, _b;
+ var text = ((_a = option === null || option === void 0 ? void 0 : option.text) !== null && _a !== void 0 ? _a : '').toLowerCase();
+ var id = ((_b = option === null || option === void 0 ? void 0 : option.uniqueIdentifier) !== null && _b !== void 0 ? _b : '').toLowerCase();
+ return { text: text, id: id, option: option };
+ })
+ .filter(function (_a) {
+ var text = _a.text, id = _a.id; _a.option;
+ return (text.includes(value) ||
+ id.includes(value));
+ })
+ .map(function (_a) {
+ var text = _a.text, id = _a.id, option = _a.option;
+ var score = 1;
+ if (text.startsWith(value) ||
+ id.startsWith(value))
+ score += 1;
+ if (text.includes(value) ||
+ id.includes(value))
+ score += 1;
+ if (text == value || id == value)
+ score += 1;
+ return { score: score, option: option };
+ })
+ .sort(function (a, b) { return b.score - a.score; })
+ .map(function (_a, index) {
+ _a.score; var option = _a.option;
+ if (index == 0)
+ firstId = option.uniqueIdentifier;
+ return __assign(__assign({}, option), { click: function () {
+ input.setValue(option.text);
+ input.container.setAttribute('valueId', option.uniqueIdentifier);
+ component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, input.getValue());
+ component.callEvent('textSuggestionCompleted');
+ } });
+ });
+ if (options.length == 0)
+ return;
+ var bounds = input.container.getBoundingClientRect();
+ context = new Component_ContextMenu_1.ComponentContextMenu({
+ items: options,
+ selected: firstId,
+ x: bounds.x + bounds.width / 2,
+ y: bounds.y + bounds.height,
+ });
+ }, instant ? 0 : 200);
+ return [2 /*return*/];
+ });
+ });
+ }
+ container.appendChild(input.container);
+ container.appendChild(arrow);
+ wrapper.appendChild(container);
+ return wrapper;
+ };
+ return ComponentTable_TextSuggestions;
+ }(Component_Table__base_1.ComponentTable_Base));
+ Component_Table_TextSuggestions.ComponentTable_TextSuggestions = ComponentTable_TextSuggestions;
+
+ return Component_Table_TextSuggestions;
+ }
+
+ var hasRequiredComponent_Table;
+
+ function requireComponent_Table () {
+ if (hasRequiredComponent_Table) return Component_Table;
+ hasRequiredComponent_Table = 1;
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Table, "__esModule", { value: true });
+ Component_Table.ComponentTable = void 0;
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var Component_Table_Button_1 = requireComponent_Table_Button();
+ var Component_Table_Duration_1 = requireComponent_Table_Duration();
+ var Component_Table_Icons_1 = requireComponent_Table_Icons();
+ var Component_Table_MaterialSymbol_1 = requireComponent_Table_MaterialSymbol();
+ var Component_Table_Number_1 = requireComponent_Table_Number();
+ var Component_Table_Select_1 = requireComponent_Table_Select();
+ var Component_Table_Text_1 = requireComponent_Table_Text();
+ var Component_Table_TextSuggestions_1 = requireComponent_Table_TextSuggestions();
+ var Sortable = SortableExports;
+ var ComponentTable = /** @class */ (function (_super) {
+ __extends(ComponentTable, _super);
+ function ComponentTable(options) {
+ var _a, _b;
+ var _this_1 = _super.call(this) || this;
+ _this_1.columns = [];
+ _this_1.rows = [];
+ _this_1.hiddenRows = [];
+ _this_1.columnMap = {};
+ _this_1.highlight = function (uniqueIdentifier, style, scrollIntoView, deselectOther) {
+ var _a, _b, _c;
+ if (scrollIntoView === void 0) { scrollIntoView = false; }
+ if (deselectOther === void 0) { deselectOther = true; }
+ var rows = _this_1.table.querySelectorAll('tr');
+ var styles = typeof style == 'string' ? [style] : style;
+ for (var i = 0; i < rows.length; i++) {
+ if (uniqueIdentifier != null &&
+ rows[i].getAttribute('uid') == uniqueIdentifier) {
+ (_a = rows[i].classList).remove.apply(_a, ['selected', 'active', 'outline'].map(function (st) {
+ return "mux_table-row-".concat(st);
+ }));
+ if (style != 'none') {
+ (_b = rows[i].classList).add.apply(_b, styles.map(function (st) {
+ return "mux_table-row-".concat(st);
+ }));
+ if (scrollIntoView)
+ rows[i].scrollIntoView({
+ block: 'center',
+ behavior: 'smooth',
+ });
+ }
+ }
+ else if (deselectOther)
+ (_c = rows[i].classList).remove.apply(_c, ['selected', 'active', 'outline'].map(function (st) {
+ return "mux_table-row-".concat(st);
+ }));
+ }
+ };
+ _this_1.container = (0, CE_1.ce)('div', 'mux_table');
+ _this_1.columns = (_a = options === null || options === void 0 ? void 0 : options.columns) !== null && _a !== void 0 ? _a : [];
+ _this_1.table = (0, CE_1.ce)('table');
+ var headerRow = (0, CE_1.ce)('tr');
+ _this_1.columns.forEach(function (column) {
+ var cell = (0, CE_1.ce)('th', null, { uid: column.uniqueIdentifier });
+ _this_1.columnMap[column.uniqueIdentifier] = column;
+ if (column.width != undefined)
+ cell.style.width = column.width;
+ if (column.noLeftBorder == true)
+ cell.classList.add('mux_table-noborder');
+ if (column.title != undefined) {
+ var title = (0, CE_1.ce)('div', ['mux_table-text', 'mux_header', 'mux_small'], null, column.title);
+ cell.appendChild(title);
+ if (column.headerAlign != undefined)
+ title.style.textAlign = column.headerAlign;
+ }
+ headerRow.appendChild(cell);
+ });
+ _this_1.table.appendChild(headerRow);
+ _this_1.container.appendChild(_this_1.table);
+ var _this = _this_1;
+ var sortable = new Sortable(_this_1.table, {
+ filter: ((_b = options === null || options === void 0 ? void 0 : options.dragableIgnore) !== null && _b !== void 0 ? _b : []).join(', '),
+ preventOnFilter: false,
+ handle: options === null || options === void 0 ? void 0 : options.dragableHandle,
+ ghostClass: 'mux_table-row-dragging',
+ onStart: function () {
+ _this.table.classList.add('mux_table-dragging');
+ _this.callEvent('dragStart');
+ },
+ onEnd: function (evt) {
+ _this.callEvent('dragEnd');
+ _this.table.classList.remove('mux_table-dragging');
+ _this.callEvent('orderUpdated', _this.getOrder());
+ _this.updateRowBackgrounds();
+ },
+ });
+ if (options.dragable != true) {
+ sortable.option('disabled', true);
+ }
+ if (options.rows != undefined) {
+ options.rows.forEach(function (row) { return _this_1.addRow(row, true); });
+ _this_1.updateRowBackgrounds();
+ }
+ return _this_1;
+ }
+ ComponentTable.prototype.getOrder = function () {
+ var order = [];
+ var rows = this.table.querySelectorAll('tr');
+ for (var i = 1; i < rows.length; i++)
+ order.push(rows[i].getAttribute('uid'));
+ return order;
+ };
+ ComponentTable.prototype.clear = function () {
+ this.rows = [];
+ var rows = this.table.querySelectorAll('tr');
+ if (rows.length > 1)
+ for (var i = 1; i < rows.length; i++)
+ rows[i].parentElement.removeChild(rows[i]);
+ };
+ ComponentTable.prototype.addRows = function (rows) {
+ var _this_1 = this;
+ rows.forEach(function (row) { return _this_1.addRow(row, true); });
+ this.updateRowBackgrounds();
+ };
+ ComponentTable.prototype.addRow = function (row, silent) {
+ if (silent === void 0) { silent = false; }
+ return this._createRow(row, null, silent);
+ };
+ ComponentTable.prototype.insertRow = function (index, row, silent) {
+ if (silent === void 0) { silent = false; }
+ if (index < 0 || index > this.rows.length)
+ return;
+ return this._createRow(row, index + 1, silent);
+ };
+ ComponentTable.prototype._createRow = function (row, insertIndex, silent) {
+ var _this_1 = this;
+ this.rows.push(row.uniqueIdentifier);
+ var rowElement = (0, CE_1.ce)('tr', 'mux_table-row', {
+ uid: row.uniqueIdentifier,
+ });
+ if (!this.hiddenRows.includes(row.uniqueIdentifier))
+ rowElement.classList.add('mux_table-row-visible');
+ rowElement.onclick = function (e) {
+ _this_1.callEvent('click', row.uniqueIdentifier, e);
+ };
+ if (row.child)
+ rowElement.classList.add('mux_table-row-child');
+ if (row.highlight != undefined)
+ rowElement.classList.add("mux_table-row-".concat(row.highlight));
+ this.columns.forEach(function (columnSettings) {
+ var cellElement = (0, CE_1.ce)('td', null, {
+ uid: columnSettings.uniqueIdentifier,
+ });
+ if (columnSettings.width != undefined)
+ cellElement.style.width = columnSettings.width;
+ var handler = columnTypes[columnSettings.type];
+ var cell = row.cells[columnSettings.uniqueIdentifier];
+ if (cell == undefined)
+ return;
+ cellElement.appendChild(handler.createElement(cell, row.uniqueIdentifier, columnSettings, _this_1));
+ rowElement.appendChild(cellElement);
+ });
+ if (insertIndex != null) {
+ var rows = this.table.querySelectorAll('tr');
+ if (insertIndex >= rows.length)
+ this.table.appendChild(rowElement);
+ else
+ this.table.insertBefore(rowElement, rows[insertIndex]);
+ }
+ else
+ this.table.appendChild(rowElement);
+ if (!silent)
+ this.updateRowBackgrounds();
+ };
+ ComponentTable.prototype.updateCell = function (rowId, columnId, value) {
+ var row = this.table.querySelector("tr[uid=\"".concat(rowId, "\"]"));
+ if (row == null)
+ return;
+ var cell = row.querySelector("td[uid=\"".concat(columnId, "\""));
+ if (cell == null)
+ return;
+ var columnSettings = this.columnMap[columnId];
+ var handler = columnTypes[columnSettings.type];
+ cell.innerHTML = '';
+ cell.appendChild(handler.createElement(value, rowId, columnSettings, this));
+ };
+ ComponentTable.prototype.setDragable = function (dragable) {
+ this.Sortable.option('disabled', !dragable);
+ };
+ ComponentTable.prototype.updateRowBackgrounds = function () {
+ var rows = this.table.querySelectorAll('.mux_table-row-visible');
+ var counter = 0;
+ var insideChild = false;
+ for (var i = 0; i < rows.length; i++) {
+ var isChild = rows[i].classList.contains('mux_table-row-child');
+ if (insideChild != isChild) {
+ insideChild = isChild;
+ counter = 0;
+ }
+ var odd = (counter + 1) % 2 == 0;
+ counter++;
+ if (odd)
+ rows[i].classList.add('mux_table-row-odd');
+ else
+ rows[i].classList.remove('mux_table-row-odd');
+ }
+ };
+ ComponentTable.extendTypes = function (type, handler) {
+ columnTypes[type] = handler;
+ };
+ return ComponentTable;
+ }(baseComponent_1.MUXComponent));
+ Component_Table.ComponentTable = ComponentTable;
+ var columnTypes = {
+ text: new Component_Table_Text_1.ComponentTable_Text(true),
+ textsuggestions: new Component_Table_TextSuggestions_1.ComponentTable_TextSuggestions(),
+ number: new Component_Table_Number_1.ComponentTable_Number(),
+ button: new Component_Table_Button_1.ComponentTable_Button(),
+ duration: new Component_Table_Duration_1.ComponentTable_Duration(),
+ icons: new Component_Table_Icons_1.ComponentTable_Icons(),
+ select: new Component_Table_Select_1.ComponentTable_Select(),
+ materialSymbol: new Component_Table_MaterialSymbol_1.ComponentTable_MaterialSymbol(),
+ };
+
+ return Component_Table;
+ }
+
+ var Component_Text = {};
+
+ var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ })();
+ Object.defineProperty(Component_Text, "__esModule", { value: true });
+ Component_Text.ComponentText = void 0;
+ var CE_1 = CE;
+ var baseComponent_1 = baseComponent;
+ var ComponentText = /** @class */ (function (_super) {
+ __extends(ComponentText, _super);
+ function ComponentText(options) {
+ var _a;
+ var _this = _super.call(this) || this;
+ var size = (_a = options === null || options === void 0 ? void 0 : options.size) !== null && _a !== void 0 ? _a : 'normal';
+ _this.container = (0, CE_1.ce)('div', ['mux_text', "mux_".concat(size)], null, options === null || options === void 0 ? void 0 : options.content);
+ return _this;
+ }
+ ComponentText.prototype.update = function (content) {
+ this.container.innerHTML = content;
+ };
+ return ComponentText;
+ }(baseComponent_1.MUXComponent));
+ Component_Text.ComponentText = ComponentText;
+
+ var hasRequiredMorph_Components;
+
+ function requireMorph_Components () {
+ if (hasRequiredMorph_Components) return Morph_Components;
+ hasRequiredMorph_Components = 1;
+ Object.defineProperty(Morph_Components, "__esModule", { value: true });
+ Morph_Components.MorphComponent = void 0;
+ var Component_Button_1 = Component_Button;
+ var Component_Cards_1 = Component_Cards;
+ var Component_ContextMenu_1 = Component_ContextMenu;
+ var Component_Dialog_1 = requireComponent_Dialog();
+ var Component_Group_1 = Component_Group;
+ var Component_Header_1 = Component_Header;
+ var Component_IconGrid_1 = Component_IconGrid;
+ var Component_ImageViewer_1 = requireComponent_ImageViewer();
+ var Component_Input_1 = Component_Input;
+ var Component_List_1 = requireComponent_List();
+ var Component_MenuBar_1 = requireComponent_MenuBar();
+ var Component_PaletteCheckbox_1 = requireComponent_PaletteCheckbox();
+ var Component_PaletteSearch_1 = requireComponent_PaletteSearch();
+ var Component_Resizer_1 = Component_Resizer;
+ var Component_Row_1 = Component_Row;
+ var Component_Select_1 = requireComponent_Select();
+ var Component_Table_1 = requireComponent_Table();
+ var Component_Text_1 = Component_Text;
+ Morph_Components.MorphComponent = {
+ Header: Component_Header_1.ComponentHeader,
+ Text: Component_Text_1.ComponentText,
+ Button: Component_Button_1.ComponentButton,
+ Input: Component_Input_1.ComponentInput,
+ Select: Component_Select_1.ComponentSelect,
+ Group: Component_Group_1.ComponentGroup,
+ List: Component_List_1.ComponentList,
+ Cards: Component_Cards_1.ComponentCards,
+ IconGrid: Component_IconGrid_1.ComponentIconGrid,
+ Table: Component_Table_1.ComponentTable,
+ Row: Component_Row_1.ComponentRow,
+ Dialog: Component_Dialog_1.ComponentDialog,
+ PaletteSearch: Component_PaletteSearch_1.ComponentPaletteSearch,
+ PaletteCheckbox: Component_PaletteCheckbox_1.ComponentPaletteCheckbox,
+ ImageViewer: Component_ImageViewer_1.ComponentImageViewer,
+ MenuBar: Component_MenuBar_1.ComponentMenuBar,
+ ContextMenu: Component_ContextMenu_1.ComponentContextMenu,
+ Resizer: Component_Resizer_1.ComponentResizer,
+ extend: function (name, component) {
+ this[name] = component;
+ },
+ };
+
+ return Morph_Components;
+ }
+
+ var Morph_Features = {};
+
+ var Feature_Alert = {};
+
+ var hasRequiredFeature_Alert;
+
+ function requireFeature_Alert () {
+ if (hasRequiredFeature_Alert) return Feature_Alert;
+ hasRequiredFeature_Alert = 1;
+ Object.defineProperty(Feature_Alert, "__esModule", { value: true });
+ Feature_Alert.FeatureAlert = void 0;
+ var Index_1 = requireIndex();
+ function FeatureAlert(options, callback) {
+ return new Promise(function (resolve) {
+ var _a;
+ var dialog = new Index_1.MorphComponent.Dialog({
+ title: (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : 'Alert',
+ width: 'small',
+ height: 'auto',
+ cancelButtonVisible: false,
+ });
+ dialog.content.appendChild((0, Index_1.ce)('div', 'mux_text', null, options.message));
+ var res = function () {
+ if (typeof callback == 'function')
+ callback();
+ resolve();
+ };
+ dialog.on('close', function () { return res(); });
+ dialog.on('ok', function () { return res(); });
+ });
+ }
+ Feature_Alert.FeatureAlert = FeatureAlert;
+
+ return Feature_Alert;
+ }
+
+ var Feature_Confirm = {};
+
+ var hasRequiredFeature_Confirm;
+
+ function requireFeature_Confirm () {
+ if (hasRequiredFeature_Confirm) return Feature_Confirm;
+ hasRequiredFeature_Confirm = 1;
+ Object.defineProperty(Feature_Confirm, "__esModule", { value: true });
+ Feature_Confirm.FeatureConfirm = void 0;
+ var Index_1 = requireIndex();
+ function FeatureConfirm(options, callback) {
+ return new Promise(function (resolve) {
+ var _a;
+ var dialog = new Index_1.MorphComponent.Dialog({
+ title: (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : 'Confirm',
+ width: 'small',
+ height: 'auto',
+ });
+ dialog.content.appendChild((0, Index_1.ce)('div', 'mux_text', null, options.message));
+ var res = function (state) {
+ if (typeof callback == 'function')
+ callback(state);
+ resolve(state);
+ };
+ dialog.on('close', function () { return res(null); });
+ dialog.on('cancel', function () { return res(false); });
+ dialog.on('ok', function () { return res(true); });
+ });
+ }
+ Feature_Confirm.FeatureConfirm = FeatureConfirm;
+
+ return Feature_Confirm;
+ }
+
+ var Feature_Loader = {};
+
+ var hasRequiredFeature_Loader;
+
+ function requireFeature_Loader () {
+ if (hasRequiredFeature_Loader) return Feature_Loader;
+ hasRequiredFeature_Loader = 1;
+ Object.defineProperty(Feature_Loader, "__esModule", { value: true });
+ Feature_Loader.FeatureLoader = void 0;
+ var Index_1 = requireIndex();
+ function FeatureLoader(options) {
+ var _a, _b;
+ var active = (_a = options === null || options === void 0 ? void 0 : options.active) !== null && _a !== void 0 ? _a : false;
+ var message = (_b = options === null || options === void 0 ? void 0 : options.message) !== null && _b !== void 0 ? _b : '';
+ var progress = options === null || options === void 0 ? void 0 : options.progress;
+ if (active == true)
+ showLoader(message, progress);
+ else
+ removeExisting();
+ }
+ Feature_Loader.FeatureLoader = FeatureLoader;
+ function showLoader(message, progress) {
+ var loader = document.querySelector('.mux_loader');
+ if (loader == null) {
+ loader = (0, Index_1.ce)('div', 'mux_loader');
+ loader.appendChild((0, Index_1.ce)('span', 'material-symbols-outlined', null, 'circle'));
+ document.body.appendChild(loader);
+ }
+ var existingProgress = loader.querySelector('.mux_loader-progress');
+ if (progress == null) {
+ if (existingProgress != null)
+ existingProgress.remove();
+ }
+ else {
+ if (existingProgress != null) {
+ existingProgress.style.setProperty('--progress', "".concat(progress, "%"));
+ existingProgress.querySelector('.mux_loader-progress-label').innerText = "".concat(Math.round(progress), "%");
+ }
+ else {
+ var progressBar = (0, Index_1.ce)('div', 'mux_loader-progress');
+ progressBar.style.setProperty('--progress', "".concat(progress, "%"));
+ var value = (0, Index_1.ce)('div', 'mux_loader-progress-value');
+ value.appendChild((0, Index_1.ce)('div', 'mux_loader-progress-label', null, "".concat(Math.round(progress), "%")));
+ progressBar.appendChild(value);
+ loader.appendChild(progressBar);
+ }
+ }
+ var existingText = loader.querySelector('.mux_loader-message');
+ if (message.trim().length == 0) {
+ if (existingText != null)
+ existingText.remove();
+ }
+ else {
+ if (existingText != null)
+ existingText.innerText = message;
+ else {
+ if (loader.querySelector('.mux_loader-progress') != null)
+ loader.insertBefore((0, Index_1.ce)('div', ['mux_text', 'mux_loader-message'], null, message), loader.querySelector('.mux_loader-progress'));
+ else
+ loader.appendChild((0, Index_1.ce)('div', ['mux_text', 'mux_loader-message'], null, message));
+ }
+ }
+ }
+ function removeExisting() {
+ var existing = document.querySelector('.mux_loader');
+ if (existing != null)
+ existing.remove();
+ }
+
+ return Feature_Loader;
+ }
+
+ var Feature_Notification = {};
+
+ var hasRequiredFeature_Notification;
+
+ function requireFeature_Notification () {
+ if (hasRequiredFeature_Notification) return Feature_Notification;
+ hasRequiredFeature_Notification = 1;
+ Object.defineProperty(Feature_Notification, "__esModule", { value: true });
+ Feature_Notification.FeatureNotification = void 0;
+ var Index_1 = requireIndex();
+ var NotificationHandler = new (/** @class */ (function () {
+ function class_1() {
+ var _this = this;
+ window.addEventListener('DOMContentLoaded', function () { return _this.prepare(); });
+ }
+ class_1.prototype.prepare = function () {
+ this.container = (0, Index_1.ce)('div', 'mux_notifications');
+ document.body.appendChild(this.container);
+ };
+ class_1.prototype.append = function (notification) {
+ var _a, _b, _c;
+ var element = (0, Index_1.ce)('div', 'mux_notification');
+ element.classList.add('mux_notification-' + notification.level);
+ var icon = (0, Index_1.ce)('span', ['material-symbols-outlined', 'mux_notification-icon'], null, {
+ info: 'exclamation',
+ warning: 'exclamation',
+ error: 'close',
+ success: 'check',
+ }[(_a = notification.level) !== null && _a !== void 0 ? _a : 'info']);
+ if (notification.level == 'info')
+ icon.style.transform = 'rotate(180deg)';
+ element.appendChild(icon);
+ element.appendChild((0, Index_1.ce)('div', 'mux_text', null, notification.message));
+ if ((notification === null || notification === void 0 ? void 0 : notification.action) != null) {
+ var action = (0, Index_1.ce)('span', ['material-symbols-outlined', 'mux_notification-action'], null, notification.action.materialIcon);
+ action.onclick = function () {
+ notification.action.click();
+ clearTimeout(hideTimeout);
+ closeNotification();
+ };
+ element.appendChild(action);
+ }
+ if ((_b = notification === null || notification === void 0 ? void 0 : notification.closeable) !== null && _b !== void 0 ? _b : true) {
+ element.onclick = function () {
+ closeNotification();
+ };
+ }
+ this.container.prepend(element);
+ var openNotification = function () {
+ element.style.opacity = '1';
+ element.style.transform = 'translateX(0px)';
+ };
+ var closeNotification = function () {
+ clearTimeout(hideTimeout);
+ element.style.marginTop = "-".concat(element.clientHeight + 6, "px");
+ element.style.opacity = '0';
+ element.style.transform = 'translateX(100%)';
+ element.style.pointerEvents = 'none';
+ element.ontransitionend = function () { return element.remove(); };
+ };
+ setTimeout(function () { return openNotification(); }, 100);
+ var hideTimeout = setTimeout(function () { return closeNotification(); }, ((_c = notification === null || notification === void 0 ? void 0 : notification.seconds) !== null && _c !== void 0 ? _c : 10) * 1000);
+ return new NotificationInstance(closeNotification);
+ };
+ return class_1;
+ }()))();
+ var NotificationInstance = /** @class */ (function () {
+ function NotificationInstance(close) {
+ this._close = close;
+ }
+ NotificationInstance.prototype.close = function () {
+ this._close();
+ };
+ return NotificationInstance;
+ }());
+ function FeatureNotification(notification) {
+ var _a;
+ if (((_a = notification === null || notification === void 0 ? void 0 : notification.message) !== null && _a !== void 0 ? _a : '').trim().length == 0)
+ return;
+ return NotificationHandler.append(notification);
+ }
+ Feature_Notification.FeatureNotification = FeatureNotification;
+
+ return Feature_Notification;
+ }
+
+ var Feature_Prompt = {};
+
+ var hasRequiredFeature_Prompt;
+
+ function requireFeature_Prompt () {
+ if (hasRequiredFeature_Prompt) return Feature_Prompt;
+ hasRequiredFeature_Prompt = 1;
+ Object.defineProperty(Feature_Prompt, "__esModule", { value: true });
+ Feature_Prompt.FeaturePrompt = void 0;
+ var Index_1 = requireIndex();
+ function FeaturePrompt(options, callback) {
+ return new Promise(function (resolve) {
+ var _a, _b, _c, _d;
+ var dialog = new Index_1.MorphComponent.Dialog({
+ title: (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : 'Prompt',
+ width: 'small',
+ height: 'auto',
+ });
+ dialog.content.appendChild((0, Index_1.ce)('div', 'mux_text', null, options.message));
+ var input = new Index_1.MorphComponent.Input({
+ type: (_b = options.type) !== null && _b !== void 0 ? _b : 'text',
+ value: (_c = options.default) !== null && _c !== void 0 ? _c : '',
+ placeholder: (_d = options.placeholder) !== null && _d !== void 0 ? _d : '',
+ border: 'always',
+ });
+ input.container.style.margin = 'var(--mux-edge-offset-tiny) 0px';
+ input.container.onfocus = function () {
+ errorMessage.style.height = '0px';
+ };
+ dialog.content.appendChild(input.container);
+ var errorMessage = (0, Index_1.ce)('div', ['mux_text', 'mux_small'], null, 'Value can not be empty!');
+ errorMessage.style.height = '0px';
+ errorMessage.style.transitionDuration =
+ 'var(--mux-transition-animation)';
+ errorMessage.style.overflow = 'hidden';
+ errorMessage.style.color = 'var(--mux-color-red)';
+ dialog.content.appendChild(errorMessage);
+ var res = function (value) {
+ if (typeof callback == 'function')
+ callback(value);
+ resolve(value);
+ };
+ dialog.on('close', function () { return res(null); });
+ dialog.on('cancel', function () { return res(null); });
+ dialog.on('ok', function (closeEvent) {
+ if (!options.canBeEmpty && input.getValue().trim() == '') {
+ errorMessage.style.height = '14px';
+ return closeEvent.preventClose();
+ }
+ res(input.getValue());
+ });
+ input.container.focus();
+ });
+ }
+ Feature_Prompt.FeaturePrompt = FeaturePrompt;
+
+ return Feature_Prompt;
+ }
+
+ var hasRequiredMorph_Features;
+
+ function requireMorph_Features () {
+ if (hasRequiredMorph_Features) return Morph_Features;
+ hasRequiredMorph_Features = 1;
+ Object.defineProperty(Morph_Features, "__esModule", { value: true });
+ Morph_Features.MorphFeature = void 0;
+ var Feature_Alert_1 = requireFeature_Alert();
+ var Feature_Confirm_1 = requireFeature_Confirm();
+ var Feature_Loader_1 = requireFeature_Loader();
+ var Feature_Notification_1 = requireFeature_Notification();
+ var Feature_Prompt_1 = requireFeature_Prompt();
+ Morph_Features.MorphFeature = {
+ Confirm: Feature_Confirm_1.FeatureConfirm,
+ Alert: Feature_Alert_1.FeatureAlert,
+ Prompt: Feature_Prompt_1.FeaturePrompt,
+ Notification: Feature_Notification_1.FeatureNotification,
+ Loader: Feature_Loader_1.FeatureLoader,
+ extend: function (name, component) {
+ this[name] = component;
+ },
+ };
+
+ return Morph_Features;
+ }
+
+ var Morph_Utils = {};
+
+ var clone$1 = {};
+
+ Object.defineProperty(clone$1, "__esModule", { value: true });
+ clone$1.clone = void 0;
+ function clone(object) {
+ if (typeof object !== 'object')
+ return object;
+ return JSON.parse(JSON.stringify(object !== null && object !== void 0 ? object : {}));
+ }
+ clone$1.clone = clone;
+
+ (function (exports) {
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.ce = exports.clone = void 0;
+ var clone_1 = clone$1;
+ Object.defineProperty(exports, "clone", { enumerable: true, get: function () { return clone_1.clone; } });
+ var CE_1 = CE;
+ Object.defineProperty(exports, "ce", { enumerable: true, get: function () { return CE_1.ce; } });
+
+ } (Morph_Utils));
+
+ var hasRequiredIndex;
+
+ function requireIndex () {
+ if (hasRequiredIndex) return Index;
+ hasRequiredIndex = 1;
+ (function (exports) {
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+ }) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+ }));
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+ };
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.MUXComponent = void 0;
+ var version = require$$0$1.version;
+ if (window._MorphUXInitialized === undefined) {
+ console.log('MorphUX Loaded');
+ console.log("Version ".concat(version));
+ window._MorphUXInitialized = true;
+ }
+ __exportStar(requireMorph_Components(), exports);
+ __exportStar(requireMorph_Features(), exports);
+ __exportStar(Morph_Keys, exports);
+ __exportStar(Morph_Utils, exports);
+ var baseComponent_1 = baseComponent;
+ Object.defineProperty(exports, "MUXComponent", { enumerable: true, get: function () { return baseComponent_1.MUXComponent; } });
+
+ } (Index));
+ return Index;
+ }
+
+ Object.defineProperty(checklist, "__esModule", { value: true });
+ checklist.Checklist = void 0;
+ var morphux_1$1 = requireIndex();
+ var Checklist = /** @class */ (function () {
+ function Checklist(Main) {
+ this.Rows = {
+ CAMERAPC: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPC\"]"),
+ CAMERAPROCESS: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPROCESS\"]"),
+ CAMERAUNITYSTREAM: document.querySelector(".ntsh-checklist-row[status=\"CAMERAUNITYSTREAM\"]"),
+ UNITYBUILD: document.querySelector(".ntsh-checklist-row[status=\"UNITYBUILD\"]"),
+ REPLAYFUNCTION: document.querySelector(".ntsh-checklist-row[status=\"REPLAYFUNCTION\"]"),
+ };
+ this.FullReboot = document.querySelector('.ntsh-fullreboot-button');
+ this._Main = Main;
+ this.registerListeners();
+ }
+ Checklist.prototype.update = function (status) {
+ this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);
+ this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);
+ this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);
+ this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);
+ this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);
+ console.log('Updated checklist:', status);
+ };
+ Checklist.prototype.updateRow = function (row, state) {
+ var _a, _b, _c;
+ var status = row.querySelector('.ntsh-checklist-row-status');
+ var message = row.querySelector('p');
+ var startButton = row.querySelector('.ntsh-checklist-row-button.start');
+ var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
+ var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
+ status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');
+ status.classList.add(state.state);
+ message.innerText = state.message;
+ startButton.style.display = ((_a = state.buttons) === null || _a === void 0 ? void 0 : _a.start) ? 'block' : 'none';
+ stopButton.style.display = ((_b = state.buttons) === null || _b === void 0 ? void 0 : _b.stop) ? 'block' : 'none';
+ rebootButton.style.display = ((_c = state.buttons) === null || _c === void 0 ? void 0 : _c.reboot) ? 'block' : 'none';
+ };
+ Checklist.prototype.registerListeners = function () {
+ var _this = this;
+ this.FullReboot.onclick = function () {
+ morphux_1$1.MorphFeature.Confirm({
+ title: 'Full Reboot',
+ message: 'Are you sure you want to perform a full reboot?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'fullreboot');
+ });
+ };
+ var _loop_1 = function (key) {
+ var row = this_1.Rows[key];
+ var startButton = row.querySelector('.ntsh-checklist-row-button.start');
+ startButton.onclick = function () {
+ return morphux_1$1.MorphFeature.Confirm({
+ title: 'Start',
+ message: 'Are you sure you want to start?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'start', key);
+ });
+ };
+ var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
+ stopButton.onclick = function () {
+ return morphux_1$1.MorphFeature.Confirm({
+ title: 'Stop',
+ message: 'Are you sure you want to stop?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'stop', key);
+ });
+ };
+ var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
+ rebootButton.onclick = function () {
+ return morphux_1$1.MorphFeature.Confirm({
+ title: 'Reboot',
+ message: 'Are you sure you want to reboot?',
+ }, function (state) {
+ if (!state)
+ return;
+ _this._Main.socket.emit('status', 'reboot', key);
+ });
+ };
+ };
+ var this_1 = this;
+ for (var key in this.Rows) {
+ _loop_1(key);
+ }
+ };
+ return Checklist;
+ }());
+ checklist.Checklist = Checklist;
+
+ var calibration = {};
+
+ Object.defineProperty(calibration, "__esModule", { value: true });
+ calibration.Calibration = void 0;
+ var Calibration = /** @class */ (function () {
+ function Calibration(Main) {
+ this.visible = false;
+ this.container = document.querySelector('.ntsh-calibration');
+ this.image = this.container.querySelector('img');
+ this._Main = Main;
+ this.registerListeners();
+ this.startClock();
+ }
+ Calibration.prototype.startClock = function () {
+ var _this = this;
+ setInterval(function () {
+ if (_this.visible && _this.image)
+ _this.image.src = "/calibrationImage?t=".concat(Date.now());
+ }, 1000);
+ };
+ Calibration.prototype.registerListeners = function () {
+ var _this = this;
+ this.observer = new IntersectionObserver(function (entries) {
+ entries.forEach(function (entry) {
+ if (entry.isIntersecting) {
+ _this.visible = true;
+ console.log('Calibration visible');
+ }
+ else {
+ _this.visible = false;
+ console.log('Calibration not visible');
+ }
+ });
+ });
+ this.observer.observe(this.container);
+ };
+ return Calibration;
+ }());
+ calibration.Calibration = Calibration;
+
+ var outOfServiceMode = {};
+
+ var __awaiter$1 = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+ var __generator$1 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ };
+ Object.defineProperty(outOfServiceMode, "__esModule", { value: true });
+ outOfServiceMode.OutOfServiceMode = void 0;
+ var OutOfServiceMode = /** @class */ (function () {
+ function OutOfServiceMode(Main) {
+ this.state = false;
+ this.input = document.querySelector('.ntsh-outofservicemode-input');
+ this._Main = Main;
+ this.registerListeners();
+ }
+ OutOfServiceMode.prototype.registerListeners = function () {
+ var _this = this;
+ this.input.addEventListener('change', function () { return __awaiter$1(_this, void 0, void 0, function () {
+ var valid;
+ return __generator$1(this, function (_a) {
+ switch (_a.label) {
+ case 0: return [4 /*yield*/, this._Main.executeCommand(this.state ? 'disableOutOfService' : 'enableOutOfService', "Are you sure you want to set the installation to \"".concat(this.state ? 'Out of Service' : 'Operational', "\"?"), 'unityWebSocket')];
+ case 1:
+ valid = _a.sent();
+ if (!valid)
+ this.input.checked = this.state;
+ this.state = this.input.checked;
+ return [2 /*return*/];
+ }
+ });
+ }); });
+ };
+ return OutOfServiceMode;
+ }());
+ outOfServiceMode.OutOfServiceMode = OutOfServiceMode;
+
+ var timer = {};
+
+ Object.defineProperty(timer, "__esModule", { value: true });
+ timer.Timer = void 0;
+ var Timer = /** @class */ (function () {
+ function Timer(Main) {
+ this.startup = document.querySelector('.ntsh-timer-startup');
+ this.shutdown = document.querySelector('.ntsh-timer-shutdown');
+ this._Main = Main;
+ this.registerListeners();
+ }
+ Timer.prototype.update = function (data) {
+ var start = "".concat(data.start.hour.toString().padStart(2, '0'), ":").concat(data.start.minute.toString().padStart(2, '0'));
+ var end = "".concat(data.end.hour.toString().padStart(2, '0'), ":").concat(data.end.minute.toString().padStart(2, '0'));
+ this.startup.value = start;
+ this.shutdown.value = end;
+ };
+ Timer.prototype.registerListeners = function () {
+ var _this = this;
+ this.startup.onchange = function () {
+ var _a = _this.startup.value.split(':').map(Number), hour = _a[0], minute = _a[1];
+ _this._Main.socket.emit('setTimerStart', { hour: hour, minute: minute });
+ };
+ this.shutdown.onchange = function () {
+ var _a = _this.shutdown.value.split(':').map(Number), hour = _a[0], minute = _a[1];
+ _this._Main.socket.emit('setTimerEnd', { hour: hour, minute: minute });
+ };
+ };
+ return Timer;
+ }());
+ timer.Timer = Timer;
+
+ var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+ var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ };
+ Object.defineProperty(main$1, "__esModule", { value: true });
+ exports.Main = main$1.Main = void 0;
+ var socket_io_client_1 = cjsExports;
+ var menu_1 = menu;
+ var checklist_1 = checklist;
+ var calibration_1 = calibration;
+ var morphux_1 = requireIndex();
+ var outOfServiceMode_1 = outOfServiceMode;
+ var timer_1 = timer;
+ var socket = (0, socket_io_client_1.io)('/');
+ var Main = /** @class */ (function () {
+ function Main() {
+ this.Menu = new menu_1.Menu();
+ this.CheckList = new checklist_1.Checklist(this);
+ this.Calibration = new calibration_1.Calibration(this);
+ this.OutOfServiceMode = new outOfServiceMode_1.OutOfServiceMode(this);
+ this.Timer = new timer_1.Timer(this);
+ this.socket = socket;
+ this.supportButton = document.querySelector('.ntsh-support img');
+ this.supportNumber = '';
+ this.registerListeners();
+ }
+ Main.prototype.registerListeners = function () {
+ var _this = this;
+ this.supportButton.onclick = function () { return _this.showSupport(); };
+ socket.on('status', function (data) {
+ _this.CheckList.update(data);
+ });
+ socket.on('supportNumber', function (number) {
+ _this.supportNumber = number;
+ });
+ socket.on('unityWebSocketState', function (state) {
+ var _a, _b, _c, _d;
+ _this.OutOfServiceMode.input.checked =
+ (_b = (_a = state === null || state === void 0 ? void 0 : state.parameters) === null || _a === void 0 ? void 0 : _a.outOfService) !== null && _b !== void 0 ? _b : false;
+ _this.OutOfServiceMode.state =
+ (_d = (_c = state === null || state === void 0 ? void 0 : state.parameters) === null || _c === void 0 ? void 0 : _c.outOfService) !== null && _d !== void 0 ? _d : false;
+ });
+ socket.on('timer', function (data) {
+ _this.Timer.update(data);
+ });
+ };
+ Main.prototype.executeCommand = function (command, message, type) {
+ if (type === void 0) { type = 'unityRunner'; }
+ return __awaiter(this, void 0, void 0, function () {
+ var _this = this;
+ return __generator(this, function (_a) {
+ return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
+ var confirmed;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
+ title: 'Are you sure?',
+ message: message,
+ })];
+ case 1:
+ confirmed = _a.sent();
+ if (!confirmed)
+ return [2 /*return*/, resolve(false)];
+ morphux_1.MorphFeature.Loader({
+ active: true,
+ message: "Dispatching command...",
+ });
+ socket.emit(type, command, function (response) {
+ morphux_1.MorphFeature.Loader({ active: false });
+ if (!response.succeed)
+ return morphux_1.MorphFeature.Alert({
+ title: 'Error',
+ message: response.message,
+ });
+ morphux_1.MorphFeature.Notification({
+ level: 'success',
+ message: "Dispatched command",
+ });
+ });
+ resolve(true);
+ return [2 /*return*/];
+ }
+ });
+ }); })];
+ });
+ });
+ };
+ Main.prototype.showSupport = function () {
+ return __awaiter(this, void 0, void 0, function () {
+ var dialog, callAnchor;
+ return __generator(this, function (_a) {
+ dialog = new morphux_1.MorphComponent.Dialog({
+ title: 'Contact Support',
+ width: 'medium',
+ height: 'auto',
+ okButtonVisible: false,
+ cancelButtonVisible: false,
+ });
+ this.supportNumber.slice();
+ callAnchor = (0, morphux_1.ce)('a', 'ntsh_callanchor', { href: "tel:".concat(this.supportNumber) }, "+".concat(this.supportNumber));
+ dialog.content.appendChild(callAnchor);
+ setTimeout(function () { return callAnchor.click(); }, 100);
+ return [2 /*return*/];
+ });
+ });
+ };
+ return Main;
+ }());
+ exports.Main = main$1.Main = Main;
+ new Main();
+
+ exports["default"] = main$1;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+ return exports;
+
+})({});
+//# sourceMappingURL=script.js.map
diff --git a/frontend/views/control/script.js.map b/frontend/views/control/script.js.map
new file mode 100644
index 0000000..26e280d
--- /dev/null
+++ b/frontend/views/control/script.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"script.js","sources":["node_modules/engine.io-parser/build/cjs/commons.js","node_modules/engine.io-parser/build/cjs/encodePacket.browser.js","node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js","node_modules/engine.io-parser/build/cjs/decodePacket.browser.js","node_modules/engine.io-parser/build/cjs/index.js","node_modules/@socket.io/component-emitter/lib/esm/index.js","node_modules/engine.io-client/build/cjs/globals.js","node_modules/engine.io-client/build/cjs/util.js","node_modules/engine.io-client/build/cjs/contrib/parseqs.js","node_modules/ms/index.js","node_modules/debug/src/common.js","node_modules/debug/src/browser.js","node_modules/engine.io-client/build/cjs/transport.js","node_modules/engine.io-client/build/cjs/transports/polling.js","node_modules/engine.io-client/build/cjs/contrib/has-cors.js","node_modules/engine.io-client/build/cjs/transports/polling-xhr.js","node_modules/engine.io-client/build/cjs/transports/websocket.js","node_modules/engine.io-client/build/cjs/transports/webtransport.js","node_modules/engine.io-client/build/cjs/transports/index.js","node_modules/engine.io-client/build/cjs/contrib/parseuri.js","node_modules/engine.io-client/build/cjs/socket.js","node_modules/engine.io-client/build/cjs/transports/polling-fetch.js","node_modules/engine.io-client/build/cjs/index.js","node_modules/socket.io-client/build/cjs/url.js","node_modules/socket.io-parser/build/cjs/is-binary.js","node_modules/socket.io-parser/build/cjs/binary.js","node_modules/socket.io-parser/build/cjs/index.js","node_modules/socket.io-client/build/cjs/on.js","node_modules/socket.io-client/build/cjs/socket.js","node_modules/socket.io-client/build/cjs/contrib/backo2.js","node_modules/socket.io-client/build/cjs/manager.js","node_modules/socket.io-client/build/cjs/index.js","dist/menu.js","../../../../MorphUX/dist/Utils/CE.js","../../../../MorphUX/dist/Components/baseComponent.js","../../../../MorphUX/dist/Components/Button/Component.Button.js","../../../../MorphUX/dist/Utils/TextHighlighter.js","../../../../MorphUX/node_modules/sortablejs/Sortable.js","../../../../MorphUX/dist/Components/Cards/Component.Cards.js","../../../../MorphUX/dist/Keys/KeyBinderOverwrite.js","../../../../MorphUX/dist/Keys/KeyBinderBase.js","../../../../MorphUX/dist/Morph.Keys.js","../../../../MorphUX/dist/Components/ContextMenu/Component.ContextMenu.js","../../../../MorphUX/dist/Components/Dialog/Component.Dialog.js","../../../../MorphUX/dist/Components/Group/Component.Group.js","../../../../MorphUX/dist/Components/Header/Component.Header.js","../../../../MorphUX/dist/Components/IconGrid/Component.IconGrid.js","../../../../MorphUX/node_modules/@egjs/hammerjs/dist/hammer.esm.js","../../../../MorphUX/dist/Utils/Utils.js","../../../../MorphUX/dist/Components/ImageViewer/Component.ImageViewer.js","../../../../MorphUX/dist/Components/Input/Component.Input.js","../../../../MorphUX/dist/Components/List/Component.List.js","../../../../MorphUX/dist/Components/MenuBar/Component.MenuBar.js","../../../../MorphUX/dist/Components/PaletteCheckbox/Component.PaletteCheckbox.js","../../../../MorphUX/dist/Components/PaletteSearch/Component.PaletteSearch.js","../../../../MorphUX/dist/Components/Resizer/Component.Resizer.js","../../../../MorphUX/dist/Components/Row/Component.Row.js","../../../../MorphUX/dist/Components/Select/Component.Select.js","../../../../MorphUX/dist/Components/Table/Component.Table._base.js","../../../../MorphUX/dist/Components/Table/Component.Table.Button.js","../../../../MorphUX/dist/Components/Table/Component.Table.Text.js","../../../../MorphUX/dist/Components/Table/Component.Table.Duration.js","../../../../MorphUX/dist/Components/Table/Component.Table.Icons.js","../../../../MorphUX/dist/Components/Table/Component.Table.MaterialSymbol.js","../../../../MorphUX/dist/Components/Table/Component.Table.Number.js","../../../../MorphUX/dist/Components/Table/Component.Table.Select.js","../../../../MorphUX/dist/Components/Table/Component.Table.TextSuggestions.js","../../../../MorphUX/dist/Components/Table/Component.Table.js","../../../../MorphUX/dist/Components/Text/Component.Text.js","../../../../MorphUX/dist/Morph.Components.js","../../../../MorphUX/dist/Features/Alert/Feature.Alert.js","../../../../MorphUX/dist/Features/Confirm/Feature.Confirm.js","../../../../MorphUX/dist/Features/Loader/Feature.Loader.js","../../../../MorphUX/dist/Features/Notification/Feature.Notification.js","../../../../MorphUX/dist/Features/Prompt/Feature.Prompt.js","../../../../MorphUX/dist/Morph.Features.js","../../../../MorphUX/dist/Utils/clone.js","../../../../MorphUX/dist/Morph.Utils.js","../../../../MorphUX/dist/Index.js","dist/checklist.js","dist/calibration.js","dist/outOfServiceMode.js","dist/timer.js","dist/main.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERROR_PACKET = exports.PACKET_TYPES_REVERSE = exports.PACKET_TYPES = void 0;\nconst PACKET_TYPES = Object.create(null); // no Map = no polyfill\nexports.PACKET_TYPES = PACKET_TYPES;\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nexports.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE;\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexports.ERROR_PACKET = ERROR_PACKET;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodePacket = void 0;\nexports.encodePacketToBinary = encodePacketToBinary;\nconst commons_js_1 = require(\"./commons.js\");\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(commons_js_1.PACKET_TYPES[type] + (data || \"\"));\n};\nexports.encodePacket = encodePacket;\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nfunction encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\n// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nconst encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexports.encode = encode;\nconst decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\nexports.decode = decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodePacket = void 0;\nconst commons_js_1 = require(\"./commons.js\");\nconst base64_arraybuffer_js_1 = require(\"./contrib/base64-arraybuffer.js\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = commons_js_1.PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return commons_js_1.ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: commons_js_1.PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: commons_js_1.PACKET_TYPES_REVERSE[type],\n };\n};\nexports.decodePacket = decodePacket;\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = (0, base64_arraybuffer_js_1.decode)(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0;\nexports.createPacketEncoderStream = createPacketEncoderStream;\nexports.createPacketDecoderStream = createPacketDecoderStream;\nconst encodePacket_js_1 = require(\"./encodePacket.js\");\nObject.defineProperty(exports, \"encodePacket\", { enumerable: true, get: function () { return encodePacket_js_1.encodePacket; } });\nconst decodePacket_js_1 = require(\"./decodePacket.js\");\nObject.defineProperty(exports, \"decodePacket\", { enumerable: true, get: function () { return decodePacket_js_1.decodePacket; } });\nconst commons_js_1 = require(\"./commons.js\");\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n (0, encodePacket_js_1.encodePacket)(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nexports.encodePayload = encodePayload;\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = (0, decodePacket_js_1.decodePacket)(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexports.decodePayload = decodePayload;\nfunction createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n (0, encodePacket_js_1.encodePacketToBinary)(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nfunction createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(commons_js_1.ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue((0, decodePacket_js_1.decodePacket)(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(commons_js_1.ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexports.protocol = 4;\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultBinaryType = exports.globalThisShim = exports.nextTick = void 0;\nexports.createCookieJar = createCookieJar;\nexports.nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexports.globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexports.defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pick = pick;\nexports.installTimerFunctions = installTimerFunctions;\nexports.byteLength = byteLength;\nexports.randomString = randomString;\nconst globals_node_js_1 = require(\"./globals.node.js\");\nfunction pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globals_node_js_1.globalThisShim.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globals_node_js_1.globalThisShim.clearTimeout;\nfunction installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globals_node_js_1.globalThisShim);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globals_node_js_1.globalThisShim);\n }\n else {\n obj.setTimeoutFn = globals_node_js_1.globalThisShim.setTimeout.bind(globals_node_js_1.globalThisShim);\n obj.clearTimeoutFn = globals_node_js_1.globalThisShim.clearTimeout.bind(globals_node_js_1.globalThisShim);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nfunction byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nfunction randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","\"use strict\";\n// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = encode;\nexports.decode = decode;\nfunction encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nfunction decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transport = exports.TransportError = void 0;\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst util_js_1 = require(\"./util.js\");\nconst parseqs_js_1 = require(\"./contrib/parseqs.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:transport\"); // debug()\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexports.TransportError = TransportError;\nclass Transport extends component_emitter_1.Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n (0, util_js_1.installTimerFunctions)(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n debug(\"transport is not open, discarding packets\");\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = (0, engine_io_parser_1.decodePacket)(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port) !== 443) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = (0, parseqs_js_1.encode)(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\nexports.Transport = Transport;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Polling = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst util_js_1 = require(\"../util.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:polling\"); // debug()\nclass Polling extends transport_js_1.Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n debug(\"paused\");\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n debug(\"we are currently polling - waiting to pause\");\n total++;\n this.once(\"pollComplete\", function () {\n debug(\"pre-pause polling complete\");\n --total || pause();\n });\n }\n if (!this.writable) {\n debug(\"we are currently writing - waiting to pause\");\n total++;\n this.once(\"drain\", function () {\n debug(\"pre-pause writing complete\");\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n debug(\"polling\");\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n debug(\"polling got data %s\", data);\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n (0, engine_io_parser_1.decodePayload)(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n debug(\"writing close packet\");\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n debug(\"transport open - closing\");\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug(\"transport not open - deferring close\");\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n (0, engine_io_parser_1.encodePayload)(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = (0, util_js_1.randomString)();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nexports.Polling = Polling;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasCORS = void 0;\n// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexports.hasCORS = value;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XHR = exports.Request = exports.BaseXHR = void 0;\nconst polling_js_1 = require(\"./polling.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst util_js_1 = require(\"../util.js\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst has_cors_js_1 = require(\"../contrib/has-cors.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:polling\"); // debug()\nfunction empty() { }\nclass BaseXHR extends polling_js_1.Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n debug(\"xhr poll\");\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexports.BaseXHR = BaseXHR;\nclass Request extends component_emitter_1.Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n (0, util_js_1.installTimerFunctions)(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = (0, util_js_1.pick)(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n debug(\"xhr open %s: %s\", this._method, this._uri);\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n debug(\"xhr data %s\", this._data);\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nexports.Request = Request;\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globals_node_js_1.globalThisShim ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nclass XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nexports.XHR = XHR;\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || has_cors_js_1.hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globals_node_js_1.globalThisShim[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WS = exports.BaseWS = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst util_js_1 = require(\"../util.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:websocket\"); // debug()\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nclass BaseWS extends transport_js_1.Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : (0, util_js_1.pick)(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n (0, engine_io_parser_1.encodePacket)(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n debug(\"websocket closed before onclose event\");\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n (0, globals_node_js_1.nextTick)(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = (0, util_js_1.randomString)();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nexports.BaseWS = BaseWS;\nconst WebSocketCtor = globals_node_js_1.globalThisShim.WebSocket || globals_node_js_1.globalThisShim.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nclass WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\nexports.WS = WS;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WT = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:webtransport\"); // debug()\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nclass WT extends transport_js_1.Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n debug(\"transport closed gracefully\");\n this.onClose();\n })\n .catch((err) => {\n debug(\"transport closed due to %s\", err);\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = (0, engine_io_parser_1.createPacketDecoderStream)(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = (0, engine_io_parser_1.createPacketEncoderStream)();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n debug(\"session is closed\");\n return;\n }\n debug(\"received chunk: %o\", value);\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n debug(\"an error occurred while reading: %s\", err);\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n (0, globals_node_js_1.nextTick)(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\nexports.WT = WT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transports = void 0;\nconst polling_xhr_node_js_1 = require(\"./polling-xhr.node.js\");\nconst websocket_node_js_1 = require(\"./websocket.node.js\");\nconst webtransport_js_1 = require(\"./webtransport.js\");\nexports.transports = {\n websocket: websocket_node_js_1.WS,\n webtransport: webtransport_js_1.WT,\n polling: polling_xhr_node_js_1.XHR,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\n// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nfunction parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = void 0;\nconst index_js_1 = require(\"./transports/index.js\");\nconst util_js_1 = require(\"./util.js\");\nconst parseqs_js_1 = require(\"./contrib/parseqs.js\");\nconst parseuri_js_1 = require(\"./contrib/parseuri.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst globals_node_js_1 = require(\"./globals.node.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:socket\"); // debug()\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n debug(\"closing %d connection(s) because the network was lost\", OFFLINE_EVENT_LISTENERS.length);\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nclass SocketWithoutUpgrade extends component_emitter_1.Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = globals_node_js_1.defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = (0, parseuri_js_1.parse)(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = (0, parseuri_js_1.parse)(opts.host).host;\n }\n (0, util_js_1.installTimerFunctions)(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = (0, parseqs_js_1.decode)(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n debug(\"adding listener for the 'offline' event\");\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = (0, globals_node_js_1.createCookieJar)();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n debug('creating transport \"%s\"', name);\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = engine_io_parser_1.protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n debug(\"options: %j\", opts);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n debug(\"setting transport %s\", transport.name);\n if (this.transport) {\n debug(\"clearing existing transport %s\", this.transport.name);\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n debug(\"socket open\");\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n debug(\"flushing %d packets in socket\", packets.length);\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += (0, util_js_1.byteLength)(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n debug(\"only send %d out of %d packets\", i, this.writeBuffer.length);\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n debug(\"payload size is %d (max: %d)\", payloadSize, this._maxPayload);\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n debug(\"throttled timer detected, scheduling connection close\");\n this._pingTimeoutTime = 0;\n (0, globals_node_js_1.nextTick)(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n debug(\"socket closing - telling transport to close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n debug(\"socket error %j\", err);\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n debug(\"trying next transport\");\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n debug(\"removing listener for the 'offline' event\");\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nexports.SocketWithoutUpgrade = SocketWithoutUpgrade;\nSocketWithoutUpgrade.protocol = engine_io_parser_1.protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nclass SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n debug(\"starting upgrade probes\");\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n debug('probing transport \"%s\"', name);\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n debug('probe transport \"%s\" pong', name);\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n debug('pausing current transport \"%s\"', this.transport.name);\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n debug(\"changing transport and sending upgrade packet\");\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n debug('probe transport \"%s\" failed', name);\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nexports.SocketWithUpgrade = SocketWithUpgrade;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nclass Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => index_js_1.transports[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\nexports.Socket = Socket;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Fetch = void 0;\nconst polling_js_1 = require(\"./polling.js\");\n/**\n * HTTP long-polling based on the built-in `fetch()` method.\n *\n * Usage: browser, Node.js (since v18), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * @see https://caniuse.com/fetch\n * @see https://nodejs.org/api/globals.html#fetch\n */\nclass Fetch extends polling_js_1.Polling {\n doPoll() {\n this._fetch()\n .then((res) => {\n if (!res.ok) {\n return this.onError(\"fetch read error\", res.status, res);\n }\n res.text().then((data) => this.onData(data));\n })\n .catch((err) => {\n this.onError(\"fetch read error\", err);\n });\n }\n doWrite(data, callback) {\n this._fetch(data)\n .then((res) => {\n if (!res.ok) {\n return this.onError(\"fetch write error\", res.status, res);\n }\n callback();\n })\n .catch((err) => {\n this.onError(\"fetch write error\", err);\n });\n }\n _fetch(data) {\n var _a;\n const isPost = data !== undefined;\n const headers = new Headers(this.opts.extraHeaders);\n if (isPost) {\n headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n }\n (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.appendCookies(headers);\n return fetch(this.uri(), {\n method: isPost ? \"POST\" : \"GET\",\n body: isPost ? data : null,\n headers,\n credentials: this.opts.withCredentials ? \"include\" : \"omit\",\n }).then((res) => {\n var _a;\n // @ts-ignore getSetCookie() was added in Node.js v19.7.0\n (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(res.headers.getSetCookie());\n return res;\n });\n }\n}\nexports.Fetch = Fetch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.nextTick = exports.parse = exports.installTimerFunctions = exports.transports = exports.TransportError = exports.Transport = exports.protocol = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = exports.Socket = void 0;\nconst socket_js_1 = require(\"./socket.js\");\nObject.defineProperty(exports, \"Socket\", { enumerable: true, get: function () { return socket_js_1.Socket; } });\nvar socket_js_2 = require(\"./socket.js\");\nObject.defineProperty(exports, \"SocketWithoutUpgrade\", { enumerable: true, get: function () { return socket_js_2.SocketWithoutUpgrade; } });\nObject.defineProperty(exports, \"SocketWithUpgrade\", { enumerable: true, get: function () { return socket_js_2.SocketWithUpgrade; } });\nexports.protocol = socket_js_1.Socket.protocol;\nvar transport_js_1 = require(\"./transport.js\");\nObject.defineProperty(exports, \"Transport\", { enumerable: true, get: function () { return transport_js_1.Transport; } });\nObject.defineProperty(exports, \"TransportError\", { enumerable: true, get: function () { return transport_js_1.TransportError; } });\nvar index_js_1 = require(\"./transports/index.js\");\nObject.defineProperty(exports, \"transports\", { enumerable: true, get: function () { return index_js_1.transports; } });\nvar util_js_1 = require(\"./util.js\");\nObject.defineProperty(exports, \"installTimerFunctions\", { enumerable: true, get: function () { return util_js_1.installTimerFunctions; } });\nvar parseuri_js_1 = require(\"./contrib/parseuri.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parseuri_js_1.parse; } });\nvar globals_node_js_1 = require(\"./globals.node.js\");\nObject.defineProperty(exports, \"nextTick\", { enumerable: true, get: function () { return globals_node_js_1.nextTick; } });\nvar polling_fetch_js_1 = require(\"./transports/polling-fetch.js\");\nObject.defineProperty(exports, \"Fetch\", { enumerable: true, get: function () { return polling_fetch_js_1.Fetch; } });\nvar polling_xhr_node_js_1 = require(\"./transports/polling-xhr.node.js\");\nObject.defineProperty(exports, \"NodeXHR\", { enumerable: true, get: function () { return polling_xhr_node_js_1.XHR; } });\nvar polling_xhr_js_1 = require(\"./transports/polling-xhr.js\");\nObject.defineProperty(exports, \"XHR\", { enumerable: true, get: function () { return polling_xhr_js_1.XHR; } });\nvar websocket_node_js_1 = require(\"./transports/websocket.node.js\");\nObject.defineProperty(exports, \"NodeWebSocket\", { enumerable: true, get: function () { return websocket_node_js_1.WS; } });\nvar websocket_js_1 = require(\"./transports/websocket.js\");\nObject.defineProperty(exports, \"WebSocket\", { enumerable: true, get: function () { return websocket_js_1.WS; } });\nvar webtransport_js_1 = require(\"./transports/webtransport.js\");\nObject.defineProperty(exports, \"WebTransport\", { enumerable: true, get: function () { return webtransport_js_1.WT; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.url = url;\nconst engine_io_client_1 = require(\"engine.io-client\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:url\"); // debug()\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nfunction url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug(\"protocol-less url %s\", uri);\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n debug(\"parse %s\", uri);\n obj = (0, engine_io_client_1.parse)(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBinary = isBinary;\nexports.hasBinary = hasBinary;\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nfunction isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nfunction hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deconstructPacket = deconstructPacket;\nexports.reconstructPacket = reconstructPacket;\nconst is_binary_js_1 = require(\"./is-binary.js\");\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nfunction deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if ((0, is_binary_js_1.isBinary)(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nfunction reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\nexports.isPacketValid = isPacketValid;\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst binary_js_1 = require(\"./binary.js\");\nconst is_binary_js_1 = require(\"./is-binary.js\");\nconst debug_1 = require(\"debug\"); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-parser\"); // debug()\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\", // used on the client side\n \"connect_error\", // used on the client side\n \"disconnect\", // used on both sides\n \"disconnecting\", // used on the server side\n \"newListener\", // used by the Node.js EventEmitter\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexports.protocol = 5;\nvar PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (exports.PacketType = PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nclass Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n debug(\"encoding packet %j\", obj);\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if ((0, is_binary_js_1.hasBinary)(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n debug(\"encoded %j as %s\", obj, str);\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = (0, binary_js_1.deconstructPacket)(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nclass Decoder extends component_emitter_1.Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if ((0, is_binary_js_1.isBinary)(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n debug(\"decoded %s as %j\", str, p);\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\nexports.Decoder = Decoder;\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = (0, binary_js_1.reconstructPacket)(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\nfunction isNamespaceValid(nsp) {\n return typeof nsp === \"string\";\n}\n// see https://caniuse.com/mdn-javascript_builtins_number_isinteger\nconst isInteger = Number.isInteger ||\n function (value) {\n return (typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value);\n };\nfunction isAckIdValid(id) {\n return id === undefined || isInteger(id);\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\nfunction isDataValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return payload === undefined || isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n return Array.isArray(payload);\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n default:\n return false;\n }\n}\nfunction isPacketValid(packet) {\n return (isNamespaceValid(packet.nsp) &&\n isAckIdValid(packet.id) &&\n isDataValid(packet.type, packet.data));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.on = on;\nfunction on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = void 0;\nconst socket_io_parser_1 = require(\"socket.io-parser\");\nconst on_js_1 = require(\"./on.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:socket\"); // debug()\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nclass Socket extends component_emitter_1.Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n (0, on_js_1.on)(io, \"open\", this.onopen.bind(this)),\n (0, on_js_1.on)(io, \"packet\", this.onpacket.bind(this)),\n (0, on_js_1.on)(io, \"error\", this.onerror.bind(this)),\n (0, on_js_1.on)(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: socket_io_parser_1.PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n debug(\"emitting packet with ack id %d\", id);\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n debug(\"discard packet as the transport is not currently writable\");\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n debug(\"removing packet with ack id %d from the buffer\", id);\n this.sendBuffer.splice(i, 1);\n }\n }\n debug(\"event with ack id %d has timed out after %d ms\", id, timeout);\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n return debug(\"packet [%d] already acknowledged\", packet.id);\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n debug(\"packet [%d] is discarded after %d tries\", packet.id, packet.tryCount);\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n debug(\"packet [%d] was successfully sent\", packet.id);\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n debug(\"draining queue\");\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n debug(\"packet [%d] has already been sent and is waiting for an ack\", packet.id);\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n debug(\"sending packet [%d] (try n°%d)\", packet.id, packet.tryCount);\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n debug(\"transport is open - connecting\");\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: socket_io_parser_1.PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n debug(\"close (%s)\", reason);\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case socket_io_parser_1.PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case socket_io_parser_1.PacketType.EVENT:\n case socket_io_parser_1.PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case socket_io_parser_1.PacketType.ACK:\n case socket_io_parser_1.PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case socket_io_parser_1.PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case socket_io_parser_1.PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n debug(\"emitting event %j\", args);\n if (null != packet.id) {\n debug(\"attaching ack callback to event\");\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n debug(\"sending ack %j\", args);\n self.packet({\n type: socket_io_parser_1.PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n debug(\"bad ack %s\", packet.id);\n return;\n }\n delete this.acks[packet.id];\n debug(\"calling ack %s with %j\", packet.id, packet.data);\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n debug(\"socket connected with id %s\", id);\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this._drainQueue(true);\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n debug(\"server disconnect (%s)\", this.nsp);\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n debug(\"performing disconnect (%s)\", this.nsp);\n this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\nexports.Socket = Socket;\n","\"use strict\";\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Backoff = Backoff;\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manager = void 0;\nconst engine_io_client_1 = require(\"engine.io-client\");\nconst socket_js_1 = require(\"./socket.js\");\nconst parser = __importStar(require(\"socket.io-parser\"));\nconst on_js_1 = require(\"./on.js\");\nconst backo2_js_1 = require(\"./contrib/backo2.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:manager\"); // debug()\nclass Manager extends component_emitter_1.Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n (0, engine_io_client_1.installTimerFunctions)(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new backo2_js_1.Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n debug(\"readyState %s\", this._readyState);\n if (~this._readyState.indexOf(\"open\"))\n return this;\n debug(\"opening %s\", this.uri);\n this.engine = new engine_io_client_1.Socket(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = (0, on_js_1.on)(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n debug(\"error\");\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = (0, on_js_1.on)(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n debug(\"connect attempt will timeout after %d\", timeout);\n // set timer\n const timer = this.setTimeoutFn(() => {\n debug(\"connect attempt timed out after %d\", timeout);\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n debug(\"open\");\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push((0, on_js_1.on)(socket, \"ping\", this.onping.bind(this)), (0, on_js_1.on)(socket, \"data\", this.ondata.bind(this)), (0, on_js_1.on)(socket, \"error\", this.onerror.bind(this)), (0, on_js_1.on)(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n (0, on_js_1.on)(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n (0, engine_io_client_1.nextTick)(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n debug(\"error\", err);\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new socket_js_1.Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n debug(\"socket %s is still active, skipping close\", nsp);\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n debug(\"writing packet %j\", packet);\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n debug(\"cleanup\");\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n debug(\"disconnect\");\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n debug(\"closed due to %s\", reason);\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug(\"reconnect failed\");\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n debug(\"will wait %dms before reconnect attempt\", delay);\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n debug(\"attempting reconnect\");\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n debug(\"reconnect attempt error\");\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n debug(\"reconnect success\");\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\nexports.Manager = Manager;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.Socket = exports.Manager = exports.protocol = void 0;\nexports.io = lookup;\nexports.connect = lookup;\nexports.default = lookup;\nconst url_js_1 = require(\"./url.js\");\nconst manager_js_1 = require(\"./manager.js\");\nObject.defineProperty(exports, \"Manager\", { enumerable: true, get: function () { return manager_js_1.Manager; } });\nconst socket_js_1 = require(\"./socket.js\");\nObject.defineProperty(exports, \"Socket\", { enumerable: true, get: function () { return socket_js_1.Socket; } });\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client\"); // debug()\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = (0, url_js_1.url)(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n debug(\"ignoring socket cache for %s\", source);\n io = new manager_js_1.Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n debug(\"new io instance for %s\", source);\n cache[id] = new manager_js_1.Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager: manager_js_1.Manager,\n Socket: socket_js_1.Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nvar socket_io_parser_1 = require(\"socket.io-parser\");\nObject.defineProperty(exports, \"protocol\", { enumerable: true, get: function () { return socket_io_parser_1.protocol; } });\nvar engine_io_client_1 = require(\"engine.io-client\");\nObject.defineProperty(exports, \"Fetch\", { enumerable: true, get: function () { return engine_io_client_1.Fetch; } });\nObject.defineProperty(exports, \"NodeXHR\", { enumerable: true, get: function () { return engine_io_client_1.NodeXHR; } });\nObject.defineProperty(exports, \"XHR\", { enumerable: true, get: function () { return engine_io_client_1.XHR; } });\nObject.defineProperty(exports, \"NodeWebSocket\", { enumerable: true, get: function () { return engine_io_client_1.NodeWebSocket; } });\nObject.defineProperty(exports, \"WebSocket\", { enumerable: true, get: function () { return engine_io_client_1.WebSocket; } });\nObject.defineProperty(exports, \"WebTransport\", { enumerable: true, get: function () { return engine_io_client_1.WebTransport; } });\n\nmodule.exports = lookup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Menu = void 0;\nvar Menu = /** @class */ (function () {\n function Menu() {\n this.menuContainer = document.querySelector('.ntsh_menubar');\n this.tabContainer = document.querySelector('.ntsh_tabs');\n this.registerListeners();\n if (window.location.search.includes('advanced'))\n this.selectTab('advanced');\n }\n Menu.prototype.selectTab = function (tabId) {\n this.menuContainer\n .querySelectorAll('.ntsh_menubar-item')\n .forEach(function (item) {\n if (item.getAttribute('tabid') === tabId) {\n item.classList.add('selected');\n }\n else {\n item.classList.remove('selected');\n }\n });\n this.tabContainer.querySelectorAll('.ntsh_tab').forEach(function (tab) {\n if (tab.getAttribute('tabid') === tabId) {\n tab.classList.add('visible');\n }\n else {\n tab.classList.remove('visible');\n }\n });\n };\n Menu.prototype.registerListeners = function () {\n var _this = this;\n this.menuContainer\n .querySelectorAll('.ntsh_menubar-item')\n .forEach(function (item) {\n item.addEventListener('click', function () {\n var itemId = item.getAttribute('tabid');\n _this.selectTab(itemId);\n });\n });\n };\n return Menu;\n}());\nexports.Menu = Menu;\n//# sourceMappingURL=menu.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ce = void 0;\nfunction ce(tagName, classList, attributes, innerText, innerHTML, style) {\n var _a;\n var element = document.createElement(tagName);\n if (classList)\n if (typeof classList == 'string')\n element.classList.add(classList);\n else\n (_a = element.classList).add.apply(_a, classList);\n if (attributes)\n for (var key in attributes)\n if (element[key] != undefined)\n element[key] = attributes[key];\n else\n element.setAttribute(key, String(attributes[key]));\n if (innerText)\n element.innerText = innerText;\n if (innerHTML)\n element.innerHTML = innerHTML;\n if (style != undefined)\n for (var key in style)\n element.style[key] = style[key];\n return element;\n}\nexports.ce = ce;\n//# sourceMappingURL=CE.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MUXComponent = void 0;\nvar MUXComponent = /** @class */ (function () {\n function MUXComponent() {\n this._events = {};\n }\n MUXComponent.prototype.callEvent = function (event) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (this._events[event] != undefined) {\n (_a = this._events)[event].apply(_a, args);\n }\n };\n MUXComponent.prototype.on = function (event, callback) {\n this._events[event] = callback;\n };\n MUXComponent.prototype.destroy = function () {\n this.container.remove();\n };\n return MUXComponent;\n}());\nexports.MUXComponent = MUXComponent;\n//# sourceMappingURL=baseComponent.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentButton = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentButton = /** @class */ (function (_super) {\n __extends(ComponentButton, _super);\n function ComponentButton(options) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this.mode = 'normal';\n _this.mode = (_a = options === null || options === void 0 ? void 0 : options.mode) !== null && _a !== void 0 ? _a : 'normal';\n var target = (_b = options === null || options === void 0 ? void 0 : options.target) !== null && _b !== void 0 ? _b : '';\n _this.container = (0, CE_1.ce)(typeof target === 'string' ? 'a' : 'div', [\n 'mux_button',\n \"mux_\".concat(_this.mode),\n ]);\n if ((options === null || options === void 0 ? void 0 : options.materialIcon) != undefined)\n _this.container.append((0, CE_1.ce)('span', 'material-symbols-outlined', null, options.materialIcon));\n _this.container.appendChild((0, CE_1.ce)('span', ['mux_text', 'mux_normal'], null, options.content));\n _this.container.onclick = function (e) {\n e.preventDefault();\n if (_this.mode == 'disabled')\n return;\n if (typeof target === 'function')\n target();\n else {\n if ((options === null || options === void 0 ? void 0 : options.openInNewTab) == true)\n window.open(target, '_blank');\n else\n window.location.href = target;\n }\n };\n if (typeof target === 'string')\n _this.container.setAttribute('href', target);\n return _this;\n }\n ComponentButton.prototype.updateContent = function (content) {\n this.container.innerHTML = content;\n };\n ComponentButton.prototype.updateMode = function (mode) {\n this.mode = mode;\n this.container.classList.remove('mux_normal');\n this.container.classList.remove('mux_highlight');\n this.container.classList.remove('mux_secondary');\n this.container.classList.remove('mux_disabled');\n this.container.classList.add(\"mux_\".concat(mode));\n };\n return ComponentButton;\n}(baseComponent_1.MUXComponent));\nexports.ComponentButton = ComponentButton;\n//# sourceMappingURL=Component.Button.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateTextHighlights = void 0;\nfunction generateTextHighlights(originalText, additionalClassnames) {\n var _a;\n if (additionalClassnames === void 0) { additionalClassnames = []; }\n var div = document.createElement('div');\n (_a = div.classList).add.apply(_a, additionalClassnames);\n var remainingStr = originalText;\n var regex = /\\<(.*?)\\>/;\n while (remainingStr.length) {\n var match = regex.exec(remainingStr);\n if (match) {\n var normalText = remainingStr.substring(0, match.index);\n if (normalText) {\n var normalSpan = document.createElement('span');\n normalSpan.className = 'normal';\n normalSpan.textContent = normalText;\n div.appendChild(normalSpan);\n }\n var highlightSpan = document.createElement('span');\n highlightSpan.className = 'highlight';\n highlightSpan.textContent = match[1];\n div.appendChild(highlightSpan);\n remainingStr = remainingStr.substring(match.index + match[0].length);\n }\n else {\n var normalSpan = document.createElement('span');\n normalSpan.className = 'normal';\n normalSpan.textContent = remainingStr;\n div.appendChild(normalSpan);\n break;\n }\n }\n return div;\n}\nexports.generateTextHighlights = generateTextHighlights;\n//# sourceMappingURL=TextHighlighter.js.map","/**!\n * Sortable\n * @author\tRubaXa \n * @license MIT\n */\n\n\n(function (factory) {\n\t\"use strict\";\n\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(factory);\n\t}\n\telse if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n\t\tmodule.exports = factory();\n\t}\n\telse if (typeof Package !== \"undefined\") {\n\t\tSortable = factory(); // export for Meteor.js\n\t}\n\telse {\n\t\t/* jshint sub:true */\n\t\twindow[\"Sortable\"] = factory();\n\t}\n})(function () {\n\t\"use strict\";\n\n\tvar dragEl,\n\t\tghostEl,\n\t\tcloneEl,\n\t\trootEl,\n\t\tnextEl,\n\n\t\tscrollEl,\n\t\tscrollParentEl,\n\n\t\tlastEl,\n\t\tlastCSS,\n\n\t\toldIndex,\n\t\tnewIndex,\n\n\t\tactiveGroup,\n\t\tautoScroll = {},\n\n\t\ttapEvt,\n\t\ttouchEvt,\n\n\t\t/** @const */\n\t\tRSPACE = /\\s+/g,\n\n\t\texpando = 'Sortable' + (new Date).getTime(),\n\n\t\twin = window,\n\t\tdocument = win.document,\n\t\tparseInt = win.parseInt,\n\n\t\tsupportDraggable = !!('draggable' in document.createElement('div')),\n\n\t\t_silent = false,\n\n\t\tabs = Math.abs,\n\t\tslice = [].slice,\n\n\t\ttouchDragOverListeners = [],\n\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n\t\t\tif (rootEl && options.scroll) {\n\t\t\t\tvar el,\n\t\t\t\t\trect,\n\t\t\t\t\tsens = options.scrollSensitivity,\n\t\t\t\t\tspeed = options.scrollSpeed,\n\n\t\t\t\t\tx = evt.clientX,\n\t\t\t\t\ty = evt.clientY,\n\n\t\t\t\t\twinWidth = window.innerWidth,\n\t\t\t\t\twinHeight = window.innerHeight,\n\n\t\t\t\t\tvx,\n\t\t\t\t\tvy\n\t\t\t\t;\n\n\t\t\t\t// Delect scrollEl\n\t\t\t\tif (scrollParentEl !== rootEl) {\n\t\t\t\t\tscrollEl = options.scroll;\n\t\t\t\t\tscrollParentEl = rootEl;\n\n\t\t\t\t\tif (scrollEl === true) {\n\t\t\t\t\t\tscrollEl = rootEl;\n\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||\n\t\t\t\t\t\t\t\t(scrollEl.offsetHeight < scrollEl.scrollHeight)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\t\t} while (scrollEl = scrollEl.parentNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (scrollEl) {\n\t\t\t\t\tel = scrollEl;\n\t\t\t\t\trect = scrollEl.getBoundingClientRect();\n\t\t\t\t\tvx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);\n\t\t\t\t\tvy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);\n\t\t\t\t}\n\n\n\t\t\t\tif (!(vx || vy)) {\n\t\t\t\t\tvx = (winWidth - x <= sens) - (x <= sens);\n\t\t\t\t\tvy = (winHeight - y <= sens) - (y <= sens);\n\n\t\t\t\t\t/* jshint expr:true */\n\t\t\t\t\t(vx || vy) && (el = win);\n\t\t\t\t}\n\n\n\t\t\t\tif (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {\n\t\t\t\t\tautoScroll.el = el;\n\t\t\t\t\tautoScroll.vx = vx;\n\t\t\t\t\tautoScroll.vy = vy;\n\n\t\t\t\t\tclearInterval(autoScroll.pid);\n\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tautoScroll.pid = setInterval(function () {\n\t\t\t\t\t\t\tif (el === win) {\n\t\t\t\t\t\t\t\twin.scrollTo(win.pageXOffset + vx * speed, win.pageYOffset + vy * speed);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvy && (el.scrollTop += vy * speed);\n\t\t\t\t\t\t\t\tvx && (el.scrollLeft += vx * speed);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 24);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 30)\n\t;\n\n\n\n\t/**\n\t * @class Sortable\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tfunction Sortable(el, options) {\n\t\tthis.el = el; // root element\n\t\tthis.options = options = _extend({}, options);\n\n\n\t\t// Export instance\n\t\tel[expando] = this;\n\n\n\t\t// Default options\n\t\tvar defaults = {\n\t\t\tgroup: Math.random(),\n\t\t\tsort: true,\n\t\t\tdisabled: false,\n\t\t\tstore: null,\n\t\t\thandle: null,\n\t\t\tscroll: true,\n\t\t\tscrollSensitivity: 30,\n\t\t\tscrollSpeed: 10,\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',\n\t\t\tghostClass: 'sortable-ghost',\n\t\t\tignore: 'a, img',\n\t\t\tfilter: null,\n\t\t\tanimation: 0,\n\t\t\tsetData: function (dataTransfer, dragEl) {\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\n\t\t\t},\n\t\t\tdropBubble: false,\n\t\t\tdragoverBubble: false,\n\t\t\tdataIdAttr: 'data-id',\n\t\t\tdelay: 0\n\t\t};\n\n\n\t\t// Set default options\n\t\tfor (var name in defaults) {\n\t\t\t!(name in options) && (options[name] = defaults[name]);\n\t\t}\n\n\n\t\tvar group = options.group;\n\n\t\tif (!group || typeof group != 'object') {\n\t\t\tgroup = options.group = { name: group };\n\t\t}\n\n\n\t\t['pull', 'put'].forEach(function (key) {\n\t\t\tif (!(key in group)) {\n\t\t\t\tgroup[key] = true;\n\t\t\t}\n\t\t});\n\n\n\t\toptions.groups = ' ' + group.name + (group.put.join ? ' ' + group.put.join(' ') : '') + ' ';\n\n\n\t\t// Bind all private methods\n\t\tfor (var fn in this) {\n\t\t\tif (fn.charAt(0) === '_') {\n\t\t\t\tthis[fn] = _bind(this, this[fn]);\n\t\t\t}\n\t\t}\n\n\n\t\t// Bind events\n\t\t_on(el, 'mousedown', this._onTapStart);\n\t\t_on(el, 'touchstart', this._onTapStart);\n\n\t\t_on(el, 'dragover', this);\n\t\t_on(el, 'dragenter', this);\n\n\t\ttouchDragOverListeners.push(this._onDragOver);\n\n\t\t// Restore sorting\n\t\toptions.store && this.sort(options.store.get(this));\n\t}\n\n\n\tSortable.prototype = /** @lends Sortable.prototype */ {\n\t\tconstructor: Sortable,\n\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\n\t\t\tvar _this = this,\n\t\t\t\tel = this.el,\n\t\t\t\toptions = this.options,\n\t\t\t\ttype = evt.type,\n\t\t\t\ttouch = evt.touches && evt.touches[0],\n\t\t\t\ttarget = (touch || evt).target,\n\t\t\t\toriginalTarget = target,\n\t\t\t\tfilter = options.filter;\n\n\n\t\t\tif (type === 'mousedown' && evt.button !== 0 || options.disabled) {\n\t\t\t\treturn; // only left button or enabled\n\t\t\t}\n\n\t\t\ttarget = _closest(target, options.draggable, el);\n\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// get the index of the dragged element within its parent\n\t\t\toldIndex = _index(target);\n\n\t\t\t// Check filter\n\t\t\tif (typeof filter === 'function') {\n\t\t\t\tif (filter.call(this, evt, target, this)) {\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, oldIndex);\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (filter) {\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el);\n\n\t\t\t\t\tif (criteria) {\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, oldIndex);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// Prepare `dragstart`\n\t\t\tthis._prepareDragStart(evt, touch, target);\n\t\t},\n\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n\t\t\tvar _this = this,\n\t\t\t\tel = _this.el,\n\t\t\t\toptions = _this.options,\n\t\t\t\townerDocument = el.ownerDocument,\n\t\t\t\tdragStartFn;\n\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\n\t\t\t\ttapEvt = evt;\n\n\t\t\t\trootEl = el;\n\t\t\t\tdragEl = target;\n\t\t\t\tnextEl = dragEl.nextSibling;\n\t\t\t\tactiveGroup = options.group;\n\n\t\t\t\tdragStartFn = function () {\n\t\t\t\t\t// Delayed drag has been triggered\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\n\t\t\t\t\t_this._disableDelayedDrag();\n\n\t\t\t\t\t// Make the element draggable\n\t\t\t\t\tdragEl.draggable = true;\n\n\t\t\t\t\t// Disable \"draggable\"\n\t\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\n\t\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\n\t\t\t\t\t});\n\n\t\t\t\t\t// Bind the events: dragstart/dragend\n\t\t\t\t\t_this._triggerDragStart(touch);\n\t\t\t\t};\n\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\n\n\t\t\t\tif (options.delay) {\n\t\t\t\t\t// If the user moves the pointer before the delay has been reached:\n\t\t\t\t\t// disable the delayed drag\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._disableDelayedDrag);\n\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n\t\t\t\t} else {\n\t\t\t\t\tdragStartFn();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_disableDelayedDrag: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t_off(ownerDocument, 'mousemove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchmove', this._disableDelayedDrag);\n\t\t},\n\n\t\t_triggerDragStart: function (/** Touch */touch) {\n\t\t\tif (touch) {\n\t\t\t\t// Touch device support\n\t\t\t\ttapEvt = {\n\t\t\t\t\ttarget: dragEl,\n\t\t\t\t\tclientX: touch.clientX,\n\t\t\t\t\tclientY: touch.clientY\n\t\t\t\t};\n\n\t\t\t\tthis._onDragStart(tapEvt, 'touch');\n\t\t\t}\n\t\t\telse if (!supportDraggable) {\n\t\t\t\tthis._onDragStart(tapEvt, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_on(dragEl, 'dragend', this);\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t} else {\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t}\n\t\t},\n\n\t\t_dragStarted: function () {\n\t\t\tif (rootEl && dragEl) {\n\t\t\t\t// Apply effect\n\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, true);\n\n\t\t\t\tSortable.active = this;\n\n\t\t\t\t// Drag start event\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, oldIndex);\n\t\t\t}\n\t\t},\n\n\t\t_emulateDragOver: function () {\n\t\t\tif (touchEvt) {\n\t\t\t\t_css(ghostEl, 'display', 'none');\n\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY),\n\t\t\t\t\tparent = target,\n\t\t\t\t\tgroupName = ' ' + this.options.group.name + '',\n\t\t\t\t\ti = touchDragOverListeners.length;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif (parent[expando] && parent[expando].options.groups.indexOf(groupName) > -1) {\n\t\t\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\t\t\ttouchDragOverListeners[i]({\n\t\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\n\t\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\n\t\t\t\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\t\t\t\trootEl: parent\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttarget = parent; // store last element\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\twhile (parent = parent.parentNode);\n\t\t\t\t}\n\n\t\t\t\t_css(ghostEl, 'display', '');\n\t\t\t}\n\t\t},\n\n\n\t\t_onTouchMove: function (/**TouchEvent*/evt) {\n\t\t\tif (tapEvt) {\n\t\t\t\tvar touch = evt.touches ? evt.touches[0] : evt,\n\t\t\t\t\tdx = touch.clientX - tapEvt.clientX,\n\t\t\t\t\tdy = touch.clientY - tapEvt.clientY,\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\n\n\t\t\t\ttouchEvt = touch;\n\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\n\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t},\n\n\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {\n\t\t\tvar dataTransfer = evt.dataTransfer,\n\t\t\t\toptions = this.options;\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (activeGroup.pull == 'clone') {\n\t\t\t\tcloneEl = dragEl.cloneNode(true);\n\t\t\t\t_css(cloneEl, 'display', 'none');\n\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t}\n\n\t\t\tif (useFallback) {\n\t\t\t\tvar rect = dragEl.getBoundingClientRect(),\n\t\t\t\t\tcss = _css(dragEl),\n\t\t\t\t\tghostRect;\n\n\t\t\t\tghostEl = dragEl.cloneNode(true);\n\n\t\t\t\t_css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));\n\t\t\t\t_css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));\n\t\t\t\t_css(ghostEl, 'width', rect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height);\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\n\t\t\t\t_css(ghostEl, 'position', 'fixed');\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\n\n\t\t\t\trootEl.appendChild(ghostEl);\n\n\t\t\t\t// Fixing dimensions.\n\t\t\t\tghostRect = ghostEl.getBoundingClientRect();\n\t\t\t\t_css(ghostEl, 'width', rect.width * 2 - ghostRect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height * 2 - ghostRect.height);\n\n\t\t\t\tif (useFallback === 'touch') {\n\t\t\t\t\t// Bind touch events\n\t\t\t\t\t_on(document, 'touchmove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'touchend', this._onDrop);\n\t\t\t\t\t_on(document, 'touchcancel', this._onDrop);\n\t\t\t\t} else {\n\t\t\t\t\t// Old brwoser\n\t\t\t\t\t_on(document, 'mousemove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'mouseup', this._onDrop);\n\t\t\t\t}\n\n\t\t\t\tthis._loopId = setInterval(this._emulateDragOver, 150);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (dataTransfer) {\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\n\t\t\t\t\toptions.setData && options.setData.call(this, dataTransfer, dragEl);\n\t\t\t\t}\n\n\t\t\t\t_on(document, 'drop', this);\n\t\t\t}\n\n\t\t\tsetTimeout(this._dragStarted, 0);\n\t\t},\n\n\t\t_onDragOver: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\ttarget,\n\t\t\t\tdragRect,\n\t\t\t\trevert,\n\t\t\t\toptions = this.options,\n\t\t\t\tgroup = options.group,\n\t\t\t\tgroupPut = group.put,\n\t\t\t\tisOwner = (activeGroup === group),\n\t\t\t\tcanSort = options.sort;\n\n\t\t\tif (evt.preventDefault !== void 0) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation();\n\t\t\t}\n\n\t\t\tif (activeGroup && !options.disabled &&\n\t\t\t\t(isOwner\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n\t\t\t\t\t: activeGroup.pull && groupPut && (\n\t\t\t\t\t\t(activeGroup.name === group.name) || // by Name\n\t\t\t\t\t\t(groupPut.indexOf && ~groupPut.indexOf(activeGroup.name)) // by Array\n\t\t\t\t\t)\n\t\t\t\t) &&\n\t\t\t\t(evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback\n\t\t\t) {\n\t\t\t\t// Smart auto-scrolling\n\t\t\t\t_autoScroll(evt, options, this.el);\n\n\t\t\t\tif (_silent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttarget = _closest(evt.target, options.draggable, el);\n\t\t\t\tdragRect = dragEl.getBoundingClientRect();\n\n\n\t\t\t\tif (revert) {\n\t\t\t\t\t_cloneHide(true);\n\n\t\t\t\t\tif (cloneEl || nextEl) {\n\t\t\t\t\t\trootEl.insertBefore(dragEl, cloneEl || nextEl);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!canSort) {\n\t\t\t\t\t\trootEl.appendChild(dragEl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\tif ((el.children.length === 0) || (el.children[0] === ghostEl) ||\n\t\t\t\t\t(el === evt.target) && (target = _ghostInBottom(el, evt))\n\t\t\t\t) {\n\t\t\t\t\tif (target) {\n\t\t\t\t\t\tif (target.animated) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\t\t\t\t\t}\n\n\t\t\t\t\t_cloneHide(isOwner);\n\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect) !== false) {\n\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\ttarget && this._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {\n\t\t\t\t\tif (lastEl !== target) {\n\t\t\t\t\t\tlastEl = target;\n\t\t\t\t\t\tlastCSS = _css(target);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tvar targetRect = target.getBoundingClientRect(),\n\t\t\t\t\t\twidth = targetRect.right - targetRect.left,\n\t\t\t\t\t\theight = targetRect.bottom - targetRect.top,\n\t\t\t\t\t\tfloating = /left|right|inline/.test(lastCSS.cssFloat + lastCSS.display),\n\t\t\t\t\t\tisWide = (target.offsetWidth > dragEl.offsetWidth),\n\t\t\t\t\t\tisLong = (target.offsetHeight > dragEl.offsetHeight),\n\t\t\t\t\t\thalfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,\n\t\t\t\t\t\tnextSibling = target.nextElementSibling,\n\t\t\t\t\t\tmoveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect),\n\t\t\t\t\t\tafter\n\t\t\t\t\t;\n\n\t\t\t\t\tif (moveVector !== false) {\n\t\t\t\t\t\t_silent = true;\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\n\n\t\t\t\t\t\t_cloneHide(isOwner);\n\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\n\t\t\t\t\t\t\tafter = (moveVector === 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (floating) {\n\t\t\t\t\t\t\tafter = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tafter = (nextSibling !== dragEl) && !isLong || halfway && isLong;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (after && !nextSibling) {\n\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\tthis._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_animate: function (prevRect, target) {\n\t\t\tvar ms = this.options.animation;\n\n\t\t\tif (ms) {\n\t\t\t\tvar currentRect = target.getBoundingClientRect();\n\n\t\t\t\t_css(target, 'transition', 'none');\n\t\t\t\t_css(target, 'transform', 'translate3d('\n\t\t\t\t\t+ (prevRect.left - currentRect.left) + 'px,'\n\t\t\t\t\t+ (prevRect.top - currentRect.top) + 'px,0)'\n\t\t\t\t);\n\n\t\t\t\ttarget.offsetWidth; // repaint\n\n\t\t\t\t_css(target, 'transition', 'all ' + ms + 'ms');\n\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\n\n\t\t\t\tclearTimeout(target.animated);\n\t\t\t\ttarget.animated = setTimeout(function () {\n\t\t\t\t\t_css(target, 'transition', '');\n\t\t\t\t\t_css(target, 'transform', '');\n\t\t\t\t\ttarget.animated = false;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t},\n\n\t\t_offUpEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\n\t\t},\n\n\t\t_onDrop: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\toptions = this.options;\n\n\t\t\tclearInterval(this._loopId);\n\t\t\tclearInterval(autoScroll.pid);\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t// Unbind events\n\t\t\t_off(document, 'drop', this);\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\n\t\t\t_off(el, 'dragstart', this._onDragStart);\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (evt) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\t!options.dropBubble && evt.stopPropagation();\n\n\t\t\t\tghostEl && ghostEl.parentNode.removeChild(ghostEl);\n\n\t\t\t\tif (dragEl) {\n\t\t\t\t\t_off(dragEl, 'dragend', this);\n\n\t\t\t\t\t_disableDraggable(dragEl);\n\t\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, false);\n\n\t\t\t\t\tif (rootEl !== dragEl.parentNode) {\n\t\t\t\t\t\tnewIndex = _index(dragEl);\n\n\t\t\t\t\t\t// drag from one list and drop into another\n\t\t\t\t\t\t_dispatchEvent(null, dragEl.parentNode, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t// Add event\n\t\t\t\t\t\t_dispatchEvent(null, dragEl.parentNode, 'add', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t// Remove event\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Remove clone\n\t\t\t\t\t\tcloneEl && cloneEl.parentNode.removeChild(cloneEl);\n\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\n\t\t\t\t\t\t\tnewIndex = _index(dragEl);\n\n\t\t\t\t\t\t\t// drag & drop within the same list\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Sortable.active) {\n\t\t\t\t\t\t// Drag end event\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t// Save sorting\n\t\t\t\t\t\tthis.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Nulling\n\t\t\t\trootEl =\n\t\t\t\tdragEl =\n\t\t\t\tghostEl =\n\t\t\t\tnextEl =\n\t\t\t\tcloneEl =\n\n\t\t\t\tscrollEl =\n\t\t\t\tscrollParentEl =\n\n\t\t\t\ttapEvt =\n\t\t\t\ttouchEvt =\n\n\t\t\t\tlastEl =\n\t\t\t\tlastCSS =\n\n\t\t\t\tactiveGroup =\n\t\t\t\tSortable.active = null;\n\t\t\t}\n\t\t},\n\n\n\t\thandleEvent: function (/**Event*/evt) {\n\t\t\tvar type = evt.type;\n\n\t\t\tif (type === 'dragover' || type === 'dragenter') {\n\t\t\t\tif (dragEl) {\n\t\t\t\t\tthis._onDragOver(evt);\n\t\t\t\t\t_globalDragOver(evt);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (type === 'drop' || type === 'dragend') {\n\t\t\t\tthis._onDrop(evt);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Serializes the item into an array of string.\n\t\t * @returns {String[]}\n\t\t */\n\t\ttoArray: function () {\n\t\t\tvar order = [],\n\t\t\t\tel,\n\t\t\t\tchildren = this.el.children,\n\t\t\t\ti = 0,\n\t\t\t\tn = children.length,\n\t\t\t\toptions = this.options;\n\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tel = children[i];\n\t\t\t\tif (_closest(el, options.draggable, this.el)) {\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn order;\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts the elements according to the array.\n\t\t * @param {String[]} order order of the items\n\t\t */\n\t\tsort: function (order) {\n\t\t\tvar items = {}, rootEl = this.el;\n\n\t\t\tthis.toArray().forEach(function (id, i) {\n\t\t\t\tvar el = rootEl.children[i];\n\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl)) {\n\t\t\t\t\titems[id] = el;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\torder.forEach(function (id) {\n\t\t\t\tif (items[id]) {\n\t\t\t\t\trootEl.removeChild(items[id]);\n\t\t\t\t\trootEl.appendChild(items[id]);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Save the current sorting\n\t\t */\n\t\tsave: function () {\n\t\t\tvar store = this.options.store;\n\t\t\tstore && store.set(this);\n\t\t},\n\n\n\t\t/**\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t\t * @param {HTMLElement} el\n\t\t * @param {String} [selector] default: `options.draggable`\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tclosest: function (el, selector) {\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el);\n\t\t},\n\n\n\t\t/**\n\t\t * Set/get option\n\t\t * @param {string} name\n\t\t * @param {*} [value]\n\t\t * @returns {*}\n\t\t */\n\t\toption: function (name, value) {\n\t\t\tvar options = this.options;\n\n\t\t\tif (value === void 0) {\n\t\t\t\treturn options[name];\n\t\t\t} else {\n\t\t\t\toptions[name] = value;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Destroy\n\t\t */\n\t\tdestroy: function () {\n\t\t\tvar el = this.el;\n\n\t\t\tel[expando] = null;\n\n\t\t\t_off(el, 'mousedown', this._onTapStart);\n\t\t\t_off(el, 'touchstart', this._onTapStart);\n\n\t\t\t_off(el, 'dragover', this);\n\t\t\t_off(el, 'dragenter', this);\n\n\t\t\t// Remove draggable attributes\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n\t\t\t\tel.removeAttribute('draggable');\n\t\t\t});\n\n\t\t\ttouchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);\n\n\t\t\tthis._onDrop();\n\n\t\t\tthis.el = el = null;\n\t\t}\n\t};\n\n\n\tfunction _cloneHide(state) {\n\t\tif (cloneEl && (cloneEl.state !== state)) {\n\t\t\t_css(cloneEl, 'display', state ? 'none' : '');\n\t\t\t!state && cloneEl.state && rootEl.insertBefore(cloneEl, dragEl);\n\t\t\tcloneEl.state = state;\n\t\t}\n\t}\n\n\n\tfunction _bind(ctx, fn) {\n\t\tvar args = slice.call(arguments, 2);\n\t\treturn\tfn.bind ? fn.bind.apply(fn, [ctx].concat(args)) : function () {\n\t\t\treturn fn.apply(ctx, args.concat(slice.call(arguments)));\n\t\t};\n\t}\n\n\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {\n\t\tif (el) {\n\t\t\tctx = ctx || document;\n\t\t\tselector = selector.split('.');\n\n\t\t\tvar tag = selector.shift().toUpperCase(),\n\t\t\t\tre = new RegExp('\\\\s(' + selector.join('|') + ')(?=\\\\s)', 'g');\n\n\t\t\tdo {\n\t\t\t\tif (\n\t\t\t\t\t(tag === '>*' && el.parentNode === ctx) || (\n\t\t\t\t\t\t(tag === '' || el.nodeName.toUpperCase() == tag) &&\n\t\t\t\t\t\t(!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (el !== ctx && (el = el.parentNode));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\n\tfunction _globalDragOver(/**Event*/evt) {\n\t\tevt.dataTransfer.dropEffect = 'move';\n\t\tevt.preventDefault();\n\t}\n\n\n\tfunction _on(el, event, fn) {\n\t\tel.addEventListener(event, fn, false);\n\t}\n\n\n\tfunction _off(el, event, fn) {\n\t\tel.removeEventListener(event, fn, false);\n\t}\n\n\n\tfunction _toggleClass(el, name, state) {\n\t\tif (el) {\n\t\t\tif (el.classList) {\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(RSPACE, ' ').replace(' ' + name + ' ', ' ');\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(RSPACE, ' ');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _css(el, prop, val) {\n\t\tvar style = el && el.style;\n\n\t\tif (style) {\n\t\t\tif (val === void 0) {\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\n\t\t\t\t}\n\t\t\t\telse if (el.currentStyle) {\n\t\t\t\t\tval = el.currentStyle;\n\t\t\t\t}\n\n\t\t\t\treturn prop === void 0 ? val : val[prop];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!(prop in style)) {\n\t\t\t\t\tprop = '-webkit-' + prop;\n\t\t\t\t}\n\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _find(ctx, tagName, iterator) {\n\t\tif (ctx) {\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\n\n\t\t\tif (iterator) {\n\t\t\t\tfor (; i < n; i++) {\n\t\t\t\t\titerator(list[i], i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\n\n\tfunction _dispatchEvent(sortable, rootEl, name, targetEl, fromEl, startIndex, newIndex) {\n\t\tvar evt = document.createEvent('Event'),\n\t\t\toptions = (sortable || rootEl[expando]).options,\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n\n\t\tevt.initEvent(name, true, true);\n\n\t\tevt.to = rootEl;\n\t\tevt.from = fromEl || rootEl;\n\t\tevt.item = targetEl || rootEl;\n\t\tevt.clone = cloneEl;\n\n\t\tevt.oldIndex = startIndex;\n\t\tevt.newIndex = newIndex;\n\n\t\trootEl.dispatchEvent(evt);\n\n\t\tif (options[onName]) {\n\t\t\toptions[onName].call(sortable, evt);\n\t\t}\n\t}\n\n\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect) {\n\t\tvar evt,\n\t\t\tsortable = fromEl[expando],\n\t\t\tonMoveFn = sortable.options.onMove,\n\t\t\tretVal;\n\n\t\tif (onMoveFn) {\n\t\t\tevt = document.createEvent('Event');\n\t\t\tevt.initEvent('move', true, true);\n\n\t\t\tevt.to = toEl;\n\t\t\tevt.from = fromEl;\n\t\t\tevt.dragged = dragEl;\n\t\t\tevt.draggedRect = dragRect;\n\t\t\tevt.related = targetEl || toEl;\n\t\t\tevt.relatedRect = targetRect || toEl.getBoundingClientRect();\n\n\t\t\tretVal = onMoveFn.call(sortable, evt);\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\n\tfunction _disableDraggable(el) {\n\t\tel.draggable = false;\n\t}\n\n\n\tfunction _unsilent() {\n\t\t_silent = false;\n\t}\n\n\n\t/** @returns {HTMLElement|false} */\n\tfunction _ghostInBottom(el, evt) {\n\t\tvar lastEl = el.lastElementChild,\n\t\t\trect = lastEl.getBoundingClientRect();\n\n\t\treturn (evt.clientY - (rect.top + rect.height) > 5) && lastEl; // min delta\n\t}\n\n\n\t/**\n\t * Generate id\n\t * @param {HTMLElement} el\n\t * @returns {String}\n\t * @private\n\t */\n\tfunction _generateId(el) {\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\n\t\t\ti = str.length,\n\t\t\tsum = 0;\n\n\t\twhile (i--) {\n\t\t\tsum += str.charCodeAt(i);\n\t\t}\n\n\t\treturn sum.toString(36);\n\t}\n\n\t/**\n\t * Returns the index of an element within its parent\n\t * @param el\n\t * @returns {number}\n\t * @private\n\t */\n\tfunction _index(/**HTMLElement*/el) {\n\t\tvar index = 0;\n\t\twhile (el && (el = el.previousElementSibling)) {\n\t\t\tif (el.nodeName.toUpperCase() !== 'TEMPLATE') {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\n\tfunction _throttle(callback, ms) {\n\t\tvar args, _this;\n\n\t\treturn function () {\n\t\t\tif (args === void 0) {\n\t\t\t\targs = arguments;\n\t\t\t\t_this = this;\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (args.length === 1) {\n\t\t\t\t\t\tcallback.call(_this, args[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback.apply(_this, args);\n\t\t\t\t\t}\n\n\t\t\t\t\targs = void 0;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction _extend(dst, src) {\n\t\tif (dst && src) {\n\t\t\tfor (var key in src) {\n\t\t\t\tif (src.hasOwnProperty(key)) {\n\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\n\n\t// Export utils\n\tSortable.utils = {\n\t\ton: _on,\n\t\toff: _off,\n\t\tcss: _css,\n\t\tfind: _find,\n\t\tbind: _bind,\n\t\tis: function (el, selector) {\n\t\t\treturn !!_closest(el, selector, el);\n\t\t},\n\t\textend: _extend,\n\t\tthrottle: _throttle,\n\t\tclosest: _closest,\n\t\ttoggleClass: _toggleClass,\n\t\tindex: _index\n\t};\n\n\n\tSortable.version = '1.2.1';\n\n\n\t/**\n\t * Create sortable instance\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tSortable.create = function (el, options) {\n\t\treturn new Sortable(el, options);\n\t};\n\n\t// Export\n\treturn Sortable;\n});\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentCards = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar TextHighlighter_1 = require(\"../../Utils/TextHighlighter\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar Sortable = require(\"sortablejs\");\nvar ComponentCards = /** @class */ (function (_super) {\n __extends(ComponentCards, _super);\n function ComponentCards(options) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this.entries = {};\n _this.container = (0, CE_1.ce)('div', 'mux_cards');\n if (options.onePerRow === true)\n _this.container.classList.add('mux_cards-oneperrow');\n if (options.dragable !== false)\n _this.sortable = new Sortable(_this.container, {\n ghostClass: 'mux_cards-item-dragging',\n onStart: function () {\n _this.container.classList.add('mux_cards-dragging');\n },\n onEnd: function (evt) {\n _this.container.classList.remove('mux_cards-dragging');\n _this.callEvent('orderUpdated', _this.getOrder());\n },\n });\n _this.highlightText = (_a = options === null || options === void 0 ? void 0 : options.highlightText) !== null && _a !== void 0 ? _a : false;\n _this.setItems((_b = options === null || options === void 0 ? void 0 : options.items) !== null && _b !== void 0 ? _b : []);\n return _this;\n }\n ComponentCards.prototype.setItems = function (items) {\n var _this = this;\n this.container.innerHTML = '';\n this.entries = {};\n items.forEach(function (item) { return _this.addItem(item); });\n };\n ComponentCards.prototype.addItem = function (item) {\n var _this = this;\n var _a, _b;\n var element = (0, CE_1.ce)(item.href != undefined ? 'a' : 'div', 'mux_cards-item', {\n uid: item.uniqueIdentifier,\n });\n if (item.href != undefined)\n element.href = item.href;\n if (item.click != undefined)\n element.onclick = function () { return item.click(); };\n if (item.tooltip != undefined)\n element.title = item.title;\n if (item.enabled == false)\n element.classList.add('mux_cards-item-disabled');\n if (item.uniqueIdentifier != undefined)\n this.entries[item.uniqueIdentifier] = element;\n if (item.thumbnail != null) {\n var thumbnailType = (_a = item.thumbnailType) !== null && _a !== void 0 ? _a : 'image';\n if (thumbnailType == 'image') {\n element.appendChild((0, CE_1.ce)('img', 'mux_cards-item-thumbnail', {\n src: item.thumbnail,\n }));\n }\n else if (thumbnailType == 'frame') {\n var ratio = (_b = item.thumbnailWidthRatio) !== null && _b !== void 0 ? _b : 1;\n var frame = (0, CE_1.ce)('iframe', 'mux_cards-item-thumbnail', {\n scrolling: 'no',\n src: item.thumbnail,\n });\n element.appendChild(frame);\n var scaleClock = setInterval(function () {\n if (element == null ||\n element.parentElement == null ||\n frame == null)\n return clearInterval(scaleClock);\n frame.style.width = \"\".concat(frame.clientHeight * ratio, \"px\");\n }, 100);\n }\n }\n var info = (0, CE_1.ce)('div', 'mux_cards-item-info');\n info.appendChild(this.highlightText\n ? (0, TextHighlighter_1.generateTextHighlights)(item.title, [\n 'mux_header',\n 'mux_small',\n ])\n : (0, CE_1.ce)('div', ['mux_header', 'mux_small'], null, item.title));\n if (item.sublines != undefined && item.sublines.length > 0)\n item.sublines.forEach(function (subline) {\n if (subline != null)\n info.appendChild(_this.highlightText\n ? (0, TextHighlighter_1.generateTextHighlights)(subline, [\n 'mux_text',\n 'mux_small',\n ])\n : (0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, subline));\n });\n element.appendChild(info);\n if (item.actions != undefined && item.actions.length > 0) {\n var buttons = (0, CE_1.ce)('div', 'mux_cards-item-buttons');\n item.actions.forEach(function (action) {\n var buttonelem = (0, CE_1.ce)(action.href != undefined ? 'a' : 'div', 'mux_cards-item-button');\n if (action.href != undefined)\n buttonelem.href = action.href;\n if (action.click != undefined)\n buttonelem.onclick = function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n action.click();\n };\n if (action.tooltip != undefined)\n buttonelem.title = action.tooltip;\n buttonelem.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, action.materialIcon));\n buttons.appendChild(buttonelem);\n });\n element.appendChild(buttons);\n }\n this.container.appendChild(element);\n };\n ComponentCards.prototype.removeItem = function (uniqueIdentifier) {\n if (this.entries[uniqueIdentifier] != undefined) {\n this.entries[uniqueIdentifier].parentElement.removeChild(this.entries[uniqueIdentifier]);\n delete this.entries[uniqueIdentifier];\n }\n };\n ComponentCards.prototype.hasItem = function (uniqueIdentifier) {\n return this.entries[uniqueIdentifier] != undefined;\n };\n ComponentCards.prototype.clear = function () {\n this.container.innerHTML = '';\n this.entries = {};\n };\n ComponentCards.prototype.updateItemTitle = function (uniqueIdentifier, newTitle) {\n if (this.entries[uniqueIdentifier] == undefined)\n return;\n var existingHeader = this.entries[uniqueIdentifier].querySelector('.mux_header');\n var container = existingHeader.parentElement;\n container.insertBefore(this.highlightText\n ? (0, TextHighlighter_1.generateTextHighlights)(newTitle, ['mux_header', 'mux_small'])\n : (0, CE_1.ce)('div', ['mux_header', 'mux_small'], null, newTitle), existingHeader);\n container.removeChild(existingHeader);\n };\n ComponentCards.prototype.updateSublines = function (uniqueIdentifier, newSublines) {\n var _this = this;\n if (this.entries[uniqueIdentifier] == undefined)\n return;\n var info = this.entries[uniqueIdentifier].querySelector('.mux_cards-item-info');\n info.querySelectorAll('.mux_text.mux_small').forEach(function (existingSubline) {\n return existingSubline.parentElement.removeChild(existingSubline);\n });\n if (newSublines != undefined && newSublines.length > 0)\n newSublines.forEach(function (subline) {\n info.appendChild(_this.highlightText\n ? (0, TextHighlighter_1.generateTextHighlights)(subline, [\n 'mux_text',\n 'mux_small',\n ])\n : (0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, subline));\n });\n };\n ComponentCards.prototype.updateThumbnail = function (uniqueIdentifier, thumbnailSrc) {\n if (this.entries[uniqueIdentifier] == undefined)\n return;\n var thumbnail = this.entries[uniqueIdentifier].querySelector('.mux_cards-item-thumbnail');\n thumbnail.src = thumbnailSrc;\n };\n ComponentCards.prototype.getOrder = function () {\n var order = [];\n this.container\n .querySelectorAll('.mux_cards-item')\n .forEach(function (item) { return order.push(item.getAttribute('uid')); });\n return order;\n };\n return ComponentCards;\n}(baseComponent_1.MUXComponent));\nexports.ComponentCards = ComponentCards;\n//# sourceMappingURL=Component.Cards.js.map","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyBinderOverwrite = void 0;\nvar KeyBinderOverwrite = /** @class */ (function () {\n function KeyBinderOverwrite(id, KeyBinder) {\n this.binds = {};\n this.id = id;\n this._KeyBinder = KeyBinder;\n }\n KeyBinderOverwrite.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (window.location.search.includes('debug'))\n console.log.apply(console, __spreadArray(['[KeyBinder]'], args, false));\n };\n KeyBinderOverwrite.prototype.close = function () {\n this._KeyBinder.closeOverwrite(this.id);\n };\n KeyBinderOverwrite.prototype.bind = function (key, callback, settings) {\n if (settings == undefined)\n settings = {};\n var query = this._KeyBinder.createKeyQuery(key, settings.controlKey, settings.shiftKey, settings.altKey);\n if (this.binds[query] != undefined)\n return this.log(\"Unable to bind key query '\".concat(query, \"' in overwrite because it already has a bind\"));\n if ((settings === null || settings === void 0 ? void 0 : settings.disableInElementsWithTags) != undefined)\n settings.disableInElementsWithTags =\n settings.disableInElementsWithTags.map(function (tagname) {\n return tagname.toUpperCase();\n });\n this.binds[query] = { callback: callback, key: key, settings: settings };\n };\n return KeyBinderOverwrite;\n}());\nexports.KeyBinderOverwrite = KeyBinderOverwrite;\n//# sourceMappingURL=KeyBinderOverwrite.js.map","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyBinderBase = void 0;\nvar KeyBinderOverwrite_1 = require(\"./KeyBinderOverwrite\");\nvar KeyBinderBase = /** @class */ (function () {\n function KeyBinderBase() {\n this.binds = {};\n this.overwrites = [];\n this.log('Preparing KeyBinder');\n this.registerListeners();\n }\n KeyBinderBase.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (window.location.search.includes('debug'))\n console.log.apply(console, __spreadArray(['[KeyBinder]'], args, false));\n };\n KeyBinderBase.prototype.multiBind = function (keys, callback, settings) {\n for (var i = 0; i < keys.length; i++)\n this.bind(keys[i], callback, settings);\n };\n KeyBinderBase.prototype.bind = function (key, callback, settings) {\n if (settings == undefined)\n settings = {};\n var query = this.createKeyQuery(key, settings.controlKey, settings.shiftKey, settings.altKey);\n if (this.binds[query] != undefined)\n return this.log(\"Unable to bind key query '\".concat(query, \"' because it already has a bind\"));\n if ((settings === null || settings === void 0 ? void 0 : settings.disableInElementsWithTags) != undefined)\n settings.disableInElementsWithTags =\n settings.disableInElementsWithTags.map(function (tagname) {\n return tagname.toUpperCase();\n });\n this.binds[query] = { callback: callback, key: key, settings: settings };\n };\n KeyBinderBase.prototype.unbind = function (key, settings) {\n if (settings == undefined)\n settings = {};\n var query = this.createKeyQuery(key, settings.controlKey, settings.shiftKey, settings.altKey);\n if (this.binds[query] == undefined)\n return this.log(\"Unable to unbind key query '\".concat(query, \"' because it has no bind\"));\n };\n KeyBinderBase.prototype.createOverwrite = function () {\n var id = this.generateOverwriteId();\n var overwrite = new KeyBinderOverwrite_1.KeyBinderOverwrite(id, this);\n this.overwrites.push(overwrite);\n this.log(\"Overwrite with id '\".concat(id, \"' was created\"));\n return overwrite;\n };\n KeyBinderBase.prototype.closeOverwrite = function (id) {\n for (var i = 0; i < this.overwrites.length; i++)\n if (this.overwrites[i].id == id) {\n this.overwrites.splice(i, 1);\n this.log(\"Overwrite with id '\".concat(id, \"' was closed\"));\n return;\n }\n };\n KeyBinderBase.prototype.createKeyQuery = function (key, ctrlKey, shiftKey, altKey) {\n if (ctrlKey === void 0) { ctrlKey = false; }\n if (shiftKey === void 0) { shiftKey = false; }\n if (altKey === void 0) { altKey = false; }\n var queryParts = [key.toLowerCase()];\n if (ctrlKey)\n queryParts.push('ctrl');\n if (shiftKey)\n queryParts.push('shft');\n if (altKey)\n queryParts.push('alt');\n return queryParts.join(':');\n };\n KeyBinderBase.prototype.getAllBinds = function () {\n return Array.from(new Set(this.overwrites\n .map(function (overwrite) { return Object.keys(overwrite.binds); })\n .concat(Object.keys(this.binds))\n .flat()));\n };\n KeyBinderBase.prototype.getBindsOverview = function () {\n return Object.values(this.binds).map(function (_a) {\n var key = _a.key, settings = _a.settings;\n var combo = [];\n if (settings === null || settings === void 0 ? void 0 : settings.controlKey)\n combo.push('Ctrl');\n if (settings === null || settings === void 0 ? void 0 : settings.shiftKey)\n combo.push('Shift');\n if (settings === null || settings === void 0 ? void 0 : settings.altKey)\n combo.push('Alt');\n combo.push(key.length < 3 ? key.toUpperCase() : key);\n return [combo.join('+'), settings === null || settings === void 0 ? void 0 : settings.name];\n });\n };\n KeyBinderBase.prototype.generateOverwriteId = function () {\n while (true) {\n var id = (Math.random() + 1).toString(36).substring(7);\n if (!this.overwriteIdExists(id))\n return id;\n }\n };\n KeyBinderBase.prototype.overwriteIdExists = function (id) {\n for (var i = 0; i < this.overwrites.length; i++)\n if (this.overwrites[i].id == id)\n return true;\n return false;\n };\n KeyBinderBase.prototype.registerListeners = function () {\n var _this = this;\n window.addEventListener('keydown', function (e) {\n var _a;\n var query = _this.createKeyQuery(e.key, e.ctrlKey || e.metaKey, e.shiftKey, e.altKey);\n if (window.location.search.includes('keydebug'))\n _this.log(\"Got keypress: \".concat(query));\n var binds = _this.binds;\n if (_this.overwrites.length > 0) {\n binds = _this.overwrites[_this.overwrites.length - 1].binds;\n }\n if (binds[query] == undefined)\n return;\n var bind = binds[query];\n if (((_a = bind === null || bind === void 0 ? void 0 : bind.settings) === null || _a === void 0 ? void 0 : _a.disableInElementsWithTags) != undefined &&\n bind.settings.disableInElementsWithTags.includes(document.activeElement.tagName))\n return;\n e.preventDefault();\n bind.callback();\n });\n };\n return KeyBinderBase;\n}());\nexports.KeyBinderBase = KeyBinderBase;\n//# sourceMappingURL=KeyBinderBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MorphKey = void 0;\nvar KeyBinderBase_1 = require(\"./Keys/KeyBinderBase\");\nexports.MorphKey = new KeyBinderBase_1.KeyBinderBase();\n//# sourceMappingURL=Morph.Keys.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentContextMenu = void 0;\nvar Morph_Keys_1 = require(\"../../Morph.Keys\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentContextMenu = /** @class */ (function (_super) {\n __extends(ComponentContextMenu, _super);\n function ComponentContextMenu(options) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this.open = true;\n _this.container = (0, CE_1.ce)('div', 'mux_contextmenu');\n if ((options === null || options === void 0 ? void 0 : options.width) != undefined) {\n _this.container.style.minWidth = \"\".concat(options.width, \"px\");\n _this.container.style.width = \"\".concat(options.width, \"px\");\n }\n var align = (_a = options === null || options === void 0 ? void 0 : options.align) !== null && _a !== void 0 ? _a : 'center';\n if ((options === null || options === void 0 ? void 0 : options.materialIconColor) != undefined)\n _this.container.style.setProperty('--mux-contextmenu-iconcolor', options.materialIconColor);\n _this.setItems((_b = options === null || options === void 0 ? void 0 : options.items) !== null && _b !== void 0 ? _b : [], options === null || options === void 0 ? void 0 : options.selected);\n var parentContainer = document.body;\n parentContainer.appendChild(_this.container);\n _this.container.style.top = \"\".concat(options.y - parentContainer.getBoundingClientRect().top, \"px\");\n var left = options.x;\n var maxLeft = document.body.clientWidth - _this.container.clientWidth - 20;\n var minLeft = 10;\n if (align == 'center') {\n left -= _this.container.clientWidth / 2;\n _this.container.style.transformOrigin = 'top center';\n }\n else if (align == 'left') {\n _this.container.style.transformOrigin = 'top left';\n }\n else if (align == 'right') {\n left -= _this.container.clientWidth;\n _this.container.style.transformOrigin = 'top right';\n }\n left = Math.min(left, maxLeft);\n left = Math.max(left, minLeft);\n var maxHeight = document.body.clientHeight - options.y - 20;\n _this.container.style.left = \"\".concat(left, \"px\");\n _this.container.style.transitionDuration = '.2s';\n _this.container.style.transform = 'scale(1)';\n _this.container.style.opacity = '1';\n _this.container.style.maxHeight = \"\".concat(maxHeight, \"px\");\n if ((options === null || options === void 0 ? void 0 : options.highlightedItem) != undefined &&\n _this.container.querySelector(\"[uid=\\\"\".concat(options.highlightedItem, \"\\\"]\")) != null) {\n var selected = _this.container.querySelector(\"[uid=\\\"\".concat(options.highlightedItem, \"\\\"]\"));\n selected.classList.add('mux_contextmenu-item-selected');\n setTimeout(function () {\n selected.scrollIntoView();\n }, 100);\n }\n if ((options === null || options === void 0 ? void 0 : options.selected) != undefined &&\n _this.container.querySelector(\"[uid=\\\"\".concat(options.selected, \"\\\"]\")) != null) {\n var selected = _this.container.querySelector(\"[uid=\\\"\".concat(options.selected, \"\\\"]\"));\n setTimeout(function () {\n selected.scrollIntoView({\n block: 'center',\n inline: 'center',\n });\n }, 100);\n }\n var delay = function (duration, callback) {\n setTimeout(function () {\n callback();\n }, duration);\n };\n _this.handleClick = function (e) {\n var _a, _b;\n if (e.target == undefined)\n return delay(100, function () { return _this.close('outside'); });\n var target = e.target;\n if (target.classList.length == 0)\n return delay(100, function () { return _this.close('outsideclick'); });\n if (!target.classList[0].startsWith('mux_contextmenu') &&\n !((_b = (_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.classList[0]) === null || _b === void 0 ? void 0 : _b.startsWith('mux_contextmenu')))\n return delay(100, function () { return _this.close('outsideparentclick'); });\n };\n setTimeout(function () {\n window.addEventListener('click', _this.handleClick);\n window.addEventListener('mousedown', _this.handleClick);\n window.addEventListener('touchstart', _this.handleClick);\n }, 100);\n _this.overwrite = Morph_Keys_1.MorphKey.createOverwrite();\n if ((options === null || options === void 0 ? void 0 : options.highlightedItem) == undefined) {\n _this.overwrite.bind('ArrowUp', function () {\n var selected = _this.container.querySelector('.mux_contextmenu-item-selected');\n if (selected == null) {\n var elements = _this.container.querySelectorAll('.mux_contextmenu-item');\n if (elements.length > 0) {\n var first = elements[elements.length - 1];\n first.classList.add('mux_contextmenu-item-selected');\n first.scrollIntoView();\n }\n }\n else {\n var previous = selected.previousElementSibling;\n if (previous != null) {\n selected.classList.remove('mux_contextmenu-item-selected');\n previous.classList.add('mux_contextmenu-item-selected');\n previous.scrollIntoView();\n }\n }\n });\n _this.overwrite.bind('ArrowDown', function () {\n var selected = _this.container.querySelector('.mux_contextmenu-item-selected');\n if (selected == null) {\n var elements = _this.container.querySelectorAll('.mux_contextmenu-item');\n if (elements.length > 0) {\n var first = elements[0];\n first.classList.add('mux_contextmenu-item-selected');\n first.scrollIntoView();\n }\n }\n else {\n var next = selected.nextElementSibling;\n if (next != null) {\n selected.classList.remove('mux_contextmenu-item-selected');\n next.classList.add('mux_contextmenu-item-selected');\n next.scrollIntoView();\n }\n }\n });\n }\n _this.overwrite.bind('Enter', function () {\n var selected = _this.container.querySelector('.mux_contextmenu-item-selected');\n if (selected != null) {\n selected.click();\n }\n });\n _this.overwrite.bind('Escape', function () {\n _this.close('escape');\n });\n return _this;\n }\n ComponentContextMenu.prototype.close = function (origin, byClick) {\n var _this = this;\n if (origin === void 0) { origin = 'integrator?'; }\n if (byClick === void 0) { byClick = false; }\n this.overwrite.close();\n this.open = false;\n this.killSubContexts();\n window.removeEventListener('click', this.handleClick);\n window.removeEventListener('mousedown', this.handleClick);\n window.removeEventListener('touchstart', this.handleClick);\n this.callEvent('close', byClick, origin);\n this.container.style.transform = 'scale(0)';\n this.container.style.opacity = '0';\n setTimeout(function () {\n _this.destroy();\n }, 200);\n };\n ComponentContextMenu.prototype.enable = function (uniqueIdentifier) {\n if (this.container.querySelector(\"[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"))) {\n var element = this.container.querySelector(\"[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"));\n element.classList.remove('mux_contextmenu-item-disabled');\n }\n };\n ComponentContextMenu.prototype.disable = function (uniqueIdentifier) {\n if (this.container.querySelector(\"[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"))) {\n var element = this.container.querySelector(\"[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"));\n element.classList.add('mux_contextmenu-item-disabled');\n }\n };\n ComponentContextMenu.prototype.isOpen = function () {\n return this.open;\n };\n ComponentContextMenu.prototype.setItems = function (items, selectedId) {\n var _this = this;\n this.container.innerHTML = '';\n items.forEach(function (item) {\n return _this.addItem(item, selectedId != null && selectedId == item.uniqueIdentifier);\n });\n };\n ComponentContextMenu.prototype.addItem = function (item, selected) {\n var _this = this;\n var _a, _b, _c;\n if (selected === void 0) { selected = false; }\n switch (item.type) {\n case 'separator':\n var separator = (0, CE_1.ce)('div', 'mux_contextmenu-separator');\n if (item.text != undefined && item.text.trim().length > 0)\n separator.appendChild((0, CE_1.ce)('span', null, null, item.text));\n this.container.appendChild(separator);\n break;\n case 'normal':\n var element = (0, CE_1.ce)(item.href != undefined ? 'a' : 'div', 'mux_contextmenu-item');\n if (selected)\n element.classList.add('mux_contextmenu-item-selected');\n var itemId = (_a = item.uniqueIdentifier) !== null && _a !== void 0 ? _a : (Math.random() + 1).toString(36).substring(7);\n if (item.href != undefined)\n element.setAttribute('href', item.href);\n if (item.tooltip != undefined)\n element.title = item.tooltip;\n if (item.uniqueIdentifier != undefined) {\n element.setAttribute('uid', item.uniqueIdentifier);\n }\n if (item.enabled == false)\n element.classList.add('mux_contextmenu-item-disabled');\n var textContent = (0, CE_1.ce)('div', 'mux_contextmenu-item-content');\n element.appendChild(textContent);\n var itemContent = (0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, (_b = item.text) !== null && _b !== void 0 ? _b : '');\n if (item.customFontSize != undefined)\n itemContent.style.fontSize = \"\".concat(item.customFontSize, \"px\");\n textContent.appendChild(itemContent);\n if (item.children == undefined && item.shortcut != undefined)\n textContent.appendChild((0, CE_1.ce)('div', [\n 'mux_contextmenu-shortcut',\n 'mux_text',\n 'mux_tiny',\n ], null, (_c = item.shortcut) !== null && _c !== void 0 ? _c : ''));\n if (item.children != undefined && item.children.length > 0) {\n textContent.appendChild((0, CE_1.ce)('span', [\n 'material-symbols-outlined',\n 'mux_contextmenu-item-arrow',\n ], null, 'keyboard_arrow_right'));\n }\n if (item.materialIcon != undefined) {\n var materialIcon = (0, CE_1.ce)('span', [\n 'mux_contextmenu-item-materialicon',\n 'material-symbols-outlined',\n ], null, item.materialIcon);\n if (item.materialIconTransform != undefined)\n materialIcon.style.transform =\n item.materialIconTransform;\n element.appendChild(materialIcon);\n }\n else if (item.icon != undefined)\n element.appendChild((0, CE_1.ce)('img', 'mux_contextmenu-item-icon', {\n src: item.icon,\n }));\n element.onmousemove = function () {\n if (_this.subContextParent == itemId)\n return;\n _this.killSubContexts();\n if (item.children != undefined &&\n item.children.length > 0) {\n var bounds = element.getBoundingClientRect();\n _this.subContextParent = itemId;\n _this.subContext = new ComponentContextMenu({\n items: item.children,\n x: bounds.x + bounds.width + 1,\n y: bounds.y,\n align: 'left',\n });\n _this.subContext.on('close', function (byClick) {\n if (byClick)\n _this.close('parentkillchildhover', true);\n });\n }\n };\n if (item.click != undefined && item.href == undefined) {\n element.onclick = function () {\n if (item.stayOpenOnClick != true) {\n _this.close('itemclick', true);\n _this.killSubContexts();\n }\n item.click();\n };\n }\n this.container.appendChild(element);\n break;\n }\n };\n ComponentContextMenu.prototype.killSubContexts = function () {\n if (this.subContext != null) {\n this.subContext.close('parentkillchild');\n this.subContext = null;\n }\n this.subContextParent = null;\n };\n return ComponentContextMenu;\n}(baseComponent_1.MUXComponent));\nexports.ComponentContextMenu = ComponentContextMenu;\n//# sourceMappingURL=Component.ContextMenu.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentDialog = void 0;\nvar Index_1 = require(\"../../Index\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentDialog = /** @class */ (function (_super) {\n __extends(ComponentDialog, _super);\n function ComponentDialog(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var _this = _super.call(this) || this;\n var width = (_a = options === null || options === void 0 ? void 0 : options.width) !== null && _a !== void 0 ? _a : 'small';\n var height = (_b = options === null || options === void 0 ? void 0 : options.height) !== null && _b !== void 0 ? _b : 'auto';\n _this.container = (0, CE_1.ce)('div', 'mux_dialogcontainer');\n _this.dialog = (0, CE_1.ce)('div', 'mux_dialog');\n _this.dialog.classList.add(\"mux_w-\".concat(width), \"mux_h-\".concat(height));\n var openDialogs = document.querySelectorAll(\".mux_dialog.mux_w-\".concat(width, \".mux_h-\").concat(height)).length;\n _this.dialog.style.marginLeft = \"\".concat(openDialogs * 30, \"px\");\n _this.dialog.style.marginTop = \"\".concat(openDialogs * 30, \"px\");\n _this.container.append(_this.dialog);\n var titlebar = (0, CE_1.ce)('div', 'mux_dialog-titlebar');\n titlebar.appendChild((0, CE_1.ce)('div', ['mux_dialog-title', 'mux_header'], null, options.title));\n var titlesettings = (0, CE_1.ce)('div', 'mux_dialog-titlesettings');\n titlebar.appendChild(titlesettings);\n _this.titlebar = titlesettings;\n if ((options === null || options === void 0 ? void 0 : options.closeable) !== false) {\n var close = (0, CE_1.ce)('div', 'mux_dialog-close');\n close.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'close'));\n close.onclick = function () {\n _this.callEvent('close', new CloseEvent(_this));\n };\n titlebar.appendChild(close);\n }\n _this.dialog.appendChild(titlebar);\n _this.content = (0, CE_1.ce)('div', 'mux_dialog-content');\n _this.dialog.appendChild(_this.content);\n var okButtonVisible = (_c = options === null || options === void 0 ? void 0 : options.okButtonVisible) !== null && _c !== void 0 ? _c : true;\n var cancelButtonVisible = (_d = options === null || options === void 0 ? void 0 : options.cancelButtonVisible) !== null && _d !== void 0 ? _d : true;\n if (okButtonVisible || cancelButtonVisible) {\n var actionbar = (0, CE_1.ce)('div', 'mux_dialog-actionbar');\n var buttons = (0, CE_1.ce)('div', 'mux_dialog-buttons');\n if (cancelButtonVisible) {\n var cancelButtonEnabled = (_e = options === null || options === void 0 ? void 0 : options.cancelButtonEnabled) !== null && _e !== void 0 ? _e : true;\n _this.cancelButton = new Index_1.MorphComponent.Button({\n content: (_f = options === null || options === void 0 ? void 0 : options.cancelButtonText) !== null && _f !== void 0 ? _f : 'Cancel',\n mode: cancelButtonEnabled ? 'normal' : 'disabled',\n target: function () {\n _this.callEvent('cancel', new CloseEvent(_this));\n },\n });\n buttons.appendChild(_this.cancelButton.container);\n }\n if (okButtonVisible) {\n var okButtonEnabled = (_g = options === null || options === void 0 ? void 0 : options.okButtonEnabled) !== null && _g !== void 0 ? _g : true;\n _this.okButton = new Index_1.MorphComponent.Button({\n content: (_h = options === null || options === void 0 ? void 0 : options.okButtonText) !== null && _h !== void 0 ? _h : 'OK',\n mode: okButtonEnabled ? 'highlight' : 'disabled',\n target: function () {\n _this.callEvent('ok', new CloseEvent(_this));\n },\n });\n buttons.appendChild(_this.okButton.container);\n }\n actionbar.appendChild(buttons);\n _this.dialog.appendChild(actionbar);\n }\n else\n _this.content.classList.add('mux_dialog-content-nobuttons');\n document.body.appendChild(_this.container);\n setTimeout(function () {\n _this.container.style.opacity = '1';\n _this.dialog.style.opacity = '1';\n _this.dialog.style.transform = 'scale(1)';\n }, 20);\n _this.keyOverwrite = Index_1.MorphKey.createOverwrite();\n _this.keyOverwrite.bind('Escape', function () {\n _this.callEvent('cancel', new CloseEvent(_this));\n });\n _this.keyOverwrite.bind('Enter', function () {\n _this.callEvent('ok', new CloseEvent(_this));\n });\n return _this;\n }\n ComponentDialog.prototype.close = function () {\n var _this = this;\n this.dialog.style.transitionTimingFunction = 'ease-out';\n this.dialog.style.transform = 'scale(0.8)';\n this.dialog.style.opacity = '0';\n this.container.style.opacity = '0';\n this.container.style.pointerEvents = 'none';\n this.keyOverwrite.close();\n setTimeout(function () {\n _this.destroy();\n }, 200);\n };\n ComponentDialog.prototype.setOkButtonMode = function (mode) {\n this.okButton.updateMode(mode);\n };\n ComponentDialog.prototype.setCancelButtonMode = function (mode) {\n this.cancelButton.updateMode(mode);\n };\n return ComponentDialog;\n}(baseComponent_1.MUXComponent));\nexports.ComponentDialog = ComponentDialog;\nvar CloseEvent = /** @class */ (function () {\n function DialogCloseEvent(origin) {\n var _this = this;\n this.origin = origin;\n this.autoCloseInterval = setTimeout(function () {\n _this.close();\n }, 50);\n }\n DialogCloseEvent.prototype.preventClose = function () {\n clearInterval(this.autoCloseInterval);\n };\n DialogCloseEvent.prototype.close = function () {\n clearInterval(this.autoCloseInterval);\n this.origin.close();\n };\n return DialogCloseEvent;\n}());\n//# sourceMappingURL=Component.Dialog.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentGroup = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentGroup = /** @class */ (function (_super) {\n __extends(ComponentGroup, _super);\n function ComponentGroup(options) {\n var _a, _b, _c;\n var _this = _super.call(this) || this;\n _this.container = (0, CE_1.ce)('div', ['mux_group', 'mux_group-open']);\n var closeable = (_a = options === null || options === void 0 ? void 0 : options.closeable) !== null && _a !== void 0 ? _a : false;\n if ((options === null || options === void 0 ? void 0 : options.open) == false && closeable) {\n _this.container.classList.remove('mux_group-open');\n }\n var header = (0, CE_1.ce)('div', 'mux_group-header');\n if ((options === null || options === void 0 ? void 0 : options.materialIcon) != undefined)\n header.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, options.materialIcon));\n _this.title = (0, CE_1.ce)('div', ['mux_header', 'mux_small'], null, (_b = options === null || options === void 0 ? void 0 : options.title) !== null && _b !== void 0 ? _b : '');\n _this.subTitle = (0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, (_c = options === null || options === void 0 ? void 0 : options.subTitle) !== null && _c !== void 0 ? _c : '');\n header.append(_this.title, _this.subTitle);\n if ((options === null || options === void 0 ? void 0 : options.actions) != undefined && options.actions.length > 0) {\n var actions = (0, CE_1.ce)('div', 'mux_group-actions');\n options.actions.forEach(function (action) {\n var element = (0, CE_1.ce)('div', 'mux_group-iconbutton');\n element.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, action.materialIcon));\n element.onclick = function (e) {\n e.stopPropagation();\n action.click();\n };\n actions.appendChild(element);\n });\n header.appendChild(actions);\n }\n if (closeable) {\n var foldIcon = (0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_group-fold'], null, 'keyboard_arrow_right');\n header.appendChild(foldIcon);\n header.onclick = function () {\n if (_this.container.classList.contains('mux_group-open'))\n _this.container.classList.remove('mux_group-open');\n else\n _this.container.classList.add('mux_group-open');\n _this.callEvent('openState', _this.container.classList.contains('mux_group-open'));\n };\n }\n _this.container.appendChild(header);\n _this.content = (0, CE_1.ce)('div', 'mux_group-content');\n var contentwrapper = (0, CE_1.ce)('div', 'mux_group-contentwrapper');\n contentwrapper.appendChild(_this.content);\n _this.container.appendChild(contentwrapper);\n return _this;\n }\n ComponentGroup.prototype.setTitle = function (title) {\n this.title.innerText = title !== null && title !== void 0 ? title : '';\n };\n ComponentGroup.prototype.setSubTitle = function (subTitle) {\n this.subTitle.innerText = subTitle !== null && subTitle !== void 0 ? subTitle : '';\n };\n return ComponentGroup;\n}(baseComponent_1.MUXComponent));\nexports.ComponentGroup = ComponentGroup;\n//# sourceMappingURL=Component.Group.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentHeader = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentHeader = /** @class */ (function (_super) {\n __extends(ComponentHeader, _super);\n function ComponentHeader(options) {\n var _a;\n var _this = _super.call(this) || this;\n var size = (_a = options === null || options === void 0 ? void 0 : options.size) !== null && _a !== void 0 ? _a : 'normal';\n _this.container = (0, CE_1.ce)('div', ['mux_header', \"mux_\".concat(size)], null, options === null || options === void 0 ? void 0 : options.content);\n return _this;\n }\n ComponentHeader.prototype.update = function (content) {\n this.container.innerHTML = content;\n };\n return ComponentHeader;\n}(baseComponent_1.MUXComponent));\nexports.ComponentHeader = ComponentHeader;\n//# sourceMappingURL=Component.Header.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentIconGrid = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar Sortable = require(\"sortablejs\");\nvar ComponentIconGrid = /** @class */ (function (_super) {\n __extends(ComponentIconGrid, _super);\n function ComponentIconGrid(options) {\n var _a;\n var _this = _super.call(this) || this;\n _this.container = (0, CE_1.ce)('div', 'mux_icongrid');\n if ((options === null || options === void 0 ? void 0 : options.sortable) === true) {\n _this.sortable = new Sortable(_this.container, {\n ghostClass: 'mux_icongrid-item-dragging',\n onStart: function () {\n _this.container.classList.add('mux_icongrid-dragging');\n },\n onEnd: function (evt) {\n _this.container.classList.remove('mux_icongrid-dragging');\n _this.callEvent('orderUpdated', _this.getOrder());\n },\n });\n }\n _this.setItems((_a = options === null || options === void 0 ? void 0 : options.items) !== null && _a !== void 0 ? _a : []);\n return _this;\n }\n ComponentIconGrid.prototype.setItems = function (items) {\n var _this = this;\n this.container.innerHTML = '';\n items.forEach(function (item) { return _this.addItem(item); });\n };\n ComponentIconGrid.prototype.addItem = function (item) {\n var element = (0, CE_1.ce)('div', 'mux_icongrid-item');\n if (item.uniqueIdentifier != undefined)\n element.setAttribute('uid', item.uniqueIdentifier);\n if (!item.enabled)\n element.classList.add('mux_icongrid-item-disabled');\n if (item.click != undefined)\n element.onclick = item.click;\n if (item.materialIcon != undefined)\n element.appendChild((0, CE_1.ce)('span', ['mux_icongrid-item-icon', 'material-symbols-outline'], null, item.materialIcon));\n else if (item.icon != undefined)\n element.appendChild((0, CE_1.ce)('img', 'mux_icongrid-item-icon', { src: item.icon }));\n element.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, item.text));\n this.container.appendChild(element);\n };\n ComponentIconGrid.prototype.getOrder = function () {\n return Array.from(this.container.querySelectorAll('.mux_icongrid-item')).map(function (item) { return item.getAttribute('uid'); });\n };\n ComponentIconGrid.prototype.enable = function (uniqueIdentifier) {\n var item = this.container.querySelector(\"[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"));\n if (item != undefined)\n item.classList.remove('mux_icongrid-item-disabled');\n };\n ComponentIconGrid.prototype.disable = function (uniqueIdentifier) {\n var item = this.container.querySelector(\"[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"));\n if (item != undefined)\n item.classList.add('mux_icongrid-item-disabled');\n };\n return ComponentIconGrid;\n}(baseComponent_1.MUXComponent));\nexports.ComponentIconGrid = ComponentIconGrid;\n//# sourceMappingURL=Component.IconGrid.js.map","/*! Hammer.JS - v2.0.17-rc - 2019-12-16\n * http://naver.github.io/egjs\n *\n * Forked By Naver egjs\n * Copyright (c) hammerjs\n * Licensed under the MIT license */\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\n\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\nvar assign$1 = assign;\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = typeof document === \"undefined\" ? {\n style: {}\n} : document.createElement('div');\nvar TYPE_FUNCTION = 'function';\nvar round = Math.round,\n abs = Math.abs;\nvar now = Date.now;\n\n/**\n * @private\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n\nfunction prefixed(obj, property) {\n var prefix;\n var prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n\n i++;\n }\n\n return undefined;\n}\n\n/* eslint-disable no-new-func, no-nested-ternary */\nvar win;\n\nif (typeof window === \"undefined\") {\n // window is undefined in node.js\n win = {};\n} else {\n win = window;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n\n var touchMap = {};\n var cssSupports = win.CSS && win.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n return touchMap[val] = cssSupports ? win.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\nvar SUPPORT_TOUCH = 'ontouchstart' in win;\nvar SUPPORT_POINTER_EVENTS = prefixed(win, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\nvar COMPUTE_INTERVAL = 25;\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * @private\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * @private\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n\nfunction boolOrFn(val, args) {\n if (typeof val === TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n\n return val;\n}\n\n/**\n * @private\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * @private\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n } // pan-x OR pan-y\n\n\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n } // manipulation\n\n\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\n/**\n * @private\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n\nvar TouchAction =\n/*#__PURE__*/\nfunction () {\n function TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n /**\n * @private\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n\n\n var _proto = TouchAction.prototype;\n\n _proto.set = function set(value) {\n // find out the touch-action by the event handlers\n if (value === TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n\n this.actions = value.toLowerCase().trim();\n };\n /**\n * @private\n * just re-set the touchAction value\n */\n\n\n _proto.update = function update() {\n this.set(this.manager.options.touchAction);\n };\n /**\n * @private\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n\n\n _proto.compute = function compute() {\n var actions = [];\n each(this.manager.recognizers, function (recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n };\n /**\n * @private\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n\n\n _proto.preventDefaults = function preventDefaults(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection; // if the touch action did prevented once this session\n\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n // do not prevent defaults if this is a tap gesture\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n };\n /**\n * @private\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n\n\n _proto.preventSrc = function preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n };\n\n return TouchAction;\n}();\n\n/**\n * @private\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n}\n\n/**\n * @private\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n\nfunction getCenter(pointers) {\n var pointersLength = pointers.length; // no need to loop when only one touch\n\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0;\n var y = 0;\n var i = 0;\n\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * @private\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * @private\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n\n var x = p2[props[0]] - p1[props[0]];\n var y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n}\n\n/**\n * @private\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n\n var x = p2[props[0]] - p1[props[0]];\n var y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * @private\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center; // let { offsetDelta:offset = {}, prevDelta = {}, prevInput = {} } = session;\n // jscs throwing error on defalut destructured values and without defaults tests fail\n\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * @private\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * @private\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\n/**\n * @private\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * @private\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input;\n var deltaTime = input.timeStamp - last.timeStamp;\n var velocity;\n var velocityX;\n var velocityY;\n var direction;\n\n if (input.eventType !== INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n* @private\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length; // store the first input to calculate the distance and direction\n\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n } // to compute scale and rotation we need to store the multiple touches\n\n\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput,\n firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input); // find the correct target\n\n var target = manager.element;\n var srcEvent = input.srcEvent;\n var srcEventTarget;\n\n if (srcEvent.composedPath) {\n srcEventTarget = srcEvent.composedPath()[0];\n } else if (srcEvent.path) {\n srcEventTarget = srcEvent.path[0];\n } else {\n srcEventTarget = srcEvent.target;\n }\n\n if (hasParent(srcEventTarget, target)) {\n target = srcEventTarget;\n }\n\n input.target = target;\n}\n\n/**\n * @private\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n } // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n\n\n input.eventType = eventType; // compute scale, rotation etc\n\n computeInputData(manager, input); // emit secret event\n\n manager.emit('hammer.input', input);\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * @private\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * @private\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * @private\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * @private\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n}\n\n/**\n * @private\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n\nvar Input =\n/*#__PURE__*/\nfunction () {\n function Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget; // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n\n this.domHandler = function (ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n }\n /**\n * @private\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n\n\n var _proto = Input.prototype;\n\n _proto.handler = function handler() {};\n /**\n * @private\n * bind the events\n */\n\n\n _proto.init = function init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n };\n /**\n * @private\n * unbind the events\n */\n\n\n _proto.destroy = function destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n };\n\n return Input;\n}();\n\n/**\n * @private\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n // do not use === here, test fails\n return i;\n }\n\n i++;\n }\n\n return -1;\n }\n}\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n}; // in IE10 the pointer types is defined as an enum\n\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n\n};\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive\n\nif (win.MSPointerEvent && !win.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n/**\n * @private\n * Pointer events input\n * @constructor\n * @extends Input\n */\n\n\nvar PointerEventInput =\n/*#__PURE__*/\nfunction (_Input) {\n _inheritsLoose(PointerEventInput, _Input);\n\n function PointerEventInput() {\n var _this;\n\n var proto = PointerEventInput.prototype;\n proto.evEl = POINTER_ELEMENT_EVENTS;\n proto.evWin = POINTER_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.store = _this.manager.session.pointerEvents = [];\n return _this;\n }\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n\n\n var _proto = PointerEventInput.prototype;\n\n _proto.handler = function handler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType === INPUT_TYPE_TOUCH; // get index of the event in the store\n\n var storeIndex = inArray(store, ev.pointerId, 'pointerId'); // start and mouse must be down\n\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n } // it not found, so the pointer hasn't been down (so it's probably a hover)\n\n\n if (storeIndex < 0) {\n return;\n } // update the event in the store\n\n\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n };\n\n return PointerEventInput;\n}(Input);\n\n/**\n * @private\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * @private\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function (a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n/**\n * @private\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n\nvar TouchInput =\n/*#__PURE__*/\nfunction (_Input) {\n _inheritsLoose(TouchInput, _Input);\n\n function TouchInput() {\n var _this;\n\n TouchInput.prototype.evTarget = TOUCH_TARGET_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.targetIds = {}; // this.evTarget = TOUCH_TARGET_EVENTS;\n\n return _this;\n }\n\n var _proto = TouchInput.prototype;\n\n _proto.handler = function handler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n };\n\n return TouchInput;\n}(Input);\n\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds; // when there is only one touch, the process can be simplified\n\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i;\n var targetTouches;\n var changedTouches = toArray(ev.changedTouches);\n var changedTargetTouches = [];\n var target = this.target; // get target touches from touches\n\n targetTouches = allTouches.filter(function (touch) {\n return hasParent(touch.target, target);\n }); // collect touches\n\n if (type === INPUT_START) {\n i = 0;\n\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n } // filter changed touches to only contain touches that exist in the collected target ids\n\n\n i = 0;\n\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n } // cleanup removed touches\n\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [// merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n/**\n * @private\n * Mouse events input\n * @constructor\n * @extends Input\n */\n\nvar MouseInput =\n/*#__PURE__*/\nfunction (_Input) {\n _inheritsLoose(MouseInput, _Input);\n\n function MouseInput() {\n var _this;\n\n var proto = MouseInput.prototype;\n proto.evEl = MOUSE_ELEMENT_EVENTS;\n proto.evWin = MOUSE_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.pressed = false; // mousedown state\n\n return _this;\n }\n /**\n * @private\n * handle mouse events\n * @param {Object} ev\n */\n\n\n var _proto = MouseInput.prototype;\n\n _proto.handler = function handler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type]; // on start we want to have the left mouse button down\n\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n } // mouse must be down\n\n\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n };\n\n return MouseInput;\n}(Input);\n\n/**\n * @private\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction setLastTouch(eventData) {\n var _eventData$changedPoi = eventData.changedPointers,\n touch = _eventData$changedPoi[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n var lts = this.lastTouches;\n this.lastTouches.push(lastTouch);\n\n var removeLastTouch = function removeLastTouch() {\n var i = lts.indexOf(lastTouch);\n\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX;\n var y = eventData.srcEvent.clientY;\n\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n\n return false;\n}\n\nvar TouchMouseInput =\n/*#__PURE__*/\nfunction () {\n var TouchMouseInput =\n /*#__PURE__*/\n function (_Input) {\n _inheritsLoose(TouchMouseInput, _Input);\n\n function TouchMouseInput(_manager, callback) {\n var _this;\n\n _this = _Input.call(this, _manager, callback) || this;\n\n _this.handler = function (manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType === INPUT_TYPE_TOUCH;\n var isMouse = inputData.pointerType === INPUT_TYPE_MOUSE;\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n } // when we're in a touch event, record touches to de-dupe synthetic mouse event\n\n\n if (isTouch) {\n recordTouches.call(_assertThisInitialized(_assertThisInitialized(_this)), inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(_assertThisInitialized(_assertThisInitialized(_this)), inputData)) {\n return;\n }\n\n _this.callback(manager, inputEvent, inputData);\n };\n\n _this.touch = new TouchInput(_this.manager, _this.handler);\n _this.mouse = new MouseInput(_this.manager, _this.handler);\n _this.primaryTouch = null;\n _this.lastTouches = [];\n return _this;\n }\n /**\n * @private\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n\n\n var _proto = TouchMouseInput.prototype;\n\n /**\n * @private\n * remove the event listeners\n */\n _proto.destroy = function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n };\n\n return TouchMouseInput;\n }(Input);\n\n return TouchMouseInput;\n}();\n\n/**\n * @private\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n\nfunction createInputInstance(manager) {\n var Type; // let inputClass = manager.options.inputClass;\n\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n\n return new Type(manager, inputHandler);\n}\n\n/**\n * @private\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n\n return false;\n}\n\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * @private\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * @private\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n\n if (manager) {\n return manager.get(otherRecognizer);\n }\n\n return otherRecognizer;\n}\n\n/**\n * @private\n * get a usable string, used as event postfix\n * @param {constant} state\n * @returns {String} state\n */\n\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n\n return '';\n}\n\n/**\n * @private\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n\n/**\n * @private\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n\nvar Recognizer =\n/*#__PURE__*/\nfunction () {\n function Recognizer(options) {\n if (options === void 0) {\n options = {};\n }\n\n this.options = _extends({\n enable: true\n }, options);\n this.id = uniqueId();\n this.manager = null; // default is enable true\n\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n /**\n * @private\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n\n\n var _proto = Recognizer.prototype;\n\n _proto.set = function set(options) {\n assign$1(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state\n\n this.manager && this.manager.touchAction.update();\n return this;\n };\n /**\n * @private\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n\n\n _proto.recognizeWith = function recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n\n return this;\n };\n /**\n * @private\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n\n\n _proto.dropRecognizeWith = function dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n };\n /**\n * @private\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n\n\n _proto.requireFailure = function requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n\n return this;\n };\n /**\n * @private\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n\n\n _proto.dropRequireFailure = function dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n\n return this;\n };\n /**\n * @private\n * has require failures boolean\n * @returns {boolean}\n */\n\n\n _proto.hasRequireFailures = function hasRequireFailures() {\n return this.requireFail.length > 0;\n };\n /**\n * @private\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n\n\n _proto.canRecognizeWith = function canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n };\n /**\n * @private\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n\n\n _proto.emit = function emit(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n } // 'panstart' and 'panmove'\n\n\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) {\n // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n } // panend and pancancel\n\n\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n };\n /**\n * @private\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n\n\n _proto.tryEmit = function tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n } // it's failing anyway\n\n\n this.state = STATE_FAILED;\n };\n /**\n * @private\n * can we emit?\n * @returns {boolean}\n */\n\n\n _proto.canEmit = function canEmit() {\n var i = 0;\n\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n\n i++;\n }\n\n return true;\n };\n /**\n * @private\n * update the recognizer\n * @param {Object} inputData\n */\n\n\n _proto.recognize = function recognize(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign$1({}, inputData); // is is enabled and allow recognizing?\n\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n } // reset when we've reached the end\n\n\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone); // the recognizer has recognized a gesture\n // so trigger an event\n\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n };\n /**\n * @private\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {constant} STATE\n */\n\n /* jshint ignore:start */\n\n\n _proto.process = function process(inputData) {};\n /* jshint ignore:end */\n\n /**\n * @private\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n\n\n _proto.getTouchAction = function getTouchAction() {};\n /**\n * @private\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n\n\n _proto.reset = function reset() {};\n\n return Recognizer;\n}();\n\n/**\n * @private\n * A tap is recognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n\nvar TapRecognizer =\n/*#__PURE__*/\nfunction (_Recognizer) {\n _inheritsLoose(TapRecognizer, _Recognizer);\n\n function TapRecognizer(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _Recognizer.call(this, _extends({\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300,\n // max time between the multi-tap taps\n time: 250,\n // max time of the pointer to be down (like finger on the screen)\n threshold: 9,\n // a minimal movement is ok, but keep it low\n posThreshold: 10\n }, options)) || this; // previous time and center,\n // used for tap counting\n\n _this.pTime = false;\n _this.pCenter = false;\n _this._timer = null;\n _this._input = null;\n _this.count = 0;\n return _this;\n }\n\n var _proto = TapRecognizer.prototype;\n\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n };\n\n _proto.process = function process(input) {\n var _this2 = this;\n\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n } // we only allow little movement\n // and we've reached an end event, so a tap is possible\n\n\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType !== INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input; // if tap count matches we have recognized it,\n // else it has began recognizing...\n\n var tapCount = this.count % options.taps;\n\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeout(function () {\n _this2.state = STATE_RECOGNIZED;\n\n _this2.tryEmit();\n }, options.interval);\n return STATE_BEGAN;\n }\n }\n }\n\n return STATE_FAILED;\n };\n\n _proto.failTimeout = function failTimeout() {\n var _this3 = this;\n\n this._timer = setTimeout(function () {\n _this3.state = STATE_FAILED;\n }, this.options.interval);\n return STATE_FAILED;\n };\n\n _proto.reset = function reset() {\n clearTimeout(this._timer);\n };\n\n _proto.emit = function emit() {\n if (this.state === STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n };\n\n return TapRecognizer;\n}(Recognizer);\n\n/**\n * @private\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n\nvar AttrRecognizer =\n/*#__PURE__*/\nfunction (_Recognizer) {\n _inheritsLoose(AttrRecognizer, _Recognizer);\n\n function AttrRecognizer(options) {\n if (options === void 0) {\n options = {};\n }\n\n return _Recognizer.call(this, _extends({\n pointers: 1\n }, options)) || this;\n }\n /**\n * @private\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n\n\n var _proto = AttrRecognizer.prototype;\n\n _proto.attrTest = function attrTest(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n };\n /**\n * @private\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n\n\n _proto.process = function process(input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input); // on cancel input and we've recognized before, return STATE_CANCELLED\n\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n\n return state | STATE_CHANGED;\n }\n\n return STATE_FAILED;\n };\n\n return AttrRecognizer;\n}(Recognizer);\n\n/**\n * @private\n * direction cons to string\n * @param {constant} direction\n * @returns {String}\n */\n\nfunction directionStr(direction) {\n if (direction === DIRECTION_DOWN) {\n return 'down';\n } else if (direction === DIRECTION_UP) {\n return 'up';\n } else if (direction === DIRECTION_LEFT) {\n return 'left';\n } else if (direction === DIRECTION_RIGHT) {\n return 'right';\n }\n\n return '';\n}\n\n/**\n * @private\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar PanRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n _inheritsLoose(PanRecognizer, _AttrRecognizer);\n\n function PanRecognizer(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _AttrRecognizer.call(this, _extends({\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n }, options)) || this;\n _this.pX = null;\n _this.pY = null;\n return _this;\n }\n\n var _proto = PanRecognizer.prototype;\n\n _proto.getTouchAction = function getTouchAction() {\n var direction = this.options.direction;\n var actions = [];\n\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n\n return actions;\n };\n\n _proto.directionTest = function directionTest(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY; // lock to axis?\n\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x !== this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y !== this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n };\n\n _proto.attrTest = function attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && ( // replace with a super call\n this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n };\n\n _proto.emit = function emit(input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n\n _AttrRecognizer.prototype.emit.call(this, input);\n };\n\n return PanRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar SwipeRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n _inheritsLoose(SwipeRecognizer, _AttrRecognizer);\n\n function SwipeRecognizer(options) {\n if (options === void 0) {\n options = {};\n }\n\n return _AttrRecognizer.call(this, _extends({\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n }, options)) || this;\n }\n\n var _proto = SwipeRecognizer.prototype;\n\n _proto.getTouchAction = function getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n };\n\n _proto.attrTest = function attrTest(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return _AttrRecognizer.prototype.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers === this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n };\n\n _proto.emit = function emit(input) {\n var direction = directionStr(input.offsetDirection);\n\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n };\n\n return SwipeRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar PinchRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n _inheritsLoose(PinchRecognizer, _AttrRecognizer);\n\n function PinchRecognizer(options) {\n if (options === void 0) {\n options = {};\n }\n\n return _AttrRecognizer.call(this, _extends({\n event: 'pinch',\n threshold: 0,\n pointers: 2\n }, options)) || this;\n }\n\n var _proto = PinchRecognizer.prototype;\n\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n };\n\n _proto.attrTest = function attrTest(input) {\n return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n };\n\n _proto.emit = function emit(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n\n _AttrRecognizer.prototype.emit.call(this, input);\n };\n\n return PinchRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n\nvar RotateRecognizer =\n/*#__PURE__*/\nfunction (_AttrRecognizer) {\n _inheritsLoose(RotateRecognizer, _AttrRecognizer);\n\n function RotateRecognizer(options) {\n if (options === void 0) {\n options = {};\n }\n\n return _AttrRecognizer.call(this, _extends({\n event: 'rotate',\n threshold: 0,\n pointers: 2\n }, options)) || this;\n }\n\n var _proto = RotateRecognizer.prototype;\n\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n };\n\n _proto.attrTest = function attrTest(input) {\n return _AttrRecognizer.prototype.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n };\n\n return RotateRecognizer;\n}(AttrRecognizer);\n\n/**\n * @private\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n\nvar PressRecognizer =\n/*#__PURE__*/\nfunction (_Recognizer) {\n _inheritsLoose(PressRecognizer, _Recognizer);\n\n function PressRecognizer(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _Recognizer.call(this, _extends({\n event: 'press',\n pointers: 1,\n time: 251,\n // minimal time of the pointer to be pressed\n threshold: 9\n }, options)) || this;\n _this._timer = null;\n _this._input = null;\n return _this;\n }\n\n var _proto = PressRecognizer.prototype;\n\n _proto.getTouchAction = function getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n };\n\n _proto.process = function process(input) {\n var _this2 = this;\n\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input; // we only allow little movement\n // and we've reached an end event, so a tap is possible\n\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeout(function () {\n _this2.state = STATE_RECOGNIZED;\n\n _this2.tryEmit();\n }, options.time);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n\n return STATE_FAILED;\n };\n\n _proto.reset = function reset() {\n clearTimeout(this._timer);\n };\n\n _proto.emit = function emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + \"up\", input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n };\n\n return PressRecognizer;\n}(Recognizer);\n\nvar defaults = {\n /**\n * @private\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * @private\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @private\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * @private\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * @private\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * @private\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * @private\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: \"none\",\n\n /**\n * @private\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: \"none\",\n\n /**\n * @private\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: \"none\",\n\n /**\n * @private\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: \"none\",\n\n /**\n * @private\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: \"none\",\n\n /**\n * @private\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: \"rgba(0,0,0,0)\"\n }\n};\n/**\n * @private\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * This is separated with other defaults because of tree-shaking.\n * @type {Array}\n */\n\nvar preset = [[RotateRecognizer, {\n enable: false\n}], [PinchRecognizer, {\n enable: false\n}, ['rotate']], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n}], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n}, ['swipe']], [TapRecognizer], [TapRecognizer, {\n event: 'doubletap',\n taps: 2\n}, ['tap']], [PressRecognizer]];\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n/**\n * @private\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n\n if (!element.style) {\n return;\n }\n\n var prop;\n each(manager.options.cssProps, function (value, name) {\n prop = prefixed(element.style, name);\n\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || \"\";\n }\n });\n\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n/**\n * @private\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n\n\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent(\"Event\");\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n/**\n* @private\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n\n\nvar Manager =\n/*#__PURE__*/\nfunction () {\n function Manager(element, options) {\n var _this = this;\n\n this.options = assign$1({}, defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function (item) {\n var recognizer = _this.add(new item[0](item[1]));\n\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n /**\n * @private\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n\n\n var _proto = Manager.prototype;\n\n _proto.set = function set(options) {\n assign$1(this.options, options); // Options that need a little more setup\n\n if (options.touchAction) {\n this.touchAction.update();\n }\n\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n\n return this;\n };\n /**\n * @private\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n\n\n _proto.stop = function stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n };\n /**\n * @private\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n\n\n _proto.recognize = function recognize(inputData) {\n var session = this.session;\n\n if (session.stopped) {\n return;\n } // run the touch-action polyfill\n\n\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers; // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n\n var curRecognizer = session.curRecognizer; // reset when the last recognizer is recognized\n // or when we're in a new session\n\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n session.curRecognizer = null;\n curRecognizer = null;\n }\n\n var i = 0;\n\n while (i < recognizers.length) {\n recognizer = recognizers[i]; // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer === curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) {\n // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n } // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n\n\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n session.curRecognizer = recognizer;\n curRecognizer = recognizer;\n }\n\n i++;\n }\n };\n /**\n * @private\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n\n\n _proto.get = function get(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event === recognizer) {\n return recognizers[i];\n }\n }\n\n return null;\n };\n /**\n * @private add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n\n\n _proto.add = function add(recognizer) {\n if (invokeArrayArg(recognizer, \"add\", this)) {\n return this;\n } // remove existing\n\n\n var existing = this.get(recognizer.options.event);\n\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n };\n /**\n * @private\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n\n\n _proto.remove = function remove(recognizer) {\n if (invokeArrayArg(recognizer, \"remove\", this)) {\n return this;\n }\n\n var targetRecognizer = this.get(recognizer); // let's make sure this recognizer exists\n\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, targetRecognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n };\n /**\n * @private\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n\n\n _proto.on = function on(events, handler) {\n if (events === undefined || handler === undefined) {\n return this;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n };\n /**\n * @private unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n\n\n _proto.off = function off(events, handler) {\n if (events === undefined) {\n return this;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n };\n /**\n * @private emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n\n\n _proto.emit = function emit(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n } // no handlers, so skip it all\n\n\n var handlers = this.handlers[event] && this.handlers[event].slice();\n\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n };\n /**\n * @private\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n\n\n _proto.destroy = function destroy() {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n };\n\n return Manager;\n}();\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n/**\n * @private\n * Touch events input\n * @constructor\n * @extends Input\n */\n\nvar SingleTouchInput =\n/*#__PURE__*/\nfunction (_Input) {\n _inheritsLoose(SingleTouchInput, _Input);\n\n function SingleTouchInput() {\n var _this;\n\n var proto = SingleTouchInput.prototype;\n proto.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n proto.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n _this = _Input.apply(this, arguments) || this;\n _this.started = false;\n return _this;\n }\n\n var _proto = SingleTouchInput.prototype;\n\n _proto.handler = function handler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; // should we handle the touch events?\n\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type); // when done, reset the started state\n\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n };\n\n return SingleTouchInput;\n}(Input);\n\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\n/**\n * @private\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = \"DEPRECATED METHOD: \" + name + \"\\n\" + message + \" AT \\n\";\n return function () {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n var log = window.console && (window.console.warn || window.console.log);\n\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n\n return method.apply(this, arguments);\n };\n}\n\n/**\n * @private\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n\nvar extend = deprecate(function (dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n\n while (i < keys.length) {\n if (!merge || merge && dest[keys[i]] === undefined) {\n dest[keys[i]] = src[keys[i]];\n }\n\n i++;\n }\n\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * @private\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n\nvar merge = deprecate(function (dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * @private\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n\nfunction inherit(child, base, properties) {\n var baseP = base.prototype;\n var childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign$1(childP, properties);\n }\n}\n\n/**\n * @private\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * @private\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n\nvar Hammer =\n/*#__PURE__*/\nfunction () {\n var Hammer =\n /**\n * @private\n * @const {string}\n */\n function Hammer(element, options) {\n if (options === void 0) {\n options = {};\n }\n\n return new Manager(element, _extends({\n recognizers: preset.concat()\n }, options));\n };\n\n Hammer.VERSION = \"2.0.17-rc\";\n Hammer.DIRECTION_ALL = DIRECTION_ALL;\n Hammer.DIRECTION_DOWN = DIRECTION_DOWN;\n Hammer.DIRECTION_LEFT = DIRECTION_LEFT;\n Hammer.DIRECTION_RIGHT = DIRECTION_RIGHT;\n Hammer.DIRECTION_UP = DIRECTION_UP;\n Hammer.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n Hammer.DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n Hammer.DIRECTION_NONE = DIRECTION_NONE;\n Hammer.DIRECTION_DOWN = DIRECTION_DOWN;\n Hammer.INPUT_START = INPUT_START;\n Hammer.INPUT_MOVE = INPUT_MOVE;\n Hammer.INPUT_END = INPUT_END;\n Hammer.INPUT_CANCEL = INPUT_CANCEL;\n Hammer.STATE_POSSIBLE = STATE_POSSIBLE;\n Hammer.STATE_BEGAN = STATE_BEGAN;\n Hammer.STATE_CHANGED = STATE_CHANGED;\n Hammer.STATE_ENDED = STATE_ENDED;\n Hammer.STATE_RECOGNIZED = STATE_RECOGNIZED;\n Hammer.STATE_CANCELLED = STATE_CANCELLED;\n Hammer.STATE_FAILED = STATE_FAILED;\n Hammer.Manager = Manager;\n Hammer.Input = Input;\n Hammer.TouchAction = TouchAction;\n Hammer.TouchInput = TouchInput;\n Hammer.MouseInput = MouseInput;\n Hammer.PointerEventInput = PointerEventInput;\n Hammer.TouchMouseInput = TouchMouseInput;\n Hammer.SingleTouchInput = SingleTouchInput;\n Hammer.Recognizer = Recognizer;\n Hammer.AttrRecognizer = AttrRecognizer;\n Hammer.Tap = TapRecognizer;\n Hammer.Pan = PanRecognizer;\n Hammer.Swipe = SwipeRecognizer;\n Hammer.Pinch = PinchRecognizer;\n Hammer.Rotate = RotateRecognizer;\n Hammer.Press = PressRecognizer;\n Hammer.on = addEventListeners;\n Hammer.off = removeEventListeners;\n Hammer.each = each;\n Hammer.merge = merge;\n Hammer.extend = extend;\n Hammer.bindFn = bindFn;\n Hammer.assign = assign$1;\n Hammer.inherit = inherit;\n Hammer.bindFn = bindFn;\n Hammer.prefixed = prefixed;\n Hammer.toArray = toArray;\n Hammer.inArray = inArray;\n Hammer.uniqueArray = uniqueArray;\n Hammer.splitStr = splitStr;\n Hammer.boolOrFn = boolOrFn;\n Hammer.hasParent = hasParent;\n Hammer.addEventListeners = addEventListeners;\n Hammer.removeEventListeners = removeEventListeners;\n Hammer.defaults = assign$1({}, defaults, {\n preset: preset\n });\n return Hammer;\n}();\n\n// style loader but by script tag, not by the loader.\n\nvar defaults$1 = Hammer.defaults;\n\nexport default Hammer;\nexport { INPUT_START, INPUT_MOVE, INPUT_END, INPUT_CANCEL, STATE_POSSIBLE, STATE_BEGAN, STATE_CHANGED, STATE_ENDED, STATE_RECOGNIZED, STATE_CANCELLED, STATE_FAILED, DIRECTION_NONE, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP, DIRECTION_DOWN, DIRECTION_HORIZONTAL, DIRECTION_VERTICAL, DIRECTION_ALL, Manager, Input, TouchAction, TouchInput, MouseInput, PointerEventInput, TouchMouseInput, SingleTouchInput, Recognizer, AttrRecognizer, TapRecognizer as Tap, PanRecognizer as Pan, SwipeRecognizer as Swipe, PinchRecognizer as Pinch, RotateRecognizer as Rotate, PressRecognizer as Press, addEventListeners as on, removeEventListeners as off, each, merge, extend, assign$1 as assign, inherit, bindFn, prefixed, toArray, inArray, uniqueArray, splitStr, boolOrFn, hasParent, addEventListeners, removeEventListeners, defaults$1 as defaults };\n//# sourceMappingURL=hammer.esm.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = exports.blackPixel = exports.isMobile = void 0;\nfunction isMobile() {\n return /Android|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i.test(navigator.userAgent);\n}\nexports.isMobile = isMobile;\nexports.blackPixel = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\nfunction delay(duration) {\n return new Promise(function (resolve) { return setTimeout(resolve, duration); });\n}\nexports.delay = delay;\n//# sourceMappingURL=Utils.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentImageViewer = void 0;\nvar hammerjs_1 = require(\"@egjs/hammerjs\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar Utils_1 = require(\"../../Utils/Utils\");\nvar Morph_Components_1 = require(\"../../Morph.Components\");\nvar ComponentImageViewer = /** @class */ (function (_super) {\n __extends(ComponentImageViewer, _super);\n function ComponentImageViewer(options) {\n var _a, _b, _c, _d, _e;\n var _this = _super.call(this) || this;\n _this._rawScale = 1;\n _this._relativeScale = 1;\n _this._relativeScaleBase = 1;\n _this._left = 0;\n _this._top = 0;\n _this._firstLoad = true;\n _this._dragging = false;\n _this._dragStart = { originX: 0, originY: 0, startX: 0, startY: 0 };\n window.viewer = _this;\n _this.background = (_a = options === null || options === void 0 ? void 0 : options.background) !== null && _a !== void 0 ? _a : true;\n _this.container = (0, CE_1.ce)('div', 'mux_imageviewer');\n if (options.background != false)\n _this.container.style.background = 'var(--mux-panel-sub-color)';\n _this._wrapper = (0, CE_1.ce)('div', 'mux_imageviewer-wrapper');\n _this._image = (0, CE_1.ce)('img', 'mux_imageviewer-image');\n _this._image.style.display = 'none';\n _this._image.addEventListener('load', function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._stopLoader();\n return [4 /*yield*/, (0, Utils_1.delay)(10)];\n case 1:\n _a.sent();\n this._image.style.display = 'block';\n return [2 /*return*/];\n }\n });\n }); });\n _this._unsupported = (0, CE_1.ce)('div', 'mux_imageviewer-unsupported');\n _this._unsupportedIcon = (0, CE_1.ce)('span', [\n 'material-symbols-outlined',\n 'mux_imageviewer-unsupported-icon',\n ]);\n _this._unsupportedText = (0, CE_1.ce)('div', 'mux_text');\n _this._unsupportedButton = new Morph_Components_1.MorphComponent.Button({\n mode: 'normal',\n content: 'Open externally',\n materialIcon: 'open_in_new',\n target: function () {\n window.open(_this._unsupportedTarget, '_blank');\n },\n }).container;\n _this._unsupported.append(_this._unsupportedIcon, _this._unsupportedText, _this._unsupportedButton);\n _this._wrapper.appendChild(_this._unsupported);\n _this._wrapper.appendChild(_this._image);\n _this._loader = (0, CE_1.ce)('div', 'mux_imageviewer-loader');\n _this._loader.append((0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'), (0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'), (0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'), (0, CE_1.ce)('div', 'mux_imageviewer-loader-dot'));\n _this._wrapper.appendChild(_this._loader);\n var controlscontainer = (0, CE_1.ce)('div', 'mux_imageviewer-controlscontainer');\n var controls = (0, CE_1.ce)('div', 'mux_imageviewer-controls');\n controlscontainer.appendChild(controls);\n if ((options === null || options === void 0 ? void 0 : options.controls) != false) {\n var srcCount = (_c = (_b = options === null || options === void 0 ? void 0 : options.src) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;\n if (srcCount > 1) {\n _this._thumbnails = (0, CE_1.ce)('div', [\n 'mux_imageviewer-control',\n 'mux_active',\n ]);\n _this._thumbnails.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'photo_library'));\n _this._thumbnails.appendChild((0, CE_1.ce)('span', [\n 'mux_imageviewer-control-badge',\n 'mux_text',\n 'mux_tiny',\n ], null, String(srcCount)));\n controls.appendChild(_this._thumbnails);\n }\n _this._zoomIn = (0, CE_1.ce)('div', 'mux_imageviewer-control');\n _this._zoomIn.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'zoom_in'));\n _this._zoomOut = (0, CE_1.ce)('div', 'mux_imageviewer-control');\n _this._zoomOut.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'zoom_out'));\n _this._fit = (0, CE_1.ce)('div', 'mux_imageviewer-control');\n _this._fit.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'fit_screen'));\n _this._highRes = (0, CE_1.ce)('div', 'mux_imageviewer-control');\n _this._highRes.style.display = 'none';\n _this._highRes.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'high_res'));\n controls.append(_this._zoomIn, _this._zoomOut, _this._fit, _this._highRes);\n }\n if ((options === null || options === void 0 ? void 0 : options.downloadable) == true) {\n var download = (0, CE_1.ce)('div', 'mux_imageviewer-control');\n download.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'download'));\n download.addEventListener('click', function () {\n var a = document.createElement('a');\n a.href = _this._image.src;\n a.download = 'image';\n a.click();\n });\n controls.appendChild(download);\n }\n if (controls.childNodes.length > 0)\n _this._wrapper.appendChild(controlscontainer);\n _this.container.appendChild(_this._wrapper);\n if ((options === null || options === void 0 ? void 0 : options.src) instanceof Array) {\n var sources = options.src;\n if (sources.length == 0)\n return _this;\n if (sources.length == 1) {\n _this.setImage(sources[0]);\n }\n else {\n _this._sources = sources;\n _this._drawThumbnails(sources, (_d = options === null || options === void 0 ? void 0 : options.thumbnailsOpen) !== null && _d !== void 0 ? _d : ((0, Utils_1.isMobile)() ? false : true));\n _this._drawNavigationControls();\n _this._imageCount = sources.length;\n var startIndex = (_e = options === null || options === void 0 ? void 0 : options.startSrc) !== null && _e !== void 0 ? _e : 0;\n _this.setImage(sources[startIndex], startIndex);\n }\n }\n else {\n var source = options.src;\n _this.setImage(source);\n }\n _this.registerListeners();\n return _this;\n }\n ComponentImageViewer.prototype.setImage = function (source, index) {\n return __awaiter(this, void 0, void 0, function () {\n var extention;\n var _this = this;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n this._startLoader();\n return [4 /*yield*/, (0, Utils_1.delay)(10)];\n case 1:\n _d.sent();\n this._updateUI(index);\n if (source.normal.split('/').pop().split('.').length > 1) {\n extention = (_b = (_a = source.normal.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : '';\n if (!['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(extention)) {\n this._unsupportedTarget = (_c = source.full) !== null && _c !== void 0 ? _c : source.normal;\n if (['mp4', 'webm'].includes(extention)) {\n return [2 /*return*/, this._showUnsupported('play_arrow', \"Videos are not supported yet. Please open the file in a new tab.\")];\n }\n return [2 /*return*/, this._showUnsupported('error_outline', \"File extention \".concat(extention, \" is not supported!\"))];\n }\n }\n else\n this._image.onerror = function () {\n _this._showUnsupported('error_outline', \"File extention \".concat(extention, \" is not supported!\"));\n };\n this._image.src = source.normal;\n if (source.full != undefined) {\n this._fullSrc = source.full;\n this._highRes.style.display = 'flex';\n }\n return [2 /*return*/];\n }\n });\n });\n };\n ComponentImageViewer.prototype.next = function () {\n return __awaiter(this, void 0, void 0, function () {\n var current, next;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n current = this.container.querySelector('.mux_imageviewer-gallery-thumb.active');\n if (current == null)\n return [2 /*return*/];\n next = current.nextElementSibling;\n if (next == null)\n return [2 /*return*/];\n this._startLoader();\n return [4 /*yield*/, (0, Utils_1.delay)(10)];\n case 1:\n _a.sent();\n next.click();\n return [2 /*return*/];\n }\n });\n });\n };\n ComponentImageViewer.prototype.previous = function () {\n return __awaiter(this, void 0, void 0, function () {\n var current, prev;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n current = this.container.querySelector('.mux_imageviewer-gallery-thumb.active');\n if (current == null)\n return [2 /*return*/];\n prev = current.previousElementSibling;\n if (prev == null)\n return [2 /*return*/];\n this._startLoader();\n return [4 /*yield*/, (0, Utils_1.delay)(10)];\n case 1:\n _a.sent();\n prev.click();\n return [2 /*return*/];\n }\n });\n });\n };\n ComponentImageViewer.prototype._updateUI = function (index) {\n if (index != undefined) {\n this.callEvent('imageIndexChanged', index);\n var previousThumb = this.container.querySelector('.mux_imageviewer-gallery-thumb.active');\n if (previousThumb != null)\n previousThumb.classList.remove('active');\n var thumb = this.container.querySelector(\".mux_imageviewer-gallery-thumb[index=\\\"\".concat(index, \"\\\"]\"));\n if (thumb != null) {\n thumb.classList.add('active');\n thumb.scrollIntoView({\n behavior: 'smooth',\n inline: 'center',\n });\n if (this._firstLoad) {\n this._firstLoad = false;\n setTimeout(function () {\n thumb.scrollIntoView({\n behavior: 'smooth',\n inline: 'center',\n });\n }, 500);\n }\n }\n }\n if (this._prev != undefined)\n if (index == 0)\n this._prev.classList.add('disabled');\n else\n this._prev.classList.remove('disabled');\n if (this._next != undefined)\n if (index == this._imageCount - 1)\n this._next.classList.add('disabled');\n else\n this._next.classList.remove('disabled');\n };\n ComponentImageViewer.prototype._showUnsupported = function (icon, text) {\n this._unsupportedIcon.innerText = icon;\n this._unsupportedText.innerText = text;\n this._stopLoader();\n this._unsupported.style.display = 'flex';\n };\n ComponentImageViewer.prototype._startLoader = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._loader.style.display = 'flex';\n this._unsupported.style.display = 'none';\n this._image.style.display = 'none';\n return [4 /*yield*/, (0, Utils_1.delay)(10)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n ComponentImageViewer.prototype._stopLoader = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._loader.style.display = 'none';\n this._restartScaling();\n return [2 /*return*/];\n });\n });\n };\n ComponentImageViewer.prototype._handleStart = function (originX, originY) {\n this._dragging = true;\n this._dragStart = {\n originX: originX,\n originY: originY,\n startX: this._image.offsetLeft,\n startY: this._image.offsetTop,\n };\n };\n ComponentImageViewer.prototype._handleMove = function (x, y) {\n var newX = this._validateX(this._dragStart.startX + x - this._dragStart.originX);\n var newY = this._validateY(this._dragStart.startY + y - this._dragStart.originY);\n this._left = newX;\n this._top = newY;\n this._image.style.left = \"\".concat(newX, \"px\");\n this._image.style.top = \"\".concat(newY, \"px\");\n };\n ComponentImageViewer.prototype.registerListeners = function () {\n var _this = this;\n //Start\n this.container.addEventListener('mousedown', function (e) {\n _this._handleStart(e.clientX, e.clientY);\n });\n this.container.addEventListener('touchstart', function (e) {\n _this._handleStart(e.touches[0].clientX, e.touches[0].clientY);\n });\n //Move\n this.container.addEventListener('mousemove', function (e) {\n if (!_this._dragging)\n return;\n if (e.buttons != 1) {\n _this._dragging = false;\n return;\n }\n _this._handleMove(e.clientX, e.clientY);\n });\n this.container.addEventListener('touchmove', function (e) {\n if (!_this._dragging)\n return;\n _this._handleMove(e.touches[0].clientX, e.touches[0].clientY);\n });\n //End\n this.container.addEventListener('mouseup', function (e) {\n _this._dragging = false;\n });\n this.container.addEventListener('touchend', function (e) {\n _this._dragging = false;\n });\n //Zoom\n this.container.addEventListener('wheel', function (e) {\n e.preventDefault();\n _this._setScale(_this._relativeScale + e.deltaY * -0.003);\n });\n var mc = new hammerjs_1.default(this._wrapper);\n mc.add(new hammerjs_1.default.Pinch());\n var beforeScale = this._relativeScale;\n mc.on('pinchstart', function (e) {\n beforeScale = _this._relativeScale;\n });\n mc.on('pinch', function (e) {\n _this._setScale(beforeScale * e.scale);\n });\n //Controls\n if (this._thumbnails != undefined)\n this._thumbnails.addEventListener('click', function () {\n if (_this.container.classList.contains('mux_imageviewer-galleryopen')) {\n _this.container.classList.remove('mux_imageviewer-galleryopen');\n _this._thumbnails.classList.remove('mux_active');\n _this.callEvent('thumbnailsOpen', false);\n }\n else {\n _this.container.classList.add('mux_imageviewer-galleryopen');\n _this._thumbnails.classList.add('mux_active');\n _this.callEvent('thumbnailsOpen', true);\n }\n });\n if (this._zoomIn != undefined)\n this._zoomIn.addEventListener('click', function () { return _this.zoomIn(); });\n if (this._zoomOut != undefined)\n this._zoomOut.addEventListener('click', function () { return _this.zoomOut(); });\n if (this._fit != undefined)\n this._fit.addEventListener('click', function () { return _this.fitToContainer(); });\n if (this._highRes != undefined)\n this._highRes.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._startLoader();\n this._image.style.display = 'none';\n return [4 /*yield*/, (0, Utils_1.delay)(10)];\n case 1:\n _a.sent();\n this._image.src = this._fullSrc;\n this._highRes.style.display = 'none';\n return [2 /*return*/];\n }\n });\n }); });\n };\n ComponentImageViewer.prototype._drawNavigationControls = function () {\n var _this = this;\n this._next = (0, CE_1.ce)('div', [\n 'mux_imageviewer-navigation',\n 'mux_imageviewer-navigation-right',\n ]);\n this._next.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'navigate_next'));\n this._next.addEventListener('click', function () {\n if (_this._next.classList.contains('disabled'))\n return;\n _this.next();\n });\n this._wrapper.appendChild(this._next);\n this._prev = (0, CE_1.ce)('div', [\n 'mux_imageviewer-navigation',\n 'mux_imageviewer-navigation-left',\n ]);\n this._prev.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'navigate_before'));\n this._prev.addEventListener('click', function () {\n if (_this._prev.classList.contains('disabled'))\n return;\n _this.previous();\n });\n this._wrapper.appendChild(this._prev);\n };\n ComponentImageViewer.prototype._drawThumbnails = function (sources, openThumbnails) {\n var _this = this;\n var gallery = (0, CE_1.ce)('div', 'mux_imageviewer-gallery');\n if (this.background != false)\n gallery.style.background = 'var(--mux-panel-color)';\n sources.forEach(function (source, index) {\n var _a;\n var thumb = (0, CE_1.ce)('img', 'mux_imageviewer-gallery-thumb', {\n index: index,\n src: (_a = source.thumbnail) !== null && _a !== void 0 ? _a : source.normal,\n });\n thumb.addEventListener('click', function () {\n _this.setImage(source, index);\n });\n gallery.appendChild(thumb);\n });\n this.container.appendChild(gallery);\n if (openThumbnails)\n this.container.classList.add('mux_imageviewer-galleryopen');\n this.fitToContainer();\n };\n ComponentImageViewer.prototype._validateX = function (x) {\n var bounds = this._image.getBoundingClientRect();\n var minInlay = this._wrapper.clientWidth - 10;\n if (bounds.width < this._wrapper.clientWidth) {\n x = (this._wrapper.clientWidth - bounds.width) / 2;\n }\n else {\n x = Math.max(x, (bounds.width - minInlay) * -1);\n x = Math.min(x, this._wrapper.clientWidth - minInlay);\n }\n return x;\n };\n ComponentImageViewer.prototype._validateY = function (y) {\n var bounds = this._image.getBoundingClientRect();\n var minInlay = this._wrapper.clientHeight - 10;\n if (bounds.height < this._wrapper.clientHeight) {\n y = (this._wrapper.clientHeight - bounds.height) / 2;\n }\n else {\n y = Math.max(y, (bounds.height - minInlay) * -1);\n y = Math.min(y, this._wrapper.clientHeight - minInlay);\n }\n return y;\n };\n ComponentImageViewer.prototype._restartScaling = function () {\n var _this = this;\n this._calculateRelativeScale(function () {\n _this.fitToContainer();\n _this._startScaleClock();\n });\n clearTimeout(this._restartScalingRepeat);\n this._restartScalingRepeat = setTimeout(function () {\n _this._calculateRelativeScale(function () {\n _this.fitToContainer();\n _this._startScaleClock();\n });\n }, 1000);\n };\n ComponentImageViewer.prototype._calculateRelativeScale = function (readyCallback) {\n var _this = this;\n var bounds = this._image.getBoundingClientRect();\n clearTimeout(this._fitToContainerRetry);\n if (bounds.width == 0 ||\n bounds.height == 0 ||\n this._image.width == 0 ||\n this._image.height == 0)\n return (this._fitToContainerRetry = setTimeout(function () { return _this._calculateRelativeScale(readyCallback); }, 100));\n var maxWidth = this._wrapper.clientWidth - 20;\n var maxHeight = this._wrapper.clientHeight - 20;\n this._relativeScaleBase = Math.min(maxWidth / this._image.width, maxHeight / this._image.height);\n this._setScale(this._relativeScale);\n if (typeof readyCallback == 'function')\n readyCallback();\n };\n ComponentImageViewer.prototype._setScale = function (factor) {\n this._relativeScale = Math.min(Math.max(factor, 1), 10);\n this._setRawScale(this._relativeScaleBase * factor);\n };\n ComponentImageViewer.prototype._setRawScale = function (scale) {\n var bounds = this._image.getBoundingClientRect();\n this._rawScale = Math.max(scale, this._relativeScaleBase);\n var widthDiff = bounds.width - this._rawScale * this._image.clientWidth;\n var heightDiff = bounds.height - this._rawScale * this._image.clientHeight;\n this._image.style.transform = \"scale(\".concat(this._rawScale, \")\");\n this._left = this._validateX(this._left + widthDiff / 2);\n this._image.style.left = \"\".concat(this._left, \"px\");\n this._top = this._validateY(this._top + heightDiff / 2);\n this._image.style.top = \"\".concat(this._top, \"px\");\n };\n ComponentImageViewer.prototype._startScaleClock = function () {\n var _this = this;\n if (this._startScaleClockInt != undefined)\n return;\n var lastWidth = this._wrapper.clientWidth;\n var lastHeight = this._wrapper.clientHeight;\n clearInterval(this._startScaleClockInt);\n this._startScaleClockInt = setInterval(function () {\n if (_this.container.parentElement == null)\n return clearInterval(_this._startScaleClockInt);\n if (lastWidth != _this._wrapper.clientWidth ||\n lastHeight != _this._wrapper.clientHeight) {\n lastWidth = _this._wrapper.clientWidth;\n lastHeight = _this._wrapper.clientHeight;\n _this._calculateRelativeScale();\n }\n }, 100);\n };\n ComponentImageViewer.prototype.setImageIndex = function (index) {\n if (this._sources == undefined)\n return;\n if (this._sources[index] == undefined)\n return;\n this.setImage(this._sources[index], index);\n };\n ComponentImageViewer.prototype.fitToContainer = function () {\n this._setScale(1);\n this._left = this._validateX((this._wrapper.clientWidth - this._image.width * this._rawScale) / 2);\n this._top = this._validateY((this._wrapper.clientHeight - this._image.height * this._rawScale) /\n 2);\n this._image.style.left = \"\".concat(this._left, \"px\");\n this._image.style.top = \"\".concat(this._top, \"px\");\n this._image.style.opacity = '1';\n };\n ComponentImageViewer.prototype.zoomIn = function () {\n this._setScale(this._relativeScale + 0.3);\n };\n ComponentImageViewer.prototype.zoomOut = function () {\n this._setScale(this._relativeScale - 0.3);\n };\n return ComponentImageViewer;\n}(baseComponent_1.MUXComponent));\nexports.ComponentImageViewer = ComponentImageViewer;\n//# sourceMappingURL=Component.ImageViewer.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentInput = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentInput = /** @class */ (function (_super) {\n __extends(ComponentInput, _super);\n function ComponentInput(options) {\n var _a;\n var _this = _super.call(this) || this;\n _this.container = (0, CE_1.ce)('input', 'mux_input', {\n type: options.type,\n });\n var border = (_a = options.border) !== null && _a !== void 0 ? _a : 'hover';\n if (border == 'always')\n _this.container.classList.add('mux_input-alwaysborder');\n else if (border == 'never')\n _this.container.classList.add('mux_input-noborder');\n if ((options === null || options === void 0 ? void 0 : options.min) != undefined)\n _this.container.min = String(options.min);\n if ((options === null || options === void 0 ? void 0 : options.max) != undefined)\n _this.container.max = String(options.max);\n if ((options === null || options === void 0 ? void 0 : options.step) != undefined)\n _this.container.step = String(options.step);\n if ((options === null || options === void 0 ? void 0 : options.maxLength) != undefined)\n _this.container.maxLength = options.maxLength;\n if ((options === null || options === void 0 ? void 0 : options.readOnly) != undefined)\n _this.container.readOnly = options.readOnly;\n if ((options === null || options === void 0 ? void 0 : options.placeholder) != undefined)\n _this.container.placeholder = options.placeholder;\n if ((options === null || options === void 0 ? void 0 : options.value) != undefined)\n _this.container.value = options.value;\n if ((options === null || options === void 0 ? void 0 : options.valueAsNumber) != undefined)\n _this.container.valueAsNumber = options.valueAsNumber;\n if (options.enabled == false)\n _this.container.setAttribute('disabled', '');\n _this.container.oninput = function () {\n return _this.callEvent('input', _this.container.value);\n };\n _this.container.onfocus = function () { return _this.callEvent('focus'); };\n _this.container.onblur = function () { return _this.callEvent('blur'); };\n return _this;\n }\n ComponentInput.prototype.getValue = function () {\n return this.container.value;\n };\n ComponentInput.prototype.getValueAsNumber = function () {\n return this.container.valueAsNumber;\n };\n ComponentInput.prototype.setValue = function (value) {\n this.container.value = value;\n };\n ComponentInput.prototype.setValueAsNumber = function (value) {\n this.container.valueAsNumber = value;\n };\n return ComponentInput;\n}(baseComponent_1.MUXComponent));\nexports.ComponentInput = ComponentInput;\n//# sourceMappingURL=Component.Input.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentList = void 0;\nvar Index_1 = require(\"../../Index\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar Sortable = require(\"sortablejs\");\nvar ComponentList = /** @class */ (function (_super) {\n __extends(ComponentList, _super);\n function ComponentList(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n var _this = _super.call(this) || this;\n _this.openGroups = [];\n _this.groupComponents = new Map();\n _this.options = options;\n _this.dragable = (_a = options === null || options === void 0 ? void 0 : options.dragable) !== null && _a !== void 0 ? _a : false;\n _this.hover = (_b = options === null || options === void 0 ? void 0 : options.hover) !== null && _b !== void 0 ? _b : false;\n _this.grouped = (_c = options === null || options === void 0 ? void 0 : options.grouped) !== null && _c !== void 0 ? _c : false;\n _this.groupsCloseable = (_d = options === null || options === void 0 ? void 0 : options.groupsCloseable) !== null && _d !== void 0 ? _d : false;\n _this.sortGroupsAlphabetically =\n (_e = options === null || options === void 0 ? void 0 : options.sortGroupsAlphabetically) !== null && _e !== void 0 ? _e : false;\n _this.openGroups = (_f = options === null || options === void 0 ? void 0 : options.groupsOpen) !== null && _f !== void 0 ? _f : [];\n _this.allowSingleItemGroups = (_g = options === null || options === void 0 ? void 0 : options.allowSingleItemGroups) !== null && _g !== void 0 ? _g : false;\n _this.highlighted = (_h = options === null || options === void 0 ? void 0 : options.highlightedItem) !== null && _h !== void 0 ? _h : null;\n if (_this.dragable == true && _this.grouped == true)\n throw new Error(\"Unable to use 'grouped' for list component when 'canReorderByDrag' is also enabled. \");\n _this.container = (0, CE_1.ce)('div', 'mux_list');\n _this.updateItems((_j = options === null || options === void 0 ? void 0 : options.items) !== null && _j !== void 0 ? _j : []);\n if (_this.dragable == true) {\n _this.sortable = new Sortable(_this.container, {\n ghostClass: 'mux_list-item-dragging',\n onStart: function () {\n _this.container.classList.add('mux_list-dragging');\n },\n onEnd: function (evt) {\n _this.container.classList.remove('mux_list-dragging');\n _this.callEvent('orderUpdated', _this.getCurrentOrder());\n },\n });\n }\n return _this;\n }\n ComponentList.prototype.updateItems = function (items) {\n var _this = this;\n var _a;\n this.container.innerHTML = '';\n this.groupComponents.clear();\n if (items == undefined || items.length == 0)\n return;\n if (this.grouped) {\n var groups = [];\n for (var i = 0; i < items.length; i++) {\n var group = (_a = items[i].group) !== null && _a !== void 0 ? _a : 'Ungrouped';\n if (!groups.includes(group)) {\n groups.push(group);\n }\n }\n if (this.sortGroupsAlphabetically == true)\n groups.sort();\n for (var i = 0; i < groups.length; i++) {\n this.ensureGroup(groups[i]);\n }\n }\n items.forEach(function (item) { return _this.addItem(item); });\n this.groupComponents.forEach(function (_a, group) {\n var container = _a.container, content = _a.content;\n if (content.children.length == 0) {\n container.parentElement.removeChild(container);\n _this.groupComponents.delete(group);\n }\n else {\n if (content.children.length == 1 &&\n _this.allowSingleItemGroups == false) {\n container.classList.add('mux_group-singular');\n }\n else\n container.classList.remove('mux_group-singular');\n }\n });\n };\n ComponentList.prototype.getCurrentOrder = function () {\n return Array.from(this.container.querySelectorAll('.mux_list-item')).map(function (item) {\n return item.getAttribute('uid');\n });\n };\n ComponentList.prototype.removeItem = function (uniqueIdentifier) {\n var match = this.container.querySelector(\".mux_list-item[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"));\n if (match != null)\n match.remove();\n this.callEvent('orderUpdated', this.getCurrentOrder());\n };\n ComponentList.prototype.addItem = function (item) {\n var _this = this;\n var _a, _b;\n var element = (0, CE_1.ce)('div', 'mux_list-item', {\n uid: item.uniqueIdentifier,\n });\n if (this.hover)\n element.classList.add('mux_list-item-hover');\n // if (showSeperator) element.classList.add('mux_list-item-separator');\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.overwriteCursor) != null)\n element.style.cursor = this.options.overwriteCursor;\n if (this.highlighted != null &&\n this.highlighted == item.uniqueIdentifier)\n element.classList.add('mux_list-item-selected');\n if (item.tooltip != undefined)\n element.title = item.tooltip;\n if (item.enabled == false)\n element.classList.add('mux_list-item-disabled');\n var content = (0, CE_1.ce)('div', 'mux_list-item-content');\n element.appendChild(content);\n element.onclick = function (e) {\n var _a;\n if (((_a = _this.options) === null || _a === void 0 ? void 0 : _a.highlightOnClick) == true)\n _this.highlight(item.uniqueIdentifier);\n if (item.click != undefined)\n item.click();\n };\n if (item.materialIcon != undefined) {\n var mi = (0, CE_1.ce)('span', ['mux_list-item-icon', 'material-symbols-outlined'], null, item.materialIcon);\n content.appendChild(mi);\n if (item.materialIconColor != undefined)\n mi.style.color = item.materialIconColor;\n }\n else if (item.icon != undefined)\n content.appendChild((0, CE_1.ce)('img', 'mux_list-item-icon', { src: item.icon }));\n var text = (0, CE_1.ce)('div', 'mux_list-item-text');\n if (item.text != undefined)\n text.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_normal'], null, item.text));\n if (item.subText != undefined)\n text.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, item.subText));\n content.appendChild(text);\n if (item.actions != undefined && item.actions.length > 0) {\n var actions = (0, CE_1.ce)('div', 'mux_list-item-actions');\n var _loop_1 = function (i) {\n action = (0, CE_1.ce)('div', 'mux_list-item-action');\n if (item.actions[i].tooltip != undefined)\n action.title = item.actions[i].tooltip;\n if (item.actions[i].materialIcon != undefined)\n action.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, item.actions[i].materialIcon));\n else if (item.actions[i].icon != undefined)\n action.appendChild((0, CE_1.ce)('img', null, { src: item.actions[i].icon }));\n action.onclick = function (e) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n item.actions[i].click();\n };\n actions.appendChild(action);\n };\n var action;\n for (var i = 0; i < item.actions.length; i++) {\n _loop_1(i);\n }\n content.appendChild(actions);\n }\n if (this.grouped == true) {\n var group = (_b = item.group) !== null && _b !== void 0 ? _b : 'Ungrouped';\n var content = this.ensureGroup(group).content;\n content.appendChild(element);\n }\n else\n this.container.appendChild(element);\n this.size = this.container.querySelectorAll('.mux_list-item').length;\n };\n ComponentList.prototype.highlight = function (uniqueIdentifier) {\n this.highlighted = uniqueIdentifier;\n this.container\n .querySelectorAll('.mux_list-item')\n .forEach(function (item) {\n var uid = item.getAttribute('uid');\n if (uid == uniqueIdentifier) {\n item.classList.add('mux_list-item-selected');\n item.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n }\n else\n item.classList.remove('mux_list-item-selected');\n });\n };\n ComponentList.prototype.ensureGroup = function (group) {\n var _this = this;\n if (this.groupComponents.has(group))\n return this.groupComponents.get(group);\n var groupComponent = new Index_1.MorphComponent.Group({\n title: group,\n open: this.openGroups.includes(group) ||\n this.openGroups.includes('*') ||\n this.groupsCloseable == false,\n closeable: this.groupsCloseable,\n });\n groupComponent.on('openState', function (state) {\n if (state) {\n if (!_this.openGroups.includes(group))\n _this.openGroups.push(group);\n }\n else {\n if (_this.openGroups.includes(group))\n _this.openGroups.splice(_this.openGroups.indexOf(group), 1);\n }\n _this.callEvent('openGroupsUpdated', _this.openGroups);\n });\n this.container.appendChild(groupComponent.container);\n this.groupComponents.set(group, groupComponent);\n return this.groupComponents.get(group);\n };\n return ComponentList;\n}(baseComponent_1.MUXComponent));\nexports.ComponentList = ComponentList;\n//# sourceMappingURL=Component.List.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentMenuBar = void 0;\nvar Index_1 = require(\"../../Index\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentMenuBar = /** @class */ (function (_super) {\n __extends(ComponentMenuBar, _super);\n function ComponentMenuBar(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n var _this = _super.call(this) || this;\n _this.enabledStates = {};\n _this._leftItems = [];\n _this._rightItems = [];\n _this.mobileIgnoreItems = [];\n _this._leftItems = (_a = options.left) !== null && _a !== void 0 ? _a : [];\n _this._rightItems = (_b = options.right) !== null && _b !== void 0 ? _b : [];\n _this.contextMaterialIconColor =\n (_c = options.contextMaterialIconColor) !== null && _c !== void 0 ? _c : 'var(--mux-primary-color)';\n _this.contextMenuAlign = (_d = options.contextMenuAlign) !== null && _d !== void 0 ? _d : 'below';\n _this.contextAlignSide = {\n below: 'center',\n left: 'right',\n right: 'left',\n }[_this.contextMenuAlign];\n _this.container = (0, CE_1.ce)('div', 'mux_menubar');\n _this.size = (_e = options.size) !== null && _e !== void 0 ? _e : 'normal';\n _this.container.classList.add(\"mux_menubar-\".concat(_this.size));\n _this.direction = (_f = options === null || options === void 0 ? void 0 : options.direction) !== null && _f !== void 0 ? _f : 'horizontal';\n _this.container.classList.add(\"mux_menubar-direction-\".concat(_this.direction));\n _this.leftContainer = (0, CE_1.ce)('div', ['mux_menubar-locater', 'mux_left']);\n _this.rightContainer = (0, CE_1.ce)('div', ['mux_menubar-locater', 'mux_right']);\n _this.mobileContainer = (0, CE_1.ce)('div', 'mux_menubar-mobile');\n var mobileRightItems = (0, CE_1.ce)('div', [\n 'mux_menubar-mobile-items',\n 'mux_right',\n ]);\n ((_h = (_g = options === null || options === void 0 ? void 0 : options.mobile) === null || _g === void 0 ? void 0 : _g.right) !== null && _h !== void 0 ? _h : []).forEach(function (item) {\n return _this.addItem(item, mobileRightItems);\n });\n var mobileLeftItems = (0, CE_1.ce)('div', [\n 'mux_menubar-mobile-items',\n 'mux_left',\n ]);\n ((_k = (_j = options === null || options === void 0 ? void 0 : options.mobile) === null || _j === void 0 ? void 0 : _j.left) !== null && _k !== void 0 ? _k : []).forEach(function (item) {\n return _this.addItem(item, mobileLeftItems);\n });\n if (((_l = options === null || options === void 0 ? void 0 : options.mobile) === null || _l === void 0 ? void 0 : _l.logo) != undefined) {\n mobileLeftItems.style.left = '50px';\n var logo = (0, CE_1.ce)('a', 'mux_menubar-mobile-logo', {\n href: options.mobile.logo.href,\n });\n logo.appendChild((0, CE_1.ce)('img', null, { src: options.mobile.logo.src }));\n _this.mobileContainer.appendChild(logo);\n }\n _this.mobileIgnoreItems = (_o = (_m = options === null || options === void 0 ? void 0 : options.mobile) === null || _m === void 0 ? void 0 : _m.ignoreItems) !== null && _o !== void 0 ? _o : [];\n _this.addItem({\n type: 'icon',\n materialIcon: 'menu',\n click: function () {\n _this.openMobileMenu();\n // this.rightContainer.classList.toggle('mux_menubar-visible');\n },\n }, mobileRightItems);\n _this.mobileContainer.append(mobileLeftItems, mobileRightItems);\n _this.container.append(_this.leftContainer, _this.rightContainer, _this.mobileContainer);\n if ((options === null || options === void 0 ? void 0 : options.left) != undefined)\n options.left.forEach(function (item) {\n return _this.addItem(item, _this.leftContainer);\n });\n if ((options === null || options === void 0 ? void 0 : options.right) != undefined)\n options.right.forEach(function (item) {\n return _this.addItem(item, _this.rightContainer);\n });\n if (_this.direction == 'horizontal') {\n _this.calculateSizing();\n window.addEventListener('resize', function () {\n _this.calculateSizing();\n });\n var c = 0;\n _this.sizeClock = setInterval(function () {\n if (c++ > 200)\n clearInterval(_this.sizeClock);\n if (_this.container.parentElement != null) {\n clearInterval(_this.sizeClock);\n _this.calculateSizing();\n }\n }, 10);\n }\n else {\n _this.leftContainer.classList.add('mux_menubar-visible');\n _this.rightContainer.classList.add('mux_menubar-visible');\n }\n return _this;\n }\n ComponentMenuBar.prototype.calculateSizing = function () {\n var menuSize = this.leftContainer.clientWidth + this.rightContainer.clientWidth;\n var containerWidth = this.container.clientWidth;\n if (menuSize != 0 && containerWidth != 0)\n clearInterval(this.sizeClock);\n if (menuSize > containerWidth) {\n this.leftContainer.classList.remove('mux_menubar-visible');\n this.rightContainer.classList.remove('mux_menubar-visible');\n this.mobileContainer.classList.add('mux_menubar-visible');\n }\n else {\n this.leftContainer.classList.add('mux_menubar-visible');\n this.rightContainer.classList.add('mux_menubar-visible');\n this.mobileContainer.classList.remove('mux_menubar-visible');\n }\n };\n ComponentMenuBar.prototype.addItem = function (item, target) {\n var _this = this;\n if (item.type != 'image') {\n var element = (0, CE_1.ce)(item.href != undefined ? 'a' : 'div', 'mux_menubar-item');\n if (item.uniqueIdentifier != undefined)\n element.setAttribute('uid', item.uniqueIdentifier);\n if (item.enabled != undefined && item.enabled == false)\n element.classList.add('mux_menubar-item-disabled');\n if (item.href != undefined)\n element.setAttribute('href', item.href);\n if (item.tooltip != undefined)\n element.title = item.tooltip;\n if (item.selected == true)\n element.classList.add('mux_menubar-item-selected');\n if (item.materialIcon != undefined) {\n var materialIcon = (0, CE_1.ce)('span', [\n 'mux_menubar-item-materialicon',\n 'material-symbols-outlined',\n ], null, item.materialIcon);\n if (item.materialIconTransform != undefined)\n materialIcon.style.transform = item.materialIconTransform;\n element.appendChild(materialIcon);\n }\n switch (item.type) {\n case 'icon':\n element.classList.add('mux_menubar-item-icon');\n element.onclick = item.click;\n break;\n case 'normal':\n element.classList.add('mux_menubar-item-normal');\n element.appendChild((0, CE_1.ce)('p', ['mux_text', \"mux_\".concat(this.size)], null, item.text));\n break;\n }\n if (item.children == undefined || item.children.length == 0) {\n if (item.click != undefined && item.href == undefined)\n element.onclick = item.click;\n }\n else {\n // if (item.type == 'normal')\n element.appendChild((0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_menubar-item-arrow'], null, \"keyboard_arrow_\".concat({ below: 'down', left: 'left', right: 'right' }[this.contextMenuAlign])));\n element.onclick = function () {\n var _a;\n if (element.classList.contains('mux_menubar-item-disabled'))\n return;\n var bounds = element.getBoundingClientRect();\n element.classList.add('mux_menubar-item-selected');\n for (var i = 0; i < item.children.length; i++)\n if (((_a = item.children[i]) === null || _a === void 0 ? void 0 : _a.uniqueIdentifier) != undefined) {\n if (_this.enabledStates[item.children[i].uniqueIdentifier] != undefined)\n item.children[i].enabled =\n _this.enabledStates[item.children[i].uniqueIdentifier];\n }\n var x;\n var y;\n if (_this.contextMenuAlign == 'below') {\n x = bounds.x + bounds.width / 2;\n y = bounds.y + bounds.height;\n }\n else if (_this.contextMenuAlign == 'left') {\n x = bounds.x;\n y = bounds.y;\n }\n else if (_this.contextMenuAlign == 'right') {\n x = bounds.x + bounds.width;\n y = bounds.y;\n }\n _this.dropdown = new Index_1.MorphComponent.ContextMenu({\n x: x,\n y: y,\n align: _this.contextAlignSide,\n items: item.children,\n materialIconColor: _this.contextMaterialIconColor,\n });\n _this.dropdown.on('close', function () {\n element.classList.remove('mux_menubar-item-selected');\n });\n };\n }\n target.appendChild(element);\n }\n else {\n var icon = (0, CE_1.ce)(item.href != undefined ? 'a' : 'div', 'mux_menubar-image');\n if (item.href != undefined)\n icon.href = item.href;\n icon.appendChild((0, CE_1.ce)('img', null, { src: item.url }));\n target.appendChild(icon);\n }\n };\n ComponentMenuBar.prototype.setSelected = function (uniqueIdentifier) {\n this.selected = uniqueIdentifier;\n this.container\n .querySelectorAll('.mux_menubar-item')\n .forEach(function (item) {\n if (item.getAttribute('uid') == uniqueIdentifier &&\n uniqueIdentifier != null)\n item.classList.add('mux_menubar-item-selected');\n else\n item.classList.remove('mux_menubar-item-selected');\n });\n if (this.mobileMenu != null)\n this.mobileMenu.setSelected(uniqueIdentifier);\n };\n ComponentMenuBar.prototype.setEnabled = function (uniqueIdentifier, enabled) {\n var item = this.container.querySelector(\".mux_menubar-item[uid=\\\"\".concat(uniqueIdentifier, \"\\\"]\"));\n if (item == null)\n return;\n if (enabled)\n item.classList.remove('mux_menubar-item-disabled');\n else\n item.classList.add('mux_menubar-item-disabled');\n };\n ComponentMenuBar.prototype.openMobileMenu = function () {\n var _this = this;\n var container = (0, CE_1.ce)('div', 'mux_mobilemenu');\n var inner = (0, CE_1.ce)('div', 'mux_mobilemenu-inner');\n this.mobileMenu = new ComponentMenuBar({\n direction: 'vertical',\n left: this._leftItems\n .filter(function (item) {\n if (item.uniqueIdentifier == undefined)\n return true;\n return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);\n })\n .map(function (item) {\n if (item.type !== 'icon')\n return item;\n return __assign(__assign({}, item), { type: 'normal' });\n }),\n right: this._rightItems\n .filter(function (item) {\n if (item.uniqueIdentifier == undefined)\n return true;\n return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);\n })\n .map(function (item) {\n if (item.type !== 'icon')\n return item;\n return __assign(__assign({}, item), { type: 'normal' });\n }),\n });\n this.mobileMenu.setSelected(this.selected);\n inner.appendChild(this.mobileMenu.container);\n container.appendChild(inner);\n document.body.appendChild(container);\n container.animate({ opacity: '1' }, { duration: 200 }).onfinish =\n function () {\n container.style.opacity = '1';\n };\n inner.animate({ transform: 'translateX(0%)' }, { duration: 200, easing: 'ease-out' }).onfinish = function () {\n inner.style.transform = 'translateX(0%)';\n };\n container.onclick = function () {\n container.animate({ opacity: '0' }, { duration: 200 }).onfinish =\n function () {\n container.style.opacity = '0';\n };\n inner.animate({ transform: 'translateX(100%)' }, { duration: 200, easing: 'ease-in' }).onfinish = function () {\n inner.style.transform = 'translateX(100%)';\n _this.mobileMenu = null;\n container.remove();\n };\n };\n inner.onclick = function (e) {\n e.stopPropagation();\n };\n };\n return ComponentMenuBar;\n}(baseComponent_1.MUXComponent));\nexports.ComponentMenuBar = ComponentMenuBar;\n//# sourceMappingURL=Component.MenuBar.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentPaletteCheckbox = void 0;\nvar Index_1 = require(\"../../Index\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentPaletteCheckbox = /** @class */ (function (_super) {\n __extends(ComponentPaletteCheckbox, _super);\n function ComponentPaletteCheckbox(options) {\n var _a;\n var _this = _super.call(this) || this;\n _this.defaultView = 'recent_and_rest';\n _this.lastChecked = [];\n _this.recents = [];\n _this.pid = options === null || options === void 0 ? void 0 : options.paletteUniqueIdentifier;\n // if (pid != undefined && pid.length > 0)\n // \tlastChecked = Validator.array(\n // \t\tFieldStorage.getChannelValue('palette_checkbox', pid),\n // \t\t[]\n // \t);\n _this.container = (0, CE_1.ce)('div', ['mux_palette', 'mux_palette-checkboxes']);\n _this.container.onclick = function () { return _this.close(); };\n _this.inner = (0, CE_1.ce)('div', 'mux_palette-inner');\n _this.inner.onclick = function (e) { return e.stopPropagation(); };\n _this.results = (0, CE_1.ce)('div', ['mux_palette-results']);\n _this.inner.appendChild(_this.results);\n _this.container.appendChild(_this.inner);\n if ((options === null || options === void 0 ? void 0 : options.title) != undefined && options.title.trim().length > 0) {\n _this.showResultLabel(options.title);\n }\n ((_a = options === null || options === void 0 ? void 0 : options.items) !== null && _a !== void 0 ? _a : []).forEach(function (item, i) {\n return _this.renderSearchResult(item, i);\n });\n document.body.appendChild(_this.container);\n setTimeout(function () {\n _this.container.style.opacity = '1';\n _this.inner.style.opacity = '1';\n _this.inner.style.transform = 'scale(1)';\n }, 20);\n _this.registerKeyListener();\n return _this;\n }\n ComponentPaletteCheckbox.prototype.close = function () {\n var _this = this;\n this.overwrite.close();\n this.container.style.pointerEvents = 'none';\n this.container.style.opacity = '0';\n this.inner.style.opacity = '0';\n this.inner.style.transform = 'scale(0.8)';\n setTimeout(function () { return _this.destroy(); }, 400);\n this.callEvent('close');\n };\n ComponentPaletteCheckbox.prototype.getChecked = function () {\n var selected = Array.from(this.results.querySelectorAll('.mux_palette-results-item-checked')).map(function (item) {\n return item.getAttribute('uid');\n });\n this.lastChecked = selected;\n // FieldStorage.setChannelValue('palette_checkbox', this.pid, selected);\n return selected;\n };\n ComponentPaletteCheckbox.prototype.renderSearchResult = function (result, index) {\n var _this = this;\n if (result.uniqueIdentifier == undefined)\n throw new Error(\"Missing property 'uniqueIdentifier' inside one or more items of component 'PaletteCheckbox'\");\n var item = (0, CE_1.ce)('div', 'mux_palette-results-item', {\n uid: result.uniqueIdentifier,\n });\n if (this.lastChecked.length == 0 && result.defaultValue == true)\n item.classList.add('mux_palette-results-item-checked');\n if (this.lastChecked.includes(result.uniqueIdentifier))\n item.classList.add('mux_palette-results-item-checked');\n if (index == 0)\n item.classList.add('mux_palette-results-item-selected');\n item.addEventListener('click', function () {\n if (item.classList.contains('mux_palette-results-item-checked'))\n item.classList.remove('mux_palette-results-item-checked');\n else\n item.classList.add('mux_palette-results-item-checked');\n _this.getChecked();\n });\n var checkbox = (0, CE_1.ce)('div', 'mux_palette-results-item-checkbox');\n checkbox.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, 'done'));\n item.appendChild(checkbox);\n if (result.materialIcon != undefined) {\n var icon = (0, CE_1.ce)('div', 'material-symbols-outlined', null, result.materialIcon);\n if (result.materialIconTransform != undefined)\n icon.style.transform = result.materialIconTransform;\n item.appendChild(icon);\n }\n else if (result.iconSrc != undefined)\n item.appendChild((0, CE_1.ce)('img', 'mux_palette-results-item-icon', {\n src: result.iconSrc,\n }));\n var text = (0, CE_1.ce)('div', [\n 'mux_palette-results-item-text',\n 'mux_text',\n 'mux_small',\n ]);\n if (result.prefix != undefined)\n text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.prefix.trim()));\n text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-main', null, result.name.trim()));\n if (result.suffix != undefined)\n text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.suffix.trim()));\n item.appendChild(text);\n item.appendChild((0, CE_1.ce)('div', [\n 'mux_palette-results-item-selectedtext',\n 'mux_text',\n 'mux_tiny',\n ], null, ' to toggle'));\n this.results.appendChild(item);\n return item;\n };\n ComponentPaletteCheckbox.prototype.registerKeyListener = function () {\n var _this = this;\n this.overwrite = Index_1.MorphKey.createOverwrite();\n this.overwrite.bind('Escape', function () { return _this.close(); });\n this.overwrite.bind('Enter', function () {\n var checked = _this.getChecked();\n _this.callEvent('selected', checked);\n _this.close();\n });\n this.overwrite.bind(' ', function () {\n var selected = _this.getSelectedResult();\n if (selected != null)\n selected.click();\n });\n this.overwrite.bind('ArrowUp', function () {\n var selected = _this.getSelectedResult();\n if (selected != null &&\n selected.previousElementSibling != null &&\n selected.previousElementSibling.classList.contains('mux_palette-results-item')) {\n selected.classList.remove('mux_palette-results-item-selected');\n selected.previousElementSibling.classList.add('mux_palette-results-item-selected');\n setTimeout(function () {\n if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)\n selected.previousElementSibling.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }, 50);\n }\n });\n this.overwrite.bind('ArrowDown', function () {\n var selected = _this.getSelectedResult();\n if (selected != null &&\n selected.nextElementSibling != null &&\n selected.nextElementSibling.classList.contains('mux_palette-results-item')) {\n selected.classList.remove('mux_palette-results-item-selected');\n selected.nextElementSibling.classList.add('mux_palette-results-item-selected');\n setTimeout(function () {\n if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)\n selected.previousElementSibling.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }, 50);\n }\n });\n };\n ComponentPaletteCheckbox.prototype.showResultLabel = function (text, materialIcon) {\n var label = (0, CE_1.ce)('div', 'mux_palette-results-header');\n if (materialIcon != undefined)\n label.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, materialIcon));\n label.appendChild((0, CE_1.ce)('span', null, null, text));\n this.results.appendChild(label);\n };\n ComponentPaletteCheckbox.prototype.getSelectedResult = function () {\n if (this.results == null)\n return null;\n return this.results.querySelector('.mux_palette-results-item-selected');\n };\n return ComponentPaletteCheckbox;\n}(baseComponent_1.MUXComponent));\nexports.ComponentPaletteCheckbox = ComponentPaletteCheckbox;\n//# sourceMappingURL=Component.PaletteCheckbox.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentPaletteSearch = void 0;\nvar Index_1 = require(\"../../Index\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentPaletteSearch = /** @class */ (function (_super) {\n __extends(ComponentPaletteSearch, _super);\n function ComponentPaletteSearch(options) {\n var _a, _b, _c;\n var _this = _super.call(this) || this;\n _this.defaultView = 'recent_and_rest';\n _this.recents = [];\n _this.pid = options === null || options === void 0 ? void 0 : options.paletteUniqueIdentifier;\n _this.defaultView = (_a = options === null || options === void 0 ? void 0 : options.defaultView) !== null && _a !== void 0 ? _a : 'recent_and_rest';\n if ((_this.defaultView == 'recent' ||\n _this.defaultView == 'recent_and_rest') &&\n (_this.pid == undefined || _this.pid.trim().length == 0))\n throw new Error(\"Property 'paletteUniqueIdentifier' is required in component 'PaletteSearch' to use recents.\");\n // if (pid != undefined && pid.length > 0)\n // \trecents = Validator.array(\n // \t\tFieldStorage.getChannelValue('palette_search', pid),\n // \t\t[]\n // \t);\n _this.container = (0, CE_1.ce)('div', 'mux_palette');\n _this.container.onclick = function () { return _this.close(); };\n _this.inner = (0, CE_1.ce)('div', 'mux_palette-inner');\n _this.inner.onclick = function (e) { return e.stopPropagation(); };\n var input = (0, CE_1.ce)('input', 'mux_palette-input', {\n type: 'text',\n placeholder: (_b = options === null || options === void 0 ? void 0 : options.placeholder) !== null && _b !== void 0 ? _b : 'Starting typing to search...',\n });\n input.oninput = function () { return _this.handleInputUpdate(input.value); };\n _this.inner.appendChild(input);\n _this.results = (0, CE_1.ce)('div', ['mux_palette-results']);\n _this.inner.appendChild(_this.results);\n _this.container.appendChild(_this.inner);\n document.body.appendChild(_this.container);\n _this.items = (_c = options === null || options === void 0 ? void 0 : options.items) !== null && _c !== void 0 ? _c : [];\n _this.registerKeyListener();\n _this.showDefaultView();\n setTimeout(function () {\n _this.container.style.opacity = '1';\n _this.inner.style.opacity = '1';\n _this.inner.style.transform = 'scale(1)';\n input.focus();\n }, 20);\n return _this;\n }\n ComponentPaletteSearch.prototype.close = function () {\n var _this = this;\n this.overwrite.close();\n this.container.style.pointerEvents = 'none';\n this.container.style.opacity = '0';\n this.inner.style.opacity = '0';\n this.inner.style.transform = 'scale(0.8)';\n setTimeout(function () { return _this.destroy(); }, 400);\n this.callEvent('close');\n };\n ComponentPaletteSearch.prototype.registerKeyListener = function () {\n var _this = this;\n this.overwrite = Index_1.MorphKey.createOverwrite();\n this.overwrite.bind('Escape', function () { return _this.close(); });\n this.overwrite.bind('Enter', function () {\n var selected = _this.getSelectedResult();\n if (selected != null)\n selected.click();\n });\n this.overwrite.bind('ArrowUp', function () {\n var selected = _this.getSelectedResult();\n if (selected != null &&\n selected.previousElementSibling != null &&\n selected.previousElementSibling.classList.contains('mux_palette-results-item')) {\n selected.classList.remove('mux_palette-results-item-selected');\n selected.previousElementSibling.classList.add('mux_palette-results-item-selected');\n setTimeout(function () {\n if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)\n selected.previousElementSibling.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }, 50);\n }\n });\n this.overwrite.bind('ArrowDown', function () {\n var selected = _this.getSelectedResult();\n if (selected != null &&\n selected.nextElementSibling != null &&\n selected.nextElementSibling.classList.contains('mux_palette-results-item')) {\n selected.classList.remove('mux_palette-results-item-selected');\n selected.nextElementSibling.classList.add('mux_palette-results-item-selected');\n setTimeout(function () {\n if ((selected === null || selected === void 0 ? void 0 : selected.previousElementSibling) != null)\n selected.previousElementSibling.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }, 50);\n }\n });\n };\n ComponentPaletteSearch.prototype.search = function (query) {\n var tagwords = this.getTags(query);\n var results = [];\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n var score = this.getScore(tagwords, item.tags != undefined ? item.tags : this.getTags(item.name)) *\n (item.scoreWeight != undefined && !isNaN(item.scoreWeight)\n ? item.scoreWeight\n : 1);\n if (score > 0)\n results.push(__assign({ score: score }, item));\n }\n return results;\n };\n ComponentPaletteSearch.prototype.addToRecents = function (recentId) {\n var newRecents = [];\n __spreadArray([recentId], this.recents, true).forEach(function (id) {\n if (!newRecents.includes(id))\n newRecents.push(id);\n });\n if (newRecents.length > 5)\n newRecents.splice(5, newRecents.length - 5);\n this.recents = newRecents;\n // FieldStorage.setChannelValue('palette_search', pid, this.recents);\n };\n ComponentPaletteSearch.prototype.renderSearchResult = function (result, index) {\n var _this = this;\n var item = (0, CE_1.ce)(result.href != undefined ? 'a' : 'div', 'mux_palette-results-item');\n if (result.href != undefined)\n item.href = result.href;\n else if (result.click != undefined)\n item.addEventListener('click', function () {\n result.click();\n _this.close();\n });\n if (this.pid != undefined &&\n this.pid.length > 0 &&\n (result.uniqueIdentifier != undefined || result.href != undefined)) {\n item.addEventListener('click', function () {\n var _a;\n return _this.addToRecents((_a = result.uniqueIdentifier) !== null && _a !== void 0 ? _a : \"address:\".concat(result.href));\n });\n }\n if (index == 0)\n item.classList.add('mux_palette-results-item-selected');\n if (result.materialIcon != undefined) {\n var icon = (0, CE_1.ce)('span', 'material-symbols-outlined', null, result.materialIcon);\n if (result.materialIconTransform != undefined)\n icon.style.transform = result.materialIconTransform;\n item.appendChild(icon);\n }\n else if (result.iconSrc != undefined)\n item.appendChild((0, CE_1.ce)('img', 'mux_palette-results-item-icon', {\n src: result.iconSrc,\n }));\n var text = (0, CE_1.ce)('div', [\n 'mux_palette-results-item-text',\n 'mux_text',\n 'mux_small',\n ]);\n if (result.prefix != undefined)\n text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.prefix.trim()));\n text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-main', null, result.name.trim()));\n if (result.suffix != undefined)\n text.appendChild((0, CE_1.ce)('span', 'mux_palette-results-item-text-sub', null, result.suffix.trim()));\n item.appendChild(text);\n // if (result.selectedText != undefined) {\n // \titem.appendChild(\n // \t\tce(\n // \t\t\t'div',\n // \t\t\t['mux_palette-results-item-selectedtext', 'mux_text', 'mux_tiny'],\n // \t\t\tnull,\n // \t\t\tresult.selectedText\n // \t\t)\n // \t);\n // }\n this.results.appendChild(item);\n return item;\n };\n ComponentPaletteSearch.prototype.showDefaultView = function () {\n var _this = this;\n this.results.innerHTML = '';\n switch (this.defaultView) {\n case 'all':\n this.items.forEach(function (item, i) {\n return _this.renderSearchResult(item, i);\n });\n break;\n case 'none':\n return;\n case 'recent_and_rest':\n var recentItems = this.getRecentItems();\n if (recentItems.length > 0)\n this.showResultLabel('Recent actions', 'schedule');\n recentItems.forEach(function (item, i) {\n return _this.renderSearchResult(item, i);\n });\n var otherItems = this.items.filter(function (item) {\n var _a;\n if (item.uniqueIdentifier == undefined && item.href == null)\n return true;\n return !_this.recents.includes((_a = item.uniqueIdentifier) !== null && _a !== void 0 ? _a : \"address:\".concat(item.href));\n });\n if (otherItems.length > 0) {\n otherItems.forEach(function (item, i) {\n var itemElement = _this.renderSearchResult(item, i + recentItems.length);\n if (i == 0 && recentItems.length > 0)\n itemElement.classList.add('mux_palette-results-item-separator');\n });\n }\n break;\n case 'recent':\n default:\n this.showResultLabel('Recent actions', 'schedule');\n this.getRecentItems().forEach(function (item, i) {\n return _this.renderSearchResult(item, i);\n });\n break;\n }\n };\n ComponentPaletteSearch.prototype.getRecentItems = function () {\n if (this.recents == undefined || this.recents.length == 0)\n return [];\n var addressMap = new Map();\n var uidMap = new Map();\n this.items.forEach(function (item) {\n if (item.uniqueIdentifier != undefined &&\n item.uniqueIdentifier.trim().length > 0)\n uidMap.set(item.uniqueIdentifier.trim(), item);\n if (item.href != undefined && item.href.trim().length > 0)\n addressMap.set(item.href.trim(), item);\n });\n var recentItems = [];\n this.recents.forEach(function (recentId) {\n if (recentId.startsWith('address:')) {\n if (addressMap.has(recentId.replace('address:', '')))\n recentItems.push(addressMap.get(recentId.replace('address:', '')));\n }\n else {\n if (uidMap.has(recentId))\n recentItems.push(uidMap.get(recentId));\n }\n });\n return recentItems;\n };\n ComponentPaletteSearch.prototype.handleInputUpdate = function (value) {\n var _this = this;\n if (value.trim().length < 1)\n return this.showDefaultView();\n this.results.innerHTML = '';\n var searchresults = this.search(value.trim());\n if (searchresults.length == 0)\n return this.showResultLabel('No results based on your search query.', 'warning');\n searchresults\n .sort(function (a, b) {\n return b.score - a.score;\n })\n .forEach(function (result, index) { return _this.renderSearchResult(result, index); });\n };\n ComponentPaletteSearch.prototype.showResultLabel = function (text, materialIcon) {\n var label = (0, CE_1.ce)('div', 'mux_palette-results-label');\n if (materialIcon != undefined)\n label.appendChild((0, CE_1.ce)('span', 'material-symbols-outlined', null, materialIcon));\n label.appendChild((0, CE_1.ce)('span', null, null, text));\n this.results.appendChild(label);\n };\n ComponentPaletteSearch.prototype.getSelectedResult = function () {\n if (this.results == null)\n return null;\n return this.results.querySelector('.mux_palette-results-item-selected');\n };\n ComponentPaletteSearch.prototype.getScore = function (queryWords, tagWords) {\n var score = 0;\n var _loop_1 = function (i) {\n tagWords.forEach(function (tagWord) {\n if (tagWord.includes(queryWords[i])) {\n score += tagWord.startsWith(queryWords[i]) ? 2 : 1;\n }\n });\n };\n for (var i = 0; i < queryWords.length; i++) {\n _loop_1(i);\n }\n return score;\n };\n ComponentPaletteSearch.prototype.getTags = function (query) {\n var tags = [];\n query\n .toLowerCase()\n .split(' ')\n .map(function (word) {\n return word.trim();\n })\n .filter(function (word) {\n return word.length > 0;\n })\n .forEach(function (tag) {\n if (!tags.includes(tag))\n tags.push(tag);\n });\n return tags;\n };\n return ComponentPaletteSearch;\n}(baseComponent_1.MUXComponent));\nexports.ComponentPaletteSearch = ComponentPaletteSearch;\n//# sourceMappingURL=Component.PaletteSearch.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentResizer = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentResizer = /** @class */ (function (_super) {\n __extends(ComponentResizer, _super);\n function ComponentResizer(options) {\n var _a, _b, _c;\n var _this = _super.call(this) || this;\n _this.startPoint = null;\n _this.startSize = null;\n _this.preMove = true;\n _this.moveEvent = function (e) {\n _this.handleMove(e);\n };\n _this.touchEndEvent = function (e) {\n _this.stopResize();\n };\n _this.direction = (_a = options === null || options === void 0 ? void 0 : options.direction) !== null && _a !== void 0 ? _a : 'right';\n _this.closeable = (_b = options === null || options === void 0 ? void 0 : options.closeable) !== null && _b !== void 0 ? _b : false;\n _this.min = options === null || options === void 0 ? void 0 : options.min;\n _this.max = options === null || options === void 0 ? void 0 : options.max;\n _this.relative = (_c = options === null || options === void 0 ? void 0 : options.relative) !== null && _c !== void 0 ? _c : false;\n _this.container = (0, CE_1.ce)('div', 'mux_resizer');\n var area = (0, CE_1.ce)('div', 'mux_resizer-area');\n var grab = (0, CE_1.ce)('div', 'mux_resizer-grab');\n var grabHandle = (0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_resizer-grab-handle'], null, 'drag_handle');\n if (options.direction == 'left' || options.direction == 'right')\n grabHandle.style.transform = 'rotate(90deg)';\n grab.appendChild(grabHandle);\n var grabOpen = (0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_resizer-grab-open'], null, {\n left: 'arrow_left',\n right: 'arrow_right',\n up: 'arrow_drop_up',\n down: 'arrow_drop_down',\n }[_this.direction]);\n grab.appendChild(grabOpen);\n area.appendChild(grab);\n if ((options === null || options === void 0 ? void 0 : options.existingContainer) != undefined) {\n if (!options.existingContainer.classList.contains('mux_resizer'))\n throw new Error('Container of registered resizer does not contain mux_resizer classname');\n _this.container = options.existingContainer;\n if (_this.container.querySelector('.mux_resizer-area') != null) {\n var existingArea = _this.container.querySelector('.mux_resizer-area');\n _this.container.removeChild(existingArea);\n }\n }\n _this.container.appendChild(area);\n _this.container.classList.add(\"mux_resizer-direction-\".concat(_this.direction));\n _this.currentSize =\n _this.direction == 'left' || _this.direction == 'right'\n ? _this.container.clientWidth\n : _this.container.clientHeight;\n area.addEventListener('mousedown', function (e) { return _this.startResize(e); });\n area.addEventListener('touchstart', function (e) { return _this.startResize(e); });\n grab.addEventListener('mousedown', function (e) { return _this.startResize(e); });\n area.addEventListener('touchstart', function (e) { return _this.startResize(e); });\n grab.addEventListener('click', function () {\n if (!_this.container.classList.contains('mux_resizer-closed'))\n return;\n var size = typeof _this.min === 'function' ? _this.min() : _this.min;\n if (_this.direction == 'left' || _this.direction == 'right')\n _this.container.style.width = _this.toSize(size);\n else if (_this.direction == 'up' || _this.direction == 'down')\n _this.container.style.height = _this.toSize(size);\n _this.currentSize = size;\n _this.callEvent('resized', size);\n _this.container.classList.remove('mux_resizer-closed');\n });\n if (!_this.relative)\n window.addEventListener('resize', function () {\n _this.setSize(_this.currentSize);\n });\n return _this;\n }\n ComponentResizer.prototype.toSize = function (value) {\n if (!this.relative)\n return \"\".concat(value, \"px\");\n var parentSize = this.direction == 'left' || this.direction == 'right'\n ? this.container.parentElement.clientWidth\n : this.container.parentElement.clientHeight;\n var percent = (value / parentSize) * 100;\n return \"\".concat(percent, \"%\");\n };\n ComponentResizer.prototype.setSize = function (size) {\n var value = this.parseNewValue(size);\n if (this.direction == 'left' || this.direction == 'right')\n this.container.style.width = this.toSize(value);\n else if (this.direction == 'up' || this.direction == 'down')\n this.container.style.height = this.toSize(value);\n this.currentSize = value;\n this.callEvent('resized', value);\n };\n ComponentResizer.prototype.getSize = function () {\n return this.currentSize;\n };\n ComponentResizer.prototype.parseNewValue = function (value) {\n var _min = typeof this.min === 'function' ? this.min() : this.min;\n var _max = typeof this.max === 'function' ? this.max() : this.max;\n value >= _min\n ? this.container.classList.remove('mux_resizer-block')\n : this.container.classList.add('mux_resizer-block');\n if (_min >= 0) {\n if (this.closeable == true && value < _min * 0.5) {\n this.container.classList.add('mux_resizer-closed');\n this.callEvent('resized', 0);\n return 0;\n }\n else\n value = Math.max(_min, value);\n }\n if (_max > 0)\n value = Math.min(_max, value);\n this.container.classList.remove('mux_resizer-closed');\n return value;\n };\n ComponentResizer.prototype.startResize = function (e) {\n var _a = this.pageCoords(e), x = _a.x, y = _a.y;\n var bounds = this.container.getBoundingClientRect();\n if (this.direction == 'left' || this.direction == 'right') {\n this.startPoint = x;\n this.startSize = bounds.width;\n }\n else if (this.direction == 'up' || this.direction == 'down') {\n this.startPoint = y;\n this.startSize = bounds.height;\n }\n window.addEventListener('mousemove', this.moveEvent);\n window.addEventListener('touchmove', this.moveEvent);\n window.addEventListener('touchend', this.touchEndEvent);\n this.container.classList.add('mux_resizer-moving');\n this.callEvent('startResize');\n };\n ComponentResizer.prototype.stopResize = function () {\n this.startPoint = null;\n this.startSize = null;\n this.preMove = true;\n this.container.classList.remove('mux_resizer-moving');\n window.removeEventListener('mousemove', this.moveEvent);\n window.removeEventListener('touchmove', this.moveEvent);\n window.removeEventListener('touchend', this.touchEndEvent);\n this.callEvent('stopResize');\n };\n ComponentResizer.prototype.handleMove = function (e) {\n var _a, _b, _c;\n if (((_a = e === null || e === void 0 ? void 0 : e.buttons) !== null && _a !== void 0 ? _a : 1) != 1 ||\n ((_c = (_b = e === null || e === void 0 ? void 0 : e.touches) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 1) == 0 ||\n this.startPoint == null ||\n this.startSize == null) {\n this.stopResize();\n return;\n }\n var _d = this.pageCoords(e), x = _d.x, y = _d.y;\n if (this.preMove) {\n var startSpan = Math.abs(this.startPoint -\n (this.direction == 'left' || this.direction == 'right'\n ? x\n : y));\n if (startSpan >= 10) {\n this.preMove = false;\n this.container.classList.add('mux_resizer-moving');\n }\n else\n return;\n }\n var value = null;\n if (this.direction == 'left' || this.direction == 'right') {\n value = this.parseNewValue(this.startSize +\n (this.direction == 'left'\n ? this.startPoint - x\n : x - this.startPoint));\n this.container.style.width = this.toSize(value);\n }\n else if (this.direction == 'up' || this.direction == 'down') {\n value = this.parseNewValue(this.startSize +\n (this.direction == 'up'\n ? this.startPoint - y\n : y - this.startPoint));\n this.container.style.height = this.toSize(value);\n }\n this.currentSize = value;\n this.callEvent('resized', value);\n };\n ComponentResizer.prototype.pageCoords = function (e) {\n var _a, _b, _c, _d;\n return {\n x: (_a = e.pageX) !== null && _a !== void 0 ? _a : (_b = e.touches[0]) === null || _b === void 0 ? void 0 : _b.pageX,\n y: (_c = e.pageY) !== null && _c !== void 0 ? _c : (_d = e.touches[0]) === null || _d === void 0 ? void 0 : _d.pageY,\n };\n };\n return ComponentResizer;\n}(baseComponent_1.MUXComponent));\nexports.ComponentResizer = ComponentResizer;\n//# sourceMappingURL=Component.Resizer.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentRow = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentRow = /** @class */ (function (_super) {\n __extends(ComponentRow, _super);\n function ComponentRow(options) {\n var _this = _super.call(this) || this;\n _this.container = (0, CE_1.ce)('div', 'mux_row');\n if ((options === null || options === void 0 ? void 0 : options.spreadEven) == true)\n _this.container.classList.add('mux_spread');\n if ((options === null || options === void 0 ? void 0 : options.indent) == true)\n _this.container.classList.add('mux_indent');\n if ((options === null || options === void 0 ? void 0 : options.disabled) == true)\n _this.container.classList.add('mux_disabled');\n if ((options === null || options === void 0 ? void 0 : options.tooltip) != undefined)\n _this.container.title = options.tooltip;\n _this.content = (0, CE_1.ce)('div', 'mux_row-content');\n var label = (0, CE_1.ce)('div', ['mux_row-label', 'mux_text'], null, options.label);\n if ((options === null || options === void 0 ? void 0 : options.layout) != undefined && options.layout == 'valueFirst') {\n _this.container.appendChild(_this.content);\n _this.container.appendChild(label);\n }\n else {\n _this.container.appendChild(label);\n _this.container.appendChild(_this.content);\n }\n if (options.content != undefined)\n _this.content.appendChild(options.content);\n return _this;\n }\n ComponentRow.prototype.setEnabled = function (state) {\n if (state)\n this.container.classList.remove('mux_disabled');\n else\n this.container.classList.add('mux_disabled');\n };\n ComponentRow.prototype.setTooltip = function (tooltip) {\n if (tooltip == null)\n this.container.removeAttribute('title');\n else\n this.container.title = tooltip;\n };\n return ComponentRow;\n}(baseComponent_1.MUXComponent));\nexports.ComponentRow = ComponentRow;\n//# sourceMappingURL=Component.Row.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentSelect = void 0;\nvar Index_1 = require(\"../../Index\");\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentSelect = /** @class */ (function (_super) {\n __extends(ComponentSelect, _super);\n function ComponentSelect(options) {\n var _a, _b, _c;\n var _this = _super.call(this) || this;\n _this.show = 'name';\n _this.show = (_a = options.show) !== null && _a !== void 0 ? _a : 'name';\n _this.container = (0, CE_1.ce)('div', 'mux_select');\n var border = (_b = options.border) !== null && _b !== void 0 ? _b : 'hover';\n if (border == 'always')\n _this.container.classList.add('mux_select-alwaysborder');\n else if (border == 'never')\n _this.container.classList.add('mux_select-noborder');\n _this.input = new Index_1.MorphComponent.Input({\n type: 'text',\n border: 'never',\n });\n _this.input.container.onkeydown = function (e) {\n e.preventDefault();\n };\n _this.container.appendChild(_this.input.container);\n _this.content = (0, CE_1.ce)('div', 'mux_select-content');\n _this.container.appendChild(_this.content);\n _this.container.appendChild((0, CE_1.ce)('span', ['material-symbols-outlined', 'mux_select-arrow'], null, 'keyboard_arrow_down'));\n _this.input.container.onfocus = function () {\n _this.input.container.blur();\n _this.toggleContext();\n };\n _this.input.container.onblur = function () {\n _this.context.close('selectblur');\n };\n _this.container.onclick = function () { return _this.toggleContext(); };\n _this.items = (_c = options === null || options === void 0 ? void 0 : options.items) !== null && _c !== void 0 ? _c : [];\n _this.select(options.selectedId, false);\n return _this;\n }\n ComponentSelect.prototype.setItems = function (items) {\n this.items = items;\n };\n ComponentSelect.prototype.select = function (id, dispatchEvent) {\n var _a;\n if (dispatchEvent === void 0) { dispatchEvent = true; }\n var item = this.items.find(function (i) {\n if (i.type == 'separator')\n return false;\n return i.id == id;\n });\n this.selectedId = id;\n this.content.innerHTML = '';\n if (item == null) {\n this.content.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small', 'mux_select-none'], null, 'None selected'));\n return;\n }\n if (item.materialIcon != undefined) {\n var materialIcon = (0, CE_1.ce)('span', 'material-symbols-outlined', null, item.materialIcon);\n if (item.materialIconTransform != undefined)\n materialIcon.style.transform = item.materialIconTransform;\n this.content.appendChild(materialIcon);\n }\n else if (item.icon != undefined) {\n this.content.appendChild((0, CE_1.ce)('img', 'mux_select-content-icon', { src: item.icon }));\n }\n this.content.appendChild((0, CE_1.ce)('div', ['mux_text', 'mux_small'], null, (_a = item.text) !== null && _a !== void 0 ? _a : item.id));\n if (dispatchEvent)\n this.callEvent('input', id);\n };\n ComponentSelect.prototype.setSelected = function (id) {\n this.select(id, false);\n };\n ComponentSelect.prototype.getSelected = function () {\n return this.selectedId;\n };\n ComponentSelect.prototype.toggleContext = function () {\n var _this = this;\n if (this.context != null) {\n return this.context.close('selecttoggle');\n }\n var bounds = this.container.getBoundingClientRect();\n this.context = new Index_1.MorphComponent.ContextMenu({\n x: bounds.x + bounds.width / 2,\n y: bounds.y + bounds.height,\n align: 'center',\n selected: this.selectedId,\n items: this.items.map(function (item) {\n var _a, _b;\n if (item.type == 'separator') {\n return { type: 'separator' };\n }\n return {\n type: (_a = item.type) !== null && _a !== void 0 ? _a : 'normal',\n uniqueIdentifier: item.id,\n text: (_b = item.text) !== null && _b !== void 0 ? _b : item.id,\n materialIcon: item.materialIcon,\n materialIconTransform: item.materialIconTransform,\n icon: item.icon,\n click: function () {\n _this.select(item.id, true);\n },\n };\n }),\n });\n this.container.classList.add('mux_select-open');\n this.context.on('close', function () {\n _this.container.classList.remove('mux_select-open');\n _this.context = null;\n });\n };\n return ComponentSelect;\n}(baseComponent_1.MUXComponent));\nexports.ComponentSelect = ComponentSelect;\n//# sourceMappingURL=Component.Select.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Base = void 0;\nvar ComponentTable_Base = /** @class */ (function () {\n function ComponentTable_Base() {\n }\n ComponentTable_Base.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n if (asNumber === void 0) { asNumber = false; }\n return null;\n };\n return ComponentTable_Base;\n}());\nexports.ComponentTable_Base = ComponentTable_Base;\n//# sourceMappingURL=Component.Table._base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Button = void 0;\nvar Index_1 = require(\"../../Index\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_Button = /** @class */ (function (_super) {\n __extends(ComponentTable_Button, _super);\n function ComponentTable_Button() {\n return _super.call(this) || this;\n }\n ComponentTable_Button.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n if (asNumber === void 0) { asNumber = false; }\n var container = (0, Index_1.ce)('div', ['mux_table-button']);\n var btn = (0, Index_1.ce)('div', [\n 'mux_table-button-btn',\n 'mux_text',\n 'mux_small',\n \"mux_table-button-btn-\".concat(encodeURI(cell.text)),\n ], { title: cell.tooltip }, cell.text);\n btn.onclick = function (e) {\n e.stopPropagation();\n component.callEvent('buttonClick', rowId, column.uniqueIdentifier);\n };\n container.appendChild(btn);\n return container;\n };\n return ComponentTable_Button;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_Button = ComponentTable_Button;\n//# sourceMappingURL=Component.Table.Button.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Text = void 0;\nvar Index_1 = require(\"../../Index\");\nvar TextHighlighter_1 = require(\"../../Utils/TextHighlighter\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_Text = /** @class */ (function (_super) {\n __extends(ComponentTable_Text, _super);\n function ComponentTable_Text(allowHighlighting) {\n var _this = _super.call(this) || this;\n _this.allowHighlighting = allowHighlighting;\n return _this;\n }\n ComponentTable_Text.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n var _a, _b, _c, _d, _e, _f;\n if (asNumber === void 0) { asNumber = false; }\n var wrapper = (0, Index_1.ce)('div', 'mux_table-wrapper');\n var container = (0, Index_1.ce)('div', 'mux_table-text', {\n title: (_a = cell === null || cell === void 0 ? void 0 : cell.tooltip) !== null && _a !== void 0 ? _a : '',\n });\n var text = this.allowHighlighting\n ? (0, TextHighlighter_1.generateTextHighlights)(String(cell.value).trim())\n : (0, Index_1.ce)('div', ['mux_text', 'mux_small'], null, \"\".concat((_b = cell.prefix) !== null && _b !== void 0 ? _b : '', \" \").concat(cell.value).trim());\n text.prepend((0, Index_1.ce)('span', null, null, cell.prefix));\n text.style.justifyContent = {\n left: 'flex-Start',\n right: 'flex-end',\n center: 'center',\n }[(_c = cell.align) !== null && _c !== void 0 ? _c : 'left'];\n var editonly = column.editonly;\n container.appendChild(text);\n if (column.editable) {\n var inputContainer = (0, Index_1.ce)('div', 'mux_table-edit-input');\n var inputPrefix = (0, Index_1.ce)('div', ['mux_text', 'mux_small', 'mux_table-edit-input-prefix'], null, (_d = cell.prefix) !== null && _d !== void 0 ? _d : '');\n var input = new Index_1.MorphComponent.Input({\n type: 'text',\n value: String((_e = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _e !== void 0 ? _e : '').trim(),\n border: 'always',\n });\n if (editonly)\n input.on('input', function () {\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, !asNumber\n ? input.container.value\n : parseFloat(input.container.value));\n });\n input.container.style.textAlign = (_f = cell.align) !== null && _f !== void 0 ? _f : 'left';\n inputContainer.appendChild(inputPrefix);\n inputContainer.appendChild(input.container);\n container.appendChild(inputContainer);\n container.style.cursor = 'pointer';\n var hasFirst = false;\n var clickTimeout;\n container.onclick = function () {\n clearTimeout(clickTimeout);\n if (hasFirst == false) {\n hasFirst = true;\n clickTimeout = setTimeout(function () {\n hasFirst = false;\n }, 1000);\n }\n else {\n openEdit();\n hasFirst = false;\n }\n };\n var openEdit = function () {\n text.style.display = 'none';\n inputContainer.style.display = 'flex';\n input.container.focus();\n input.container.setSelectionRange(input.container.value.length, input.container.value.length);\n var initValue = input.container.value;\n var close = function () {\n if (editonly)\n return;\n window.removeEventListener('click', onclick);\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, !asNumber\n ? input.container.value\n : parseFloat(input.container.value));\n text.innerText = input.container.value;\n text.style.display = 'flex';\n inputContainer.style.display = 'none';\n };\n input.container.onkeydown = function (e) {\n if (editonly)\n return;\n if (e.key == 'Enter')\n close();\n else if (e.key == 'Escape') {\n input.container.value = initValue;\n text.innerText = input.container.value;\n close();\n }\n };\n if (!editonly) {\n var onclick = function (e) {\n if (e.target == undefined ||\n e.target != input.container)\n close();\n };\n setTimeout(function () { return window.addEventListener('click', onclick); }, 100);\n }\n };\n if (editonly)\n openEdit();\n }\n wrapper.appendChild(container);\n if (cell.subText != undefined) {\n wrapper.appendChild((0, Index_1.ce)('div', ['mux_text', 'mux_tiny', 'mux_table-subtext'], null, cell.subText.trim()));\n }\n return wrapper;\n };\n return ComponentTable_Text;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_Text = ComponentTable_Text;\n//# sourceMappingURL=Component.Table.Text.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Duration = void 0;\nvar Component_Table_Text_1 = require(\"./Component.Table.Text\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_Duration = /** @class */ (function (_super) {\n __extends(ComponentTable_Duration, _super);\n function ComponentTable_Duration() {\n var _this = _super.call(this) || this;\n _this._text = new Component_Table_Text_1.ComponentTable_Text(false);\n return _this;\n }\n ComponentTable_Duration.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n if (asNumber === void 0) { asNumber = false; }\n var element = this._text.createElement(cell, rowId, column, component, true);\n var elementText = element.querySelector('.mux_text');\n if (elementText != null)\n elementText.style.justifyContent = 'center';\n element.classList.add('mux_table-duration');\n var input = element.querySelector('input');\n var regex = /^[0-9.]+$/;\n element.addEventListener('input', function () {\n var currentValue = input.value;\n if (!regex.test(currentValue)) {\n input.value = currentValue.slice(0, -1);\n }\n });\n return element;\n };\n return ComponentTable_Duration;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_Duration = ComponentTable_Duration;\n//# sourceMappingURL=Component.Table.Duration.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Icons = void 0;\nvar Index_1 = require(\"../../Index\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_Icons = /** @class */ (function (_super) {\n __extends(ComponentTable_Icons, _super);\n function ComponentTable_Icons() {\n return _super.call(this) || this;\n }\n ComponentTable_Icons.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n var _a;\n if (asNumber === void 0) { asNumber = false; }\n var container = (0, Index_1.ce)('div', ['mux_table-icons']);\n ((_a = cell === null || cell === void 0 ? void 0 : cell.items) !== null && _a !== void 0 ? _a : []).forEach(function (item) {\n var itemElement = (0, Index_1.ce)('div', 'mux_table-icon');\n itemElement.appendChild((0, Index_1.ce)('span', 'material-symbols-outlined', null, item.materialIcon));\n if (item.color != undefined)\n itemElement.style.color = item.color;\n itemElement.onclick = function (e) {\n e.stopPropagation();\n item.click();\n };\n container.appendChild(itemElement);\n });\n return container;\n };\n return ComponentTable_Icons;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_Icons = ComponentTable_Icons;\n//# sourceMappingURL=Component.Table.Icons.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_MaterialSymbol = void 0;\nvar Index_1 = require(\"../../Index\");\nvar TextHighlighter_1 = require(\"../../Utils/TextHighlighter\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_MaterialSymbol = /** @class */ (function (_super) {\n __extends(ComponentTable_MaterialSymbol, _super);\n function ComponentTable_MaterialSymbol() {\n return _super.call(this) || this;\n }\n ComponentTable_MaterialSymbol.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n var _a, _b, _c, _d;\n if (asNumber === void 0) { asNumber = false; }\n var wrapper = (0, Index_1.ce)('div', 'mux_table-wrapper');\n var container = (0, Index_1.ce)('div', 'mux_table-text', {\n title: (_a = cell === null || cell === void 0 ? void 0 : cell.tooltip) !== null && _a !== void 0 ? _a : '',\n });\n var text = this.allowHighlighting\n ? (0, TextHighlighter_1.generateTextHighlights)(String(cell.materialIcon).trim())\n : (0, Index_1.ce)('span', ['material-symbols-outlined', 'g_text'], null, cell.materialIcon);\n text.style.justifyContent = {\n left: 'flex-Start',\n right: 'flex-end',\n center: 'center',\n }[(_b = cell.align) !== null && _b !== void 0 ? _b : 'left'];\n container.appendChild(text);\n if (column.editable) {\n var inputContainer = (0, Index_1.ce)('div', 'mux_table-edit-input');\n var input = (0, Index_1.ce)('input', null, {\n type: 'text',\n value: String((_c = cell === null || cell === void 0 ? void 0 : cell.materialIcon) !== null && _c !== void 0 ? _c : '').trim(),\n });\n input.style.textAlign = (_d = cell.align) !== null && _d !== void 0 ? _d : 'left';\n inputContainer.appendChild(input);\n container.appendChild(inputContainer);\n container.style.cursor = 'pointer';\n var hasFirst = false;\n var clickTimeout;\n container.onclick = function () {\n clearTimeout(clickTimeout);\n if (hasFirst == false) {\n hasFirst = true;\n clickTimeout = setTimeout(function () {\n hasFirst = false;\n }, 1000);\n }\n else {\n openEdit();\n hasFirst = false;\n }\n };\n var openEdit = function () {\n text.style.display = 'none';\n inputContainer.style.display = 'flex';\n input.focus();\n input.setSelectionRange(input.value.length, input.value.length);\n var initValue = input.value;\n var close = function () {\n window.removeEventListener('click', onclick);\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, !asNumber ? input.value : parseFloat(input.value));\n text.innerText = input.value;\n text.style.display = 'flex';\n inputContainer.style.display = 'none';\n };\n input.onkeydown = function (e) {\n if (e.key == 'Enter')\n close();\n else if (e.key == 'Escape') {\n input.value = initValue;\n text.innerText = input.value;\n close();\n }\n };\n var onclick = function (e) {\n if (e.target == undefined || e.target != input)\n close();\n };\n setTimeout(function () { return window.addEventListener('click', onclick); }, 100);\n };\n }\n wrapper.appendChild(container);\n // if (cell.materialIcon != undefined) {\n // \twrapper.appendChild(\n // \t\tce(\n // \t\t\t'div',\n // \t\t\t['mux_text', 'mux_tiny', 'mux_table-subtext'],\n // \t\t\tnull,\n // \t\t\tcell.subMaterialSymbol.trim()\n // \t\t)\n // \t);\n // }\n return wrapper;\n };\n return ComponentTable_MaterialSymbol;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_MaterialSymbol = ComponentTable_MaterialSymbol;\n//# sourceMappingURL=Component.Table.MaterialSymbol.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Number = void 0;\nvar Component_Table_Text_1 = require(\"./Component.Table.Text\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_Number = /** @class */ (function (_super) {\n __extends(ComponentTable_Number, _super);\n function ComponentTable_Number() {\n var _this = _super.call(this) || this;\n _this._text = new Component_Table_Text_1.ComponentTable_Text(false);\n return _this;\n }\n ComponentTable_Number.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n if (asNumber === void 0) { asNumber = false; }\n var element = this._text.createElement(cell, rowId, column, component);\n element.classList.add('mux_table-number');\n var input = element.querySelector('input');\n var regex = /^[0-9.]+$/;\n element.addEventListener('input', function () {\n var currentValue = input.value;\n if (!regex.test(currentValue)) {\n input.value = currentValue.slice(0, -1);\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, input.value);\n }\n });\n return element;\n };\n return ComponentTable_Number;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_Number = ComponentTable_Number;\n//# sourceMappingURL=Component.Table.Number.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_Select = void 0;\nvar Index_1 = require(\"../../Index\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_Select = /** @class */ (function (_super) {\n __extends(ComponentTable_Select, _super);\n function ComponentTable_Select() {\n return _super.call(this) || this;\n }\n ComponentTable_Select.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n if (asNumber === void 0) { asNumber = false; }\n var container = (0, Index_1.ce)('div', 'mux_table-select', { title: cell.tooltip });\n var options = {};\n for (var i = 0; i < column.options.length; i++)\n options[column.options[i].uniqueIdentifier] = column.options[i];\n var setSelected = function (uniqueIdentifier) {\n var _a, _b, _c, _d, _e, _f;\n var selected = (options === null || options === void 0 ? void 0 : options[uniqueIdentifier]) != undefined\n ? uniqueIdentifier\n : column.options[0].uniqueIdentifier;\n var selectedTransform = (_a = options === null || options === void 0 ? void 0 : options[selected].materialIconTransform) !== null && _a !== void 0 ? _a : 'unset';\n var option = options === null || options === void 0 ? void 0 : options[selected];\n textSpan.innerText = (_b = option === null || option === void 0 ? void 0 : option.text) !== null && _b !== void 0 ? _b : '';\n iconSpan.innerText = (_d = (_c = options === null || options === void 0 ? void 0 : options[selected]) === null || _c === void 0 ? void 0 : _c.materialIcon) !== null && _d !== void 0 ? _d : '';\n iconSpan.style.transform = selectedTransform !== null && selectedTransform !== void 0 ? selectedTransform : '';\n container.title = \"\".concat((_f = (_e = options === null || options === void 0 ? void 0 : options[selected]) === null || _e === void 0 ? void 0 : _e.text) !== null && _f !== void 0 ? _f : '', \" | Click to change\");\n };\n var iconSpan = (0, Index_1.ce)('span', 'material-symbols-outlined', null);\n var textSpan = (0, Index_1.ce)('span', ['mux_text', 'mux_small'], null);\n var arrow = (0, Index_1.ce)('span', ['mux_table-select-arrow', 'material-symbols-outlined'], null, 'keyboard_arrow_down');\n container.append(iconSpan, textSpan);\n container.appendChild(arrow);\n setSelected(cell.value);\n container.onclick = function () {\n var bounds = container.getBoundingClientRect();\n var items = column.options.map(function (item) {\n return __assign({ click: function () {\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, item.uniqueIdentifier);\n setSelected(item.uniqueIdentifier);\n } }, item);\n });\n var context = new Index_1.MorphComponent.ContextMenu({\n x: bounds.x + bounds.width / 2,\n y: bounds.y + bounds.height,\n items: items,\n });\n };\n return container;\n };\n return ComponentTable_Select;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_Select = ComponentTable_Select;\n//# sourceMappingURL=Component.Table.Select.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable_TextSuggestions = void 0;\nvar Index_1 = require(\"../../Index\");\nvar Component_ContextMenu_1 = require(\"../ContextMenu/Component.ContextMenu\");\nvar Component_Table__base_1 = require(\"./Component.Table._base\");\nvar ComponentTable_TextSuggestions = /** @class */ (function (_super) {\n __extends(ComponentTable_TextSuggestions, _super);\n function ComponentTable_TextSuggestions() {\n return _super.call(this) || this;\n }\n ComponentTable_TextSuggestions.prototype.createElement = function (cell, rowId, column, component, asNumber) {\n var _a, _b, _c, _d;\n if (asNumber === void 0) { asNumber = false; }\n var wrapper = (0, Index_1.ce)('div', 'mux_table-wrapper');\n var container = (0, Index_1.ce)('div', 'mux_table-textsuggestions');\n var optionTitles = {};\n var optionIds = column.options.map(function (option) {\n optionTitles[option.uniqueIdentifier] = option.text;\n return option.uniqueIdentifier;\n });\n var input = new Index_1.MorphComponent.Input({\n type: 'text',\n value: (_b = optionTitles[String((_a = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _a !== void 0 ? _a : '').trim()]) !== null && _b !== void 0 ? _b : String((_c = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _c !== void 0 ? _c : '').trim(),\n border: 'always',\n });\n input.container.setAttribute('valueId', String((_d = cell === null || cell === void 0 ? void 0 : cell.value) !== null && _d !== void 0 ? _d : '').trim());\n var arrow = (0, Index_1.ce)('span', 'material-symbols-outlined', null, 'arrow_drop_down');\n arrow.onclick = function () {\n input.container.focus();\n showContext();\n };\n input.container.addEventListener('focus', function () {\n var _a;\n input.setValue((_a = input.container.getAttribute('valueId')) !== null && _a !== void 0 ? _a : '');\n });\n input.on('blur', function () {\n var optionTitle = optionTitles[input.container.getAttribute('valueId')];\n if (optionTitle == null) {\n if (input.getValue().length > 0)\n component.callEvent('textSuggestionFailed', rowId, column.uniqueIdentifier);\n input.setValue('');\n input.container.removeAttribute('valueId');\n }\n else {\n input.setValue(optionTitle);\n }\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, input.container.getAttribute('valueId'));\n setTimeout(function () {\n context === null || context === void 0 ? void 0 : context.destroy();\n }, 250);\n });\n input.container.addEventListener('keydown', function (e) {\n if (e.key != ' ' || !e.ctrlKey)\n return;\n e.preventDefault();\n showContext();\n });\n input.on('input', function () { return showContext(); });\n var context;\n var showContextTimeout;\n function showContext() {\n return __awaiter(this, arguments, void 0, function (instant) {\n if (instant === void 0) { instant = false; }\n return __generator(this, function (_a) {\n context === null || context === void 0 ? void 0 : context.close('blur');\n if (optionIds.includes(input.getValue())) {\n input.container.setAttribute('valueId', input.getValue());\n return [2 /*return*/];\n }\n input.container.removeAttribute('valueId');\n clearTimeout(showContextTimeout);\n showContextTimeout = setTimeout(function () {\n var _a;\n var firstId;\n var value = ((_a = input.getValue()) !== null && _a !== void 0 ? _a : '').toLowerCase();\n var options = value.length == 0\n ? []\n : column.options\n .map(function (option) {\n var _a, _b;\n var text = ((_a = option === null || option === void 0 ? void 0 : option.text) !== null && _a !== void 0 ? _a : '').toLowerCase();\n var id = ((_b = option === null || option === void 0 ? void 0 : option.uniqueIdentifier) !== null && _b !== void 0 ? _b : '').toLowerCase();\n return { text: text, id: id, option: option };\n })\n .filter(function (_a) {\n var text = _a.text, id = _a.id, option = _a.option;\n return (text.includes(value) ||\n id.includes(value));\n })\n .map(function (_a) {\n var text = _a.text, id = _a.id, option = _a.option;\n var score = 1;\n if (text.startsWith(value) ||\n id.startsWith(value))\n score += 1;\n if (text.includes(value) ||\n id.includes(value))\n score += 1;\n if (text == value || id == value)\n score += 1;\n return { score: score, option: option };\n })\n .sort(function (a, b) { return b.score - a.score; })\n .map(function (_a, index) {\n var score = _a.score, option = _a.option;\n if (index == 0)\n firstId = option.uniqueIdentifier;\n return __assign(__assign({}, option), { click: function () {\n input.setValue(option.text);\n input.container.setAttribute('valueId', option.uniqueIdentifier);\n component.callEvent('valueUpdated', rowId, column.uniqueIdentifier, input.getValue());\n component.callEvent('textSuggestionCompleted');\n } });\n });\n if (options.length == 0)\n return;\n var bounds = input.container.getBoundingClientRect();\n context = new Component_ContextMenu_1.ComponentContextMenu({\n items: options,\n selected: firstId,\n x: bounds.x + bounds.width / 2,\n y: bounds.y + bounds.height,\n });\n }, instant ? 0 : 200);\n return [2 /*return*/];\n });\n });\n }\n container.appendChild(input.container);\n container.appendChild(arrow);\n wrapper.appendChild(container);\n return wrapper;\n };\n return ComponentTable_TextSuggestions;\n}(Component_Table__base_1.ComponentTable_Base));\nexports.ComponentTable_TextSuggestions = ComponentTable_TextSuggestions;\n//# sourceMappingURL=Component.Table.TextSuggestions.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentTable = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar Component_Table_Button_1 = require(\"./Component.Table.Button\");\nvar Component_Table_Duration_1 = require(\"./Component.Table.Duration\");\nvar Component_Table_Icons_1 = require(\"./Component.Table.Icons\");\nvar Component_Table_MaterialSymbol_1 = require(\"./Component.Table.MaterialSymbol\");\nvar Component_Table_Number_1 = require(\"./Component.Table.Number\");\nvar Component_Table_Select_1 = require(\"./Component.Table.Select\");\nvar Component_Table_Text_1 = require(\"./Component.Table.Text\");\nvar Component_Table_TextSuggestions_1 = require(\"./Component.Table.TextSuggestions\");\nvar Sortable = require(\"sortablejs\");\nvar ComponentTable = /** @class */ (function (_super) {\n __extends(ComponentTable, _super);\n function ComponentTable(options) {\n var _a, _b;\n var _this_1 = _super.call(this) || this;\n _this_1.columns = [];\n _this_1.rows = [];\n _this_1.hiddenRows = [];\n _this_1.columnMap = {};\n _this_1.highlight = function (uniqueIdentifier, style, scrollIntoView, deselectOther) {\n var _a, _b, _c;\n if (scrollIntoView === void 0) { scrollIntoView = false; }\n if (deselectOther === void 0) { deselectOther = true; }\n var rows = _this_1.table.querySelectorAll('tr');\n var styles = typeof style == 'string' ? [style] : style;\n for (var i = 0; i < rows.length; i++) {\n if (uniqueIdentifier != null &&\n rows[i].getAttribute('uid') == uniqueIdentifier) {\n (_a = rows[i].classList).remove.apply(_a, ['selected', 'active', 'outline'].map(function (st) {\n return \"mux_table-row-\".concat(st);\n }));\n if (style != 'none') {\n (_b = rows[i].classList).add.apply(_b, styles.map(function (st) {\n return \"mux_table-row-\".concat(st);\n }));\n if (scrollIntoView)\n rows[i].scrollIntoView({\n block: 'center',\n behavior: 'smooth',\n });\n }\n }\n else if (deselectOther)\n (_c = rows[i].classList).remove.apply(_c, ['selected', 'active', 'outline'].map(function (st) {\n return \"mux_table-row-\".concat(st);\n }));\n }\n };\n _this_1.container = (0, CE_1.ce)('div', 'mux_table');\n _this_1.columns = (_a = options === null || options === void 0 ? void 0 : options.columns) !== null && _a !== void 0 ? _a : [];\n _this_1.table = (0, CE_1.ce)('table');\n var headerRow = (0, CE_1.ce)('tr');\n _this_1.columns.forEach(function (column) {\n var cell = (0, CE_1.ce)('th', null, { uid: column.uniqueIdentifier });\n _this_1.columnMap[column.uniqueIdentifier] = column;\n if (column.width != undefined)\n cell.style.width = column.width;\n if (column.noLeftBorder == true)\n cell.classList.add('mux_table-noborder');\n if (column.title != undefined) {\n var title = (0, CE_1.ce)('div', ['mux_table-text', 'mux_header', 'mux_small'], null, column.title);\n cell.appendChild(title);\n if (column.headerAlign != undefined)\n title.style.textAlign = column.headerAlign;\n }\n headerRow.appendChild(cell);\n });\n _this_1.table.appendChild(headerRow);\n _this_1.container.appendChild(_this_1.table);\n var _this = _this_1;\n var sortable = new Sortable(_this_1.table, {\n filter: ((_b = options === null || options === void 0 ? void 0 : options.dragableIgnore) !== null && _b !== void 0 ? _b : []).join(', '),\n preventOnFilter: false,\n handle: options === null || options === void 0 ? void 0 : options.dragableHandle,\n ghostClass: 'mux_table-row-dragging',\n onStart: function () {\n _this.table.classList.add('mux_table-dragging');\n _this.callEvent('dragStart');\n },\n onEnd: function (evt) {\n _this.callEvent('dragEnd');\n _this.table.classList.remove('mux_table-dragging');\n _this.callEvent('orderUpdated', _this.getOrder());\n _this.updateRowBackgrounds();\n },\n });\n if (options.dragable != true) {\n sortable.option('disabled', true);\n }\n if (options.rows != undefined) {\n options.rows.forEach(function (row) { return _this_1.addRow(row, true); });\n _this_1.updateRowBackgrounds();\n }\n return _this_1;\n }\n ComponentTable.prototype.getOrder = function () {\n var order = [];\n var rows = this.table.querySelectorAll('tr');\n for (var i = 1; i < rows.length; i++)\n order.push(rows[i].getAttribute('uid'));\n return order;\n };\n ComponentTable.prototype.clear = function () {\n this.rows = [];\n var rows = this.table.querySelectorAll('tr');\n if (rows.length > 1)\n for (var i = 1; i < rows.length; i++)\n rows[i].parentElement.removeChild(rows[i]);\n };\n ComponentTable.prototype.addRows = function (rows) {\n var _this_1 = this;\n rows.forEach(function (row) { return _this_1.addRow(row, true); });\n this.updateRowBackgrounds();\n };\n ComponentTable.prototype.addRow = function (row, silent) {\n if (silent === void 0) { silent = false; }\n return this._createRow(row, null, silent);\n };\n ComponentTable.prototype.insertRow = function (index, row, silent) {\n if (silent === void 0) { silent = false; }\n if (index < 0 || index > this.rows.length)\n return;\n return this._createRow(row, index + 1, silent);\n };\n ComponentTable.prototype._createRow = function (row, insertIndex, silent) {\n var _this_1 = this;\n this.rows.push(row.uniqueIdentifier);\n var rowElement = (0, CE_1.ce)('tr', 'mux_table-row', {\n uid: row.uniqueIdentifier,\n });\n if (!this.hiddenRows.includes(row.uniqueIdentifier))\n rowElement.classList.add('mux_table-row-visible');\n rowElement.onclick = function (e) {\n _this_1.callEvent('click', row.uniqueIdentifier, e);\n };\n if (row.child)\n rowElement.classList.add('mux_table-row-child');\n if (row.highlight != undefined)\n rowElement.classList.add(\"mux_table-row-\".concat(row.highlight));\n this.columns.forEach(function (columnSettings) {\n var cellElement = (0, CE_1.ce)('td', null, {\n uid: columnSettings.uniqueIdentifier,\n });\n if (columnSettings.width != undefined)\n cellElement.style.width = columnSettings.width;\n var handler = columnTypes[columnSettings.type];\n var cell = row.cells[columnSettings.uniqueIdentifier];\n if (cell == undefined)\n return;\n cellElement.appendChild(handler.createElement(cell, row.uniqueIdentifier, columnSettings, _this_1));\n rowElement.appendChild(cellElement);\n });\n if (insertIndex != null) {\n var rows = this.table.querySelectorAll('tr');\n if (insertIndex >= rows.length)\n this.table.appendChild(rowElement);\n else\n this.table.insertBefore(rowElement, rows[insertIndex]);\n }\n else\n this.table.appendChild(rowElement);\n if (!silent)\n this.updateRowBackgrounds();\n };\n ComponentTable.prototype.updateCell = function (rowId, columnId, value) {\n var row = this.table.querySelector(\"tr[uid=\\\"\".concat(rowId, \"\\\"]\"));\n if (row == null)\n return;\n var cell = row.querySelector(\"td[uid=\\\"\".concat(columnId, \"\\\"\"));\n if (cell == null)\n return;\n var columnSettings = this.columnMap[columnId];\n var handler = columnTypes[columnSettings.type];\n cell.innerHTML = '';\n cell.appendChild(handler.createElement(value, rowId, columnSettings, this));\n };\n ComponentTable.prototype.setDragable = function (dragable) {\n this.Sortable.option('disabled', !dragable);\n };\n ComponentTable.prototype.updateRowBackgrounds = function () {\n var rows = this.table.querySelectorAll('.mux_table-row-visible');\n var counter = 0;\n var insideChild = false;\n for (var i = 0; i < rows.length; i++) {\n var isChild = rows[i].classList.contains('mux_table-row-child');\n if (insideChild != isChild) {\n insideChild = isChild;\n counter = 0;\n }\n var odd = (counter + 1) % 2 == 0;\n counter++;\n if (odd)\n rows[i].classList.add('mux_table-row-odd');\n else\n rows[i].classList.remove('mux_table-row-odd');\n }\n };\n ComponentTable.extendTypes = function (type, handler) {\n columnTypes[type] = handler;\n };\n return ComponentTable;\n}(baseComponent_1.MUXComponent));\nexports.ComponentTable = ComponentTable;\nvar columnTypes = {\n text: new Component_Table_Text_1.ComponentTable_Text(true),\n textsuggestions: new Component_Table_TextSuggestions_1.ComponentTable_TextSuggestions(),\n number: new Component_Table_Number_1.ComponentTable_Number(),\n button: new Component_Table_Button_1.ComponentTable_Button(),\n duration: new Component_Table_Duration_1.ComponentTable_Duration(),\n icons: new Component_Table_Icons_1.ComponentTable_Icons(),\n select: new Component_Table_Select_1.ComponentTable_Select(),\n materialSymbol: new Component_Table_MaterialSymbol_1.ComponentTable_MaterialSymbol(),\n};\n//# sourceMappingURL=Component.Table.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ComponentText = void 0;\nvar CE_1 = require(\"../../Utils/CE\");\nvar baseComponent_1 = require(\"../baseComponent\");\nvar ComponentText = /** @class */ (function (_super) {\n __extends(ComponentText, _super);\n function ComponentText(options) {\n var _a;\n var _this = _super.call(this) || this;\n var size = (_a = options === null || options === void 0 ? void 0 : options.size) !== null && _a !== void 0 ? _a : 'normal';\n _this.container = (0, CE_1.ce)('div', ['mux_text', \"mux_\".concat(size)], null, options === null || options === void 0 ? void 0 : options.content);\n return _this;\n }\n ComponentText.prototype.update = function (content) {\n this.container.innerHTML = content;\n };\n return ComponentText;\n}(baseComponent_1.MUXComponent));\nexports.ComponentText = ComponentText;\n//# sourceMappingURL=Component.Text.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MorphComponent = void 0;\nvar Component_Button_1 = require(\"./Components/Button/Component.Button\");\nvar Component_Cards_1 = require(\"./Components/Cards/Component.Cards\");\nvar Component_ContextMenu_1 = require(\"./Components/ContextMenu/Component.ContextMenu\");\nvar Component_Dialog_1 = require(\"./Components/Dialog/Component.Dialog\");\nvar Component_Group_1 = require(\"./Components/Group/Component.Group\");\nvar Component_Header_1 = require(\"./Components/Header/Component.Header\");\nvar Component_IconGrid_1 = require(\"./Components/IconGrid/Component.IconGrid\");\nvar Component_ImageViewer_1 = require(\"./Components/ImageViewer/Component.ImageViewer\");\nvar Component_Input_1 = require(\"./Components/Input/Component.Input\");\nvar Component_List_1 = require(\"./Components/List/Component.List\");\nvar Component_MenuBar_1 = require(\"./Components/MenuBar/Component.MenuBar\");\nvar Component_PaletteCheckbox_1 = require(\"./Components/PaletteCheckbox/Component.PaletteCheckbox\");\nvar Component_PaletteSearch_1 = require(\"./Components/PaletteSearch/Component.PaletteSearch\");\nvar Component_Resizer_1 = require(\"./Components/Resizer/Component.Resizer\");\nvar Component_Row_1 = require(\"./Components/Row/Component.Row\");\nvar Component_Select_1 = require(\"./Components/Select/Component.Select\");\nvar Component_Table_1 = require(\"./Components/Table/Component.Table\");\nvar Component_Text_1 = require(\"./Components/Text/Component.Text\");\nexports.MorphComponent = {\n Header: Component_Header_1.ComponentHeader,\n Text: Component_Text_1.ComponentText,\n Button: Component_Button_1.ComponentButton,\n Input: Component_Input_1.ComponentInput,\n Select: Component_Select_1.ComponentSelect,\n Group: Component_Group_1.ComponentGroup,\n List: Component_List_1.ComponentList,\n Cards: Component_Cards_1.ComponentCards,\n IconGrid: Component_IconGrid_1.ComponentIconGrid,\n Table: Component_Table_1.ComponentTable,\n Row: Component_Row_1.ComponentRow,\n Dialog: Component_Dialog_1.ComponentDialog,\n PaletteSearch: Component_PaletteSearch_1.ComponentPaletteSearch,\n PaletteCheckbox: Component_PaletteCheckbox_1.ComponentPaletteCheckbox,\n ImageViewer: Component_ImageViewer_1.ComponentImageViewer,\n MenuBar: Component_MenuBar_1.ComponentMenuBar,\n ContextMenu: Component_ContextMenu_1.ComponentContextMenu,\n Resizer: Component_Resizer_1.ComponentResizer,\n extend: function (name, component) {\n this[name] = component;\n },\n};\n//# sourceMappingURL=Morph.Components.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FeatureAlert = void 0;\nvar Index_1 = require(\"../../Index\");\nfunction FeatureAlert(options, callback) {\n return new Promise(function (resolve) {\n var _a;\n var dialog = new Index_1.MorphComponent.Dialog({\n title: (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : 'Alert',\n width: 'small',\n height: 'auto',\n cancelButtonVisible: false,\n });\n dialog.content.appendChild((0, Index_1.ce)('div', 'mux_text', null, options.message));\n var res = function () {\n if (typeof callback == 'function')\n callback();\n resolve();\n };\n dialog.on('close', function () { return res(); });\n dialog.on('ok', function () { return res(); });\n });\n}\nexports.FeatureAlert = FeatureAlert;\n//# sourceMappingURL=Feature.Alert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FeatureConfirm = void 0;\nvar Index_1 = require(\"../../Index\");\nfunction FeatureConfirm(options, callback) {\n return new Promise(function (resolve) {\n var _a;\n var dialog = new Index_1.MorphComponent.Dialog({\n title: (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : 'Confirm',\n width: 'small',\n height: 'auto',\n });\n dialog.content.appendChild((0, Index_1.ce)('div', 'mux_text', null, options.message));\n var res = function (state) {\n if (typeof callback == 'function')\n callback(state);\n resolve(state);\n };\n dialog.on('close', function () { return res(null); });\n dialog.on('cancel', function () { return res(false); });\n dialog.on('ok', function () { return res(true); });\n });\n}\nexports.FeatureConfirm = FeatureConfirm;\n//# sourceMappingURL=Feature.Confirm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FeatureLoader = void 0;\nvar Index_1 = require(\"../../Index\");\nfunction FeatureLoader(options) {\n var _a, _b;\n var active = (_a = options === null || options === void 0 ? void 0 : options.active) !== null && _a !== void 0 ? _a : false;\n var message = (_b = options === null || options === void 0 ? void 0 : options.message) !== null && _b !== void 0 ? _b : '';\n var progress = options === null || options === void 0 ? void 0 : options.progress;\n if (active == true)\n showLoader(message, progress);\n else\n removeExisting();\n}\nexports.FeatureLoader = FeatureLoader;\nfunction showLoader(message, progress) {\n var loader = document.querySelector('.mux_loader');\n if (loader == null) {\n loader = (0, Index_1.ce)('div', 'mux_loader');\n loader.appendChild((0, Index_1.ce)('span', 'material-symbols-outlined', null, 'circle'));\n document.body.appendChild(loader);\n }\n var existingProgress = loader.querySelector('.mux_loader-progress');\n if (progress == null) {\n if (existingProgress != null)\n existingProgress.remove();\n }\n else {\n if (existingProgress != null) {\n existingProgress.style.setProperty('--progress', \"\".concat(progress, \"%\"));\n existingProgress.querySelector('.mux_loader-progress-label').innerText = \"\".concat(Math.round(progress), \"%\");\n }\n else {\n var progressBar = (0, Index_1.ce)('div', 'mux_loader-progress');\n progressBar.style.setProperty('--progress', \"\".concat(progress, \"%\"));\n var value = (0, Index_1.ce)('div', 'mux_loader-progress-value');\n value.appendChild((0, Index_1.ce)('div', 'mux_loader-progress-label', null, \"\".concat(Math.round(progress), \"%\")));\n progressBar.appendChild(value);\n loader.appendChild(progressBar);\n }\n }\n var existingText = loader.querySelector('.mux_loader-message');\n if (message.trim().length == 0) {\n if (existingText != null)\n existingText.remove();\n }\n else {\n if (existingText != null)\n existingText.innerText = message;\n else {\n if (loader.querySelector('.mux_loader-progress') != null)\n loader.insertBefore((0, Index_1.ce)('div', ['mux_text', 'mux_loader-message'], null, message), loader.querySelector('.mux_loader-progress'));\n else\n loader.appendChild((0, Index_1.ce)('div', ['mux_text', 'mux_loader-message'], null, message));\n }\n }\n}\nfunction removeExisting() {\n var existing = document.querySelector('.mux_loader');\n if (existing != null)\n existing.remove();\n}\n//# sourceMappingURL=Feature.Loader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FeatureNotification = void 0;\nvar Index_1 = require(\"../../Index\");\nvar NotificationHandler = new (/** @class */ (function () {\n function class_1() {\n var _this = this;\n window.addEventListener('DOMContentLoaded', function () { return _this.prepare(); });\n }\n class_1.prototype.prepare = function () {\n this.container = (0, Index_1.ce)('div', 'mux_notifications');\n document.body.appendChild(this.container);\n };\n class_1.prototype.append = function (notification) {\n var _a, _b, _c;\n var element = (0, Index_1.ce)('div', 'mux_notification');\n element.classList.add('mux_notification-' + notification.level);\n var icon = (0, Index_1.ce)('span', ['material-symbols-outlined', 'mux_notification-icon'], null, {\n info: 'exclamation',\n warning: 'exclamation',\n error: 'close',\n success: 'check',\n }[(_a = notification.level) !== null && _a !== void 0 ? _a : 'info']);\n if (notification.level == 'info')\n icon.style.transform = 'rotate(180deg)';\n element.appendChild(icon);\n element.appendChild((0, Index_1.ce)('div', 'mux_text', null, notification.message));\n if ((notification === null || notification === void 0 ? void 0 : notification.action) != null) {\n var action = (0, Index_1.ce)('span', ['material-symbols-outlined', 'mux_notification-action'], null, notification.action.materialIcon);\n action.onclick = function () {\n notification.action.click();\n clearTimeout(hideTimeout);\n closeNotification();\n };\n element.appendChild(action);\n }\n if ((_b = notification === null || notification === void 0 ? void 0 : notification.closeable) !== null && _b !== void 0 ? _b : true) {\n element.onclick = function () {\n closeNotification();\n };\n }\n this.container.prepend(element);\n var openNotification = function () {\n element.style.opacity = '1';\n element.style.transform = 'translateX(0px)';\n };\n var closeNotification = function () {\n clearTimeout(hideTimeout);\n element.style.marginTop = \"-\".concat(element.clientHeight + 6, \"px\");\n element.style.opacity = '0';\n element.style.transform = 'translateX(100%)';\n element.style.pointerEvents = 'none';\n element.ontransitionend = function () { return element.remove(); };\n };\n setTimeout(function () { return openNotification(); }, 100);\n var hideTimeout = setTimeout(function () { return closeNotification(); }, ((_c = notification === null || notification === void 0 ? void 0 : notification.seconds) !== null && _c !== void 0 ? _c : 10) * 1000);\n return new NotificationInstance(closeNotification);\n };\n return class_1;\n}()))();\nvar NotificationInstance = /** @class */ (function () {\n function NotificationInstance(close) {\n this._close = close;\n }\n NotificationInstance.prototype.close = function () {\n this._close();\n };\n return NotificationInstance;\n}());\nfunction FeatureNotification(notification) {\n var _a;\n if (((_a = notification === null || notification === void 0 ? void 0 : notification.message) !== null && _a !== void 0 ? _a : '').trim().length == 0)\n return;\n return NotificationHandler.append(notification);\n}\nexports.FeatureNotification = FeatureNotification;\n//# sourceMappingURL=Feature.Notification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FeaturePrompt = void 0;\nvar Index_1 = require(\"../../Index\");\nfunction FeaturePrompt(options, callback) {\n return new Promise(function (resolve) {\n var _a, _b, _c, _d;\n var dialog = new Index_1.MorphComponent.Dialog({\n title: (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : 'Prompt',\n width: 'small',\n height: 'auto',\n });\n dialog.content.appendChild((0, Index_1.ce)('div', 'mux_text', null, options.message));\n var input = new Index_1.MorphComponent.Input({\n type: (_b = options.type) !== null && _b !== void 0 ? _b : 'text',\n value: (_c = options.default) !== null && _c !== void 0 ? _c : '',\n placeholder: (_d = options.placeholder) !== null && _d !== void 0 ? _d : '',\n border: 'always',\n });\n input.container.style.margin = 'var(--mux-edge-offset-tiny) 0px';\n input.container.onfocus = function () {\n errorMessage.style.height = '0px';\n };\n dialog.content.appendChild(input.container);\n var errorMessage = (0, Index_1.ce)('div', ['mux_text', 'mux_small'], null, 'Value can not be empty!');\n errorMessage.style.height = '0px';\n errorMessage.style.transitionDuration =\n 'var(--mux-transition-animation)';\n errorMessage.style.overflow = 'hidden';\n errorMessage.style.color = 'var(--mux-color-red)';\n dialog.content.appendChild(errorMessage);\n var res = function (value) {\n if (typeof callback == 'function')\n callback(value);\n resolve(value);\n };\n dialog.on('close', function () { return res(null); });\n dialog.on('cancel', function () { return res(null); });\n dialog.on('ok', function (closeEvent) {\n if (!options.canBeEmpty && input.getValue().trim() == '') {\n errorMessage.style.height = '14px';\n return closeEvent.preventClose();\n }\n res(input.getValue());\n });\n input.container.focus();\n });\n}\nexports.FeaturePrompt = FeaturePrompt;\n//# sourceMappingURL=Feature.Prompt.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MorphFeature = void 0;\nvar Feature_Alert_1 = require(\"./Features/Alert/Feature.Alert\");\nvar Feature_Confirm_1 = require(\"./Features/Confirm/Feature.Confirm\");\nvar Feature_Loader_1 = require(\"./Features/Loader/Feature.Loader\");\nvar Feature_Notification_1 = require(\"./Features/Notification/Feature.Notification\");\nvar Feature_Prompt_1 = require(\"./Features/Prompt/Feature.Prompt\");\nexports.MorphFeature = {\n Confirm: Feature_Confirm_1.FeatureConfirm,\n Alert: Feature_Alert_1.FeatureAlert,\n Prompt: Feature_Prompt_1.FeaturePrompt,\n Notification: Feature_Notification_1.FeatureNotification,\n Loader: Feature_Loader_1.FeatureLoader,\n extend: function (name, component) {\n this[name] = component;\n },\n};\n//# sourceMappingURL=Morph.Features.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(object) {\n if (typeof object !== 'object')\n return object;\n return JSON.parse(JSON.stringify(object !== null && object !== void 0 ? object : {}));\n}\nexports.clone = clone;\n//# sourceMappingURL=clone.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ce = exports.clone = void 0;\nvar clone_1 = require(\"./Utils/clone\");\nObject.defineProperty(exports, \"clone\", { enumerable: true, get: function () { return clone_1.clone; } });\nvar CE_1 = require(\"./Utils/CE\");\nObject.defineProperty(exports, \"ce\", { enumerable: true, get: function () { return CE_1.ce; } });\n//# sourceMappingURL=Morph.Utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MUXComponent = void 0;\nvar version = require('../package.json').version;\nif (window._MorphUXInitialized === undefined) {\n console.log('MorphUX Loaded');\n console.log(\"Version \".concat(version));\n window._MorphUXInitialized = true;\n}\n__exportStar(require(\"./Morph.Components\"), exports);\n__exportStar(require(\"./Morph.Features\"), exports);\n__exportStar(require(\"./Morph.Keys\"), exports);\n__exportStar(require(\"./Morph.Utils\"), exports);\nvar baseComponent_1 = require(\"./Components/baseComponent\");\nObject.defineProperty(exports, \"MUXComponent\", { enumerable: true, get: function () { return baseComponent_1.MUXComponent; } });\n//# sourceMappingURL=Index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checklist = void 0;\nvar morphux_1 = require(\"morphux\");\nvar Checklist = /** @class */ (function () {\n function Checklist(Main) {\n this.Rows = {\n CAMERAPC: document.querySelector(\".ntsh-checklist-row[status=\\\"CAMERAPC\\\"]\"),\n CAMERAPROCESS: document.querySelector(\".ntsh-checklist-row[status=\\\"CAMERAPROCESS\\\"]\"),\n CAMERAUNITYSTREAM: document.querySelector(\".ntsh-checklist-row[status=\\\"CAMERAUNITYSTREAM\\\"]\"),\n UNITYBUILD: document.querySelector(\".ntsh-checklist-row[status=\\\"UNITYBUILD\\\"]\"),\n REPLAYFUNCTION: document.querySelector(\".ntsh-checklist-row[status=\\\"REPLAYFUNCTION\\\"]\"),\n };\n this.FullReboot = document.querySelector('.ntsh-fullreboot-button');\n this._Main = Main;\n this.registerListeners();\n }\n Checklist.prototype.update = function (status) {\n this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);\n this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);\n this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);\n this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);\n this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);\n console.log('Updated checklist:', status);\n };\n Checklist.prototype.updateRow = function (row, state) {\n var _a, _b, _c;\n var status = row.querySelector('.ntsh-checklist-row-status');\n var message = row.querySelector('p');\n var startButton = row.querySelector('.ntsh-checklist-row-button.start');\n var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');\n var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');\n status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');\n status.classList.add(state.state);\n message.innerText = state.message;\n startButton.style.display = ((_a = state.buttons) === null || _a === void 0 ? void 0 : _a.start) ? 'block' : 'none';\n stopButton.style.display = ((_b = state.buttons) === null || _b === void 0 ? void 0 : _b.stop) ? 'block' : 'none';\n rebootButton.style.display = ((_c = state.buttons) === null || _c === void 0 ? void 0 : _c.reboot) ? 'block' : 'none';\n };\n Checklist.prototype.registerListeners = function () {\n var _this = this;\n this.FullReboot.onclick = function () {\n morphux_1.MorphFeature.Confirm({\n title: 'Full Reboot',\n message: 'Are you sure you want to perform a full reboot?',\n }, function (state) {\n if (!state)\n return;\n _this._Main.socket.emit('status', 'fullreboot');\n });\n };\n var _loop_1 = function (key) {\n var row = this_1.Rows[key];\n var startButton = row.querySelector('.ntsh-checklist-row-button.start');\n startButton.onclick = function () {\n return morphux_1.MorphFeature.Confirm({\n title: 'Start',\n message: 'Are you sure you want to start?',\n }, function (state) {\n if (!state)\n return;\n _this._Main.socket.emit('status', 'start', key);\n });\n };\n var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');\n stopButton.onclick = function () {\n return morphux_1.MorphFeature.Confirm({\n title: 'Stop',\n message: 'Are you sure you want to stop?',\n }, function (state) {\n if (!state)\n return;\n _this._Main.socket.emit('status', 'stop', key);\n });\n };\n var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');\n rebootButton.onclick = function () {\n return morphux_1.MorphFeature.Confirm({\n title: 'Reboot',\n message: 'Are you sure you want to reboot?',\n }, function (state) {\n if (!state)\n return;\n _this._Main.socket.emit('status', 'reboot', key);\n });\n };\n };\n var this_1 = this;\n for (var key in this.Rows) {\n _loop_1(key);\n }\n };\n return Checklist;\n}());\nexports.Checklist = Checklist;\n//# sourceMappingURL=checklist.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Calibration = void 0;\nvar Calibration = /** @class */ (function () {\n function Calibration(Main) {\n this.visible = false;\n this.container = document.querySelector('.ntsh-calibration');\n this.image = this.container.querySelector('img');\n this._Main = Main;\n this.registerListeners();\n this.startClock();\n }\n Calibration.prototype.startClock = function () {\n var _this = this;\n setInterval(function () {\n if (_this.visible && _this.image)\n _this.image.src = \"/calibrationImage?t=\".concat(Date.now());\n }, 1000);\n };\n Calibration.prototype.registerListeners = function () {\n var _this = this;\n this.observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n _this.visible = true;\n console.log('Calibration visible');\n }\n else {\n _this.visible = false;\n console.log('Calibration not visible');\n }\n });\n });\n this.observer.observe(this.container);\n };\n return Calibration;\n}());\nexports.Calibration = Calibration;\n//# sourceMappingURL=calibration.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OutOfServiceMode = void 0;\nvar OutOfServiceMode = /** @class */ (function () {\n function OutOfServiceMode(Main) {\n this.state = false;\n this.input = document.querySelector('.ntsh-outofservicemode-input');\n this._Main = Main;\n this.registerListeners();\n }\n OutOfServiceMode.prototype.registerListeners = function () {\n var _this = this;\n this.input.addEventListener('change', function () { return __awaiter(_this, void 0, void 0, function () {\n var valid;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._Main.executeCommand(this.state ? 'disableOutOfService' : 'enableOutOfService', \"Are you sure you want to set the installation to \\\"\".concat(this.state ? 'Out of Service' : 'Operational', \"\\\"?\"), 'unityWebSocket')];\n case 1:\n valid = _a.sent();\n if (!valid)\n this.input.checked = this.state;\n this.state = this.input.checked;\n return [2 /*return*/];\n }\n });\n }); });\n };\n return OutOfServiceMode;\n}());\nexports.OutOfServiceMode = OutOfServiceMode;\n//# sourceMappingURL=outOfServiceMode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Timer = void 0;\nvar Timer = /** @class */ (function () {\n function Timer(Main) {\n this.startup = document.querySelector('.ntsh-timer-startup');\n this.shutdown = document.querySelector('.ntsh-timer-shutdown');\n this._Main = Main;\n this.registerListeners();\n }\n Timer.prototype.update = function (data) {\n var start = \"\".concat(data.start.hour.toString().padStart(2, '0'), \":\").concat(data.start.minute.toString().padStart(2, '0'));\n var end = \"\".concat(data.end.hour.toString().padStart(2, '0'), \":\").concat(data.end.minute.toString().padStart(2, '0'));\n this.startup.value = start;\n this.shutdown.value = end;\n };\n Timer.prototype.registerListeners = function () {\n var _this = this;\n this.startup.onchange = function () {\n var _a = _this.startup.value.split(':').map(Number), hour = _a[0], minute = _a[1];\n _this._Main.socket.emit('setTimerStart', { hour: hour, minute: minute });\n };\n this.shutdown.onchange = function () {\n var _a = _this.shutdown.value.split(':').map(Number), hour = _a[0], minute = _a[1];\n _this._Main.socket.emit('setTimerEnd', { hour: hour, minute: minute });\n };\n };\n return Timer;\n}());\nexports.Timer = Timer;\n//# sourceMappingURL=timer.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Main = void 0;\nvar socket_io_client_1 = require(\"socket.io-client\");\nvar menu_1 = require(\"./menu\");\nvar checklist_1 = require(\"./checklist\");\nvar calibration_1 = require(\"./calibration\");\nvar morphux_1 = require(\"morphux\");\nvar outOfServiceMode_1 = require(\"./outOfServiceMode\");\nvar timer_1 = require(\"./timer\");\nvar socket = (0, socket_io_client_1.io)('/');\nvar Main = /** @class */ (function () {\n function Main() {\n this.Menu = new menu_1.Menu();\n this.CheckList = new checklist_1.Checklist(this);\n this.Calibration = new calibration_1.Calibration(this);\n this.OutOfServiceMode = new outOfServiceMode_1.OutOfServiceMode(this);\n this.Timer = new timer_1.Timer(this);\n this.socket = socket;\n this.supportButton = document.querySelector('.ntsh-support img');\n this.supportNumber = '';\n this.registerListeners();\n }\n Main.prototype.registerListeners = function () {\n var _this = this;\n this.supportButton.onclick = function () { return _this.showSupport(); };\n socket.on('status', function (data) {\n _this.CheckList.update(data);\n });\n socket.on('supportNumber', function (number) {\n _this.supportNumber = number;\n });\n socket.on('unityWebSocketState', function (state) {\n var _a, _b, _c, _d;\n _this.OutOfServiceMode.input.checked =\n (_b = (_a = state === null || state === void 0 ? void 0 : state.parameters) === null || _a === void 0 ? void 0 : _a.outOfService) !== null && _b !== void 0 ? _b : false;\n _this.OutOfServiceMode.state =\n (_d = (_c = state === null || state === void 0 ? void 0 : state.parameters) === null || _c === void 0 ? void 0 : _c.outOfService) !== null && _d !== void 0 ? _d : false;\n });\n socket.on('timer', function (data) {\n _this.Timer.update(data);\n });\n };\n Main.prototype.executeCommand = function (command, message, type) {\n if (type === void 0) { type = 'unityRunner'; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {\n var confirmed;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({\n title: 'Are you sure?',\n message: message,\n })];\n case 1:\n confirmed = _a.sent();\n if (!confirmed)\n return [2 /*return*/, resolve(false)];\n morphux_1.MorphFeature.Loader({\n active: true,\n message: \"Dispatching command...\",\n });\n socket.emit(type, command, function (response) {\n morphux_1.MorphFeature.Loader({ active: false });\n if (!response.succeed)\n return morphux_1.MorphFeature.Alert({\n title: 'Error',\n message: response.message,\n });\n morphux_1.MorphFeature.Notification({\n level: 'success',\n message: \"Dispatched command\",\n });\n });\n resolve(true);\n return [2 /*return*/];\n }\n });\n }); })];\n });\n });\n };\n Main.prototype.showSupport = function () {\n return __awaiter(this, void 0, void 0, function () {\n var dialog, callAnchor;\n return __generator(this, function (_a) {\n dialog = new morphux_1.MorphComponent.Dialog({\n title: 'Contact Support',\n width: 'medium',\n height: 'auto',\n okButtonVisible: false,\n cancelButtonVisible: false,\n });\n this.supportNumber.slice();\n callAnchor = (0, morphux_1.ce)('a', 'ntsh_callanchor', { href: \"tel:\".concat(this.supportNumber) }, \"+\".concat(this.supportNumber));\n dialog.content.appendChild(callAnchor);\n setTimeout(function () { return callAnchor.click(); }, 100);\n return [2 /*return*/];\n });\n });\n };\n return Main;\n}());\nexports.Main = Main;\nvar _Main = new Main();\n//# sourceMappingURL=main.js.map"],"names":["commons_js_1","require$$0","withNativeBlob","withNativeArrayBuffer","isView","toArray","encode","decode","require$$1","require$$2","globals_node_js_1","__importDefault","this","engine_io_parser_1","component_emitter_1","util_js_1","parseqs_js_1","require$$3","debug_1","require$$4","debug","transport_js_1","polling_js_1","require$$5","socket","require$$6","require$$7","Socket","require$$8","require$$9","require$$10","require$$11","url_1","engine_io_client_1","isBinary_1","is_binary_js_1","RESERVED_EVENTS","on_1","on_js_1","Manager","__extends","CE_1","baseComponent_1","Sortable","__spreadArray","KeyBinderOverwrite_1","KeyBinderBase_1","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","clone_1","morphux_1","__awaiter","__generator","main","Main_1"],"mappings":"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"}
\ No newline at end of file
diff --git a/frontend/views/control/scss/advanced.scss b/frontend/views/control/scss/advanced.scss
new file mode 100644
index 0000000..fb0f501
--- /dev/null
+++ b/frontend/views/control/scss/advanced.scss
@@ -0,0 +1,183 @@
+.ntsh-outofservicemode {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+ margin-top: 30px;
+}
+
+.ntsh-timer {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 10px;
+ margin-top: 30px;
+
+ .ntsh-timer-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+
+ h4 {
+ width: 85px;
+ }
+
+ input[type="time"] {
+ position: relative;
+ padding: 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 20px;
+
+ &::-webkit-calendar-picker-indicator {
+ background: transparent;
+ bottom: 0;
+ color: transparent;
+ cursor: pointer;
+ height: auto;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+ }
+ }
+
+ }
+}
+
+.ntsh-autolighting {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+ margin: 30px 0px;
+}
+
+
+.ntsh_lightingsettings-container {
+ width: 100%;
+
+ &.disabled {
+ opacity: .3;
+ pointer-events: none;
+ }
+
+ h3 {
+ margin-bottom: 10px;
+ }
+
+ .ntsh_lightingsettings {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 5px;
+
+ .ntsh_lightingsettings-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+
+ h4 {
+ width: 120px;
+ }
+
+ input {
+ position: relative;
+ padding: 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 20px;
+
+ &::-webkit-calendar-picker-indicator {
+ background: transparent;
+ bottom: 0;
+ color: transparent;
+ cursor: pointer;
+ height: auto;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+ }
+ }
+ }
+ }
+}
+
+.ntsh_soundsettings {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 5px;
+
+ &.disabled {
+ opacity: .3;
+ pointer-events: none;
+ }
+
+ .ntsh_soundsettings-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+
+ h4 {
+ width: 120px;
+ }
+
+ input {
+ padding: 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 20px;
+
+ &::-webkit-calendar-picker-indicator {
+ background: transparent;
+ bottom: 0;
+ color: transparent;
+ cursor: pointer;
+ height: auto;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+ }
+ }
+ }
+}
+
+.ntsh_soundsettings-resetcontainer {
+ width: 100%;
+ display: flex;
+ justify-content: flex-end;
+ margin-bottom: 30px;
+
+ .ntsh_soundsettings-reset {
+ padding: 10px 20px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: .2s;
+ cursor: pointer;
+
+ &:hover {
+ background: #d7ccc1;
+ }
+ }
+}
\ No newline at end of file
diff --git a/frontend/views/control/scss/checklist.scss b/frontend/views/control/scss/checklist.scss
new file mode 100644
index 0000000..c0d19b4
--- /dev/null
+++ b/frontend/views/control/scss/checklist.scss
@@ -0,0 +1,70 @@
+.ntsh-checklist {
+ width: 100%;
+ margin: 30px 0px;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 10px;
+
+
+
+ .ntsh-checklist-row {
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 10px;
+
+ .ntsh-checklist-row-status {
+ width: 20px;
+ height: 20px;
+ margin: 0px 10px;
+ border-radius: 100%;
+ background: #00000024;
+ flex-shrink: 0;
+
+ &.GREEN {
+ background: #1db100;
+ }
+
+ &.RED {
+ background: #b10000;
+ }
+
+ &.YELLOW {
+ background: #b1a100;
+ }
+
+ &.GRAY {
+ background: #d5c7ba;
+ }
+ }
+
+ .ntsh-checklist-row-text {
+ flex-grow: 1;
+ }
+
+ .ntsh-checklist-row-buttons {
+ display: flex;
+ flex-direction: column;
+ gap: 3px;
+
+ .ntsh-checklist-row-button {
+ align-self: stretch;
+ display: none;
+ padding: 5px 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 12px;
+ text-align: center;
+
+ &:hover {
+ background: #d7ccc1;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/frontend/views/control/scss/home.scss b/frontend/views/control/scss/home.scss
new file mode 100644
index 0000000..33dc50d
--- /dev/null
+++ b/frontend/views/control/scss/home.scss
@@ -0,0 +1,60 @@
+.ntsh-fullreboot {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+
+ .ntsh-fullreboot-button {
+ padding: 20px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ background: #ff644e;
+ font-size: 25px;
+ font-weight: 800;
+ letter-spacing: -1px;
+
+ &:hover {
+ background: #be4939;
+ }
+ }
+
+}
+
+.ntsh-support {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 20px;
+ margin-top: 30px;
+
+ img {
+ height: 50px;
+ cursor: pointer;
+ transition-duration: .2s;
+
+ &:hover {
+ filter: brightness(.8);
+ }
+ }
+}
+
+.ntsh-calibration {
+ width: 100%;
+ margin: 30px 0px;
+
+ img {
+ width: 100%;
+ }
+}
+
+.ntsh_callanchor {
+ width: 100%;
+ display: block;
+ background: #454545;
+ text-align: center;
+ padding: 10px 00px;
+ font-size: 40px;
+ color: #fff;
+}
\ No newline at end of file
diff --git a/frontend/views/control/scss/index.scss b/frontend/views/control/scss/index.scss
new file mode 100644
index 0000000..460dd70
--- /dev/null
+++ b/frontend/views/control/scss/index.scss
@@ -0,0 +1,75 @@
+@use '../node_modules/morphux/style.css';
+@use './topbar.scss';
+@use './checklist.scss';
+@use './text.scss';
+@use './switch.scss';
+@use './home.scss';
+@use './advanced.scss';
+
+@font-face {
+ font-family: Roboto;
+ src: url(/font/Roboto-VariableFont_wdth,wght.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: ScothBrace;
+ src: url(/font/ScothBrace.ttf) format('truetype');
+}
+
+@font-face {
+ font-family: RidleyGrotesk;
+ src: url(/font/RidleyGrotesk-Bold.otf) format('opentype');
+ font-weight: bold;
+}
+
+@font-face {
+ font-family: RidleyGrotesk;
+ src: url(/font/RidleyGrotesk-Regular.otf) format('opentype');
+ font-weight: normal;
+}
+
+body {
+ position: absolute;
+ inset: 0px;
+ margin: 0px;
+ padding: 0px;
+ color: #000;
+ font-family: RidleyGrotesk, sans-serif;
+ background: #E1EAF6;
+}
+
+.ntsh {
+ position: absolute;
+ inset: 0px;
+ overflow-y: scroll;
+
+ .ntsh-wrapper {
+ width: 100%;
+ min-height: 100%;
+ background: linear-gradient(0deg, #E1EAF6, #F9E7D6);
+
+ .ntsh-inlay {
+ width: min(800px, calc(100% - 40px));
+ margin: 0 auto;
+ }
+ }
+}
+
+.ntsh_tabs {
+ width: 100%;
+
+ .ntsh_tab {
+ width: 100%;
+ display: none;
+
+ &.visible {
+ display: block;
+ }
+ }
+}
+
+.ntsh-separator {
+ width: 100%;
+ border-bottom: 10px dotted #000;
+ margin: 30px 0px;
+}
\ No newline at end of file
diff --git a/frontend/views/control/scss/switch.scss b/frontend/views/control/scss/switch.scss
new file mode 100644
index 0000000..a3bbf6d
--- /dev/null
+++ b/frontend/views/control/scss/switch.scss
@@ -0,0 +1,61 @@
+.switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+}
+
+/* Hide default HTML checkbox */
+.switch input {
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+
+/* The slider */
+.slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: #ccc;
+ -webkit-transition: .4s;
+ transition: .4s;
+}
+
+.slider:before {
+ position: absolute;
+ content: "";
+ height: 26px;
+ width: 26px;
+ left: 4px;
+ bottom: 4px;
+ background-color: white;
+ -webkit-transition: .4s;
+ transition: .4s;
+}
+
+input:checked+.slider {
+ background-color: #2bc038;
+}
+
+input:focus+.slider {
+ box-shadow: 0 0 1px #2bc038;
+}
+
+input:checked+.slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+}
+
+/* Rounded sliders */
+.slider.round {
+ border-radius: 34px;
+}
+
+.slider.round:before {
+ border-radius: 50%;
+}
\ No newline at end of file
diff --git a/frontend/views/control/scss/text.scss b/frontend/views/control/scss/text.scss
new file mode 100644
index 0000000..ec7f871
--- /dev/null
+++ b/frontend/views/control/scss/text.scss
@@ -0,0 +1,27 @@
+h1 {
+ font-size: 45px;
+ margin: 0px;
+ font-weight: 600;
+}
+
+
+h2 {
+ font-size: 24px;
+ margin: 0px 0px 5px 0px;
+}
+
+h3 {
+ font-size: 22px;
+ margin: 0px;
+ font-weight: 400;
+}
+
+h4 {
+ font-size: 14px;
+ margin: 0px;
+}
+
+p {
+ font-size: 14px;
+ margin: 0px;
+}
\ No newline at end of file
diff --git a/frontend/views/control/scss/topbar.scss b/frontend/views/control/scss/topbar.scss
new file mode 100644
index 0000000..658d30d
--- /dev/null
+++ b/frontend/views/control/scss/topbar.scss
@@ -0,0 +1,30 @@
+.ntsh-topbar {
+ .ntsh_menubar {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 30px;
+
+ .ntsh_menubar-item {
+ padding: 10px 20px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: .2s;
+ cursor: pointer;
+
+ &:hover {
+ background: #d7ccc1;
+ }
+
+ &.selected {
+ pointer-events: none;
+ opacity: .3;
+ }
+ }
+ }
+
+ img {
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/frontend/views/control/style.css b/frontend/views/control/style.css
new file mode 100644
index 0000000..e97074b
--- /dev/null
+++ b/frontend/views/control/style.css
@@ -0,0 +1,2831 @@
+@import url("https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap");
+.mux_header {
+ font-size: var(--mux-header-size-normal);
+ font-weight: var(--mux-header-weight);
+ color: var(--mux-header-color);
+ margin-top: var(--mux-edge-offset);
+}
+
+.mux_header:first-of-type {
+ margin-top: 0px;
+}
+
+.mux_header.mux_big {
+ font-size: var(--mux-header-size-big);
+ font-weight: 400;
+}
+
+.mux_header.mux_normal {
+ font-size: var(--mux-header-size-normal);
+}
+
+.mux_header.mux_small {
+ font-size: var(--mux-header-size-small);
+}
+
+.mux_header.mux_tiny {
+ font-size: var(--mux-header-size-tiny);
+}
+
+.mux_header.mux_header-bm {
+ margin-bottom: var(--edge-offset-small);
+}
+
+.mux_text {
+ font-size: var(--mux-text-size-normal);
+ font-weight: var(--mux-text-weight);
+ color: var(--mux-text-color);
+}
+
+.mux_text.mux_big {
+ font-size: var(--mux-text-size-big);
+ font-weight: 200;
+}
+
+.mux_text.mux_medium {
+ font-size: var(--mux-text-size-medium);
+}
+
+.mux_text.mux_normal {
+ font-size: var(--mux-text-size-normal);
+}
+
+.mux_text.mux_small {
+ font-size: var(--mux-text-size-small);
+}
+
+.mux_text.mux_tiny {
+ font-size: var(--mux-text-size-tiny);
+}
+
+.mux_button {
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: var(--mux-edge-offset);
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+ cursor: pointer;
+ border-radius: var(--mux-rounding);
+ user-select: none;
+ color: white;
+ text-decoration: none;
+}
+
+.mux_button:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_button.mux_normal {
+ border: 1px solid var(--mux-secondary-color);
+}
+
+.mux_button.mux_normal:hover {
+ background: var(--mux-secondary-color);
+}
+
+.mux_button.mux_highlight {
+ background: var(--mux-primary-color);
+}
+
+.mux_button.mux_highlight:hover {
+ filter: brightness(0.7);
+}
+
+.mux_button.mux_secondary {
+ background: var(--mux-secondary-color);
+}
+
+.mux_button.mux_secondary:hover {
+ filter: brightness(0.7);
+}
+
+.mux_button.mux_disabled {
+ background: var(--mux-disabled-color);
+ cursor: not-allowed;
+}
+
+.mux_button.mux_disabled:hover {
+ border: var(--mux-border-transparent);
+}
+
+.mux_button.mux_disabled .mux_text {
+ font-style: italic;
+ opacity: 0.5;
+}
+
+.mux_group.mux_group-open .mux_group-header .mux_group-fold {
+ transform: rotate(90deg);
+}
+
+.mux_group.mux_group-open .mux_group-contentwrapper {
+ grid-template-rows: 1fr;
+}
+
+.mux_group.mux_group-singular .mux_group-header {
+ display: none;
+}
+
+.mux_group.mux_group-singular .mux_group-contentwrapper {
+ grid-template-rows: 1fr;
+}
+
+.mux_group.mux_group-singular .mux_group-contentwrapper .mux_list-item-content {
+ padding-left: var(--mux-edge-offset) !important;
+}
+
+.mux_group .mux_group-header {
+ position: relative;
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ user-select: none;
+ cursor: pointer;
+ padding: var(--mux-edge-offset) 0px;
+}
+
+.mux_group .mux_group-header .material-symbols-outlined {
+ font-size: 16px;
+ margin-right: var(--mux-edge-offset);
+}
+
+.mux_group .mux_group-header .mux_header {
+ text-transform: capitalize;
+}
+
+.mux_group .mux_group-header .mux_text {
+ margin-left: calc(var(--mux-edge-offset) / 2);
+ color: #b0b0b0;
+ font-style: italic;
+}
+
+.mux_group .mux_group-header .mux_group-fold {
+ transition-duration: var(--mux-transition-animation);
+}
+
+.mux_group .mux_group-header .mux_group-actions {
+ position: absolute;
+ top: 0px;
+ bottom: 0px;
+ right: 0px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: var(--mux-edge-offset-tiny);
+}
+
+.mux_group .mux_group-header .mux_group-actions .mux_group-action {
+ width: 25px;
+ height: 25px;
+ transition-duration: var(--mux-transition-hover);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin: 2px 0px;
+ border-radius: var(--mux-rounding);
+ box-sizing: border-box;
+ border: var(--mux-border-transparent);
+ transition-duration: 0.1s;
+ cursor: pointer;
+ margin-left: var(--mux-edge-offset-tiny);
+}
+
+.mux_group .mux_group-header .mux_group-actions .mux_group-action:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_group .mux_group-header .mux_group-actions .mux_group-action:first-child {
+ margin-left: var(--mux-edge-offset);
+}
+
+.mux_group .mux_group-header .mux_group-actions .mux_group-action span {
+ font-size: 20px;
+}
+
+.mux_group .mux_group-contentwrapper {
+ display: grid;
+ grid-template-rows: 0fr;
+ transition-duration: var(--mux-transition-animation);
+}
+
+.mux_group .mux_group-contentwrapper .mux_group-content {
+ width: 100%;
+ overflow: hidden;
+}
+
+.mux_list {
+ width: 100%;
+ overflow: hidden;
+}
+
+.mux_list.mux_list-dragging .mux_list-item .mux_list-item-content:hover {
+ border: var(--mux-border-transparent) !important;
+}
+
+.mux_list .mux_list-group.mux_list-group-open .mux_list-group-header span {
+ transform: rotate(90deg);
+}
+
+.mux_list .mux_list-group.mux_list-group-open .mux_list-group-contentwrapper {
+ grid-template-rows: 1fr;
+}
+
+.mux_list .mux_list-group.mux_list-group-singular .mux_list-group-header {
+ display: none;
+}
+
+.mux_list .mux_list-group.mux_list-group-singular .mux_list-group-contentwrapper {
+ grid-template-rows: 1fr;
+}
+
+.mux_list .mux_list-group.mux_list-group-singular .mux_list-group-contentwrapper .mux_list-item-content {
+ padding-left: var(--mux-edge-offset) !important;
+}
+
+.mux_list .mux_list-group .mux_list-group-header {
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ user-select: none;
+ padding: 0px var(--mux-edge-offset);
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+ cursor: pointer;
+}
+
+.mux_list .mux_list-group .mux_list-group-header:hover span {
+ opacity: 0.5;
+}
+
+.mux_list .mux_list-group .mux_list-group-header span {
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_list .mux_list-group .mux_list-group-header .mux_list-group-icon {
+ width: 16px;
+ height: 16px;
+ margin-right: var(--mux-edge-offset);
+}
+
+.mux_list .mux_list-group .mux_list-group-header .mux_header {
+ text-transform: capitalize;
+}
+
+.mux_list .mux_list-group .mux_list-group-header .mux_list-group-indicator {
+ margin-left: 5px;
+ color: #b0b0b0;
+ font-style: italic;
+}
+
+.mux_list .mux_list-group .mux_list-group-contentwrapper {
+ display: grid;
+ grid-template-rows: 0fr;
+ transition-duration: 0.5s;
+}
+
+.mux_list .mux_list-group .mux_list-group-contentwrapper .mux_list-group-content {
+ width: 100%;
+ overflow: hidden;
+}
+
+.mux_list .mux_list-group .mux_list-group-contentwrapper .mux_list-group-content .mux_list-item-content {
+ padding-left: calc(var(--mux-edge-offset) * 3);
+}
+
+.mux_list .mux_group.mux_list-group-singular .mux_list-item-content {
+ padding-left: 0px !important;
+}
+
+.mux_list .mux_group .mux_group-header {
+ box-sizing: border-box;
+ padding-left: 10px;
+}
+
+.mux_list .mux_group .mux_list-item-content {
+ padding-left: calc(var(--mux-edge-offset) * 3) !important;
+}
+
+.mux_list .mux_list-item {
+ width: 100%;
+ border-radius: var(--mux-rounding);
+ color: #fff;
+ display: block;
+}
+
+.mux_list .mux_list-item:hover .mux_list-item-action {
+ opacity: 1 !important;
+}
+
+.mux_list .mux_list-item.mux_list-item-dragging {
+ background: var(--mux-disabled-color);
+}
+
+.mux_list .mux_list-item.mux_list-item-hover {
+ cursor: pointer;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_list .mux_list-item.mux_list-item-hover:hover .mux_list-item-content {
+ border: var(--mux-border-hovering);
+}
+
+.mux_list .mux_list-item.mux_list-item-separator {
+ border-bottom: 1px solid var(--mux-disabled-color);
+}
+
+.mux_list .mux_list-item.mux_list-item-separator:last-child {
+ border-bottom: 0px;
+}
+
+.mux_list .mux_list-item.mux_list-item-selected {
+ background: var(--mux-selected-color);
+ cursor: default !important;
+}
+
+.mux_list .mux_list-item.mux_list-item-selected .mux_list-item-content {
+ border: var(--mux-border-width) solid var(--mux-selected-color) !important;
+}
+
+.mux_list .mux_list-item.mux_list-item-selected:hover {
+ background: var(--mux-selected-color);
+}
+
+.mux_list .mux_list-item.mux_list-item-disabled .mux_list-item-text .mux_text {
+ color: #6e6e6e;
+ font-style: italic;
+}
+
+.mux_list .mux_list-item .mux_list-item-content {
+ position: relative;
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ user-select: none;
+ padding: var(--mux-edge-offset-tiny) var(--mux-edge-offset);
+ border: var(--mux-border-transparent);
+ border-radius: var(--mux-rounding);
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_list .mux_list-item .mux_list-item-content span.mux_list-item-icon {
+ font-size: 16px;
+}
+
+.mux_list .mux_list-item .mux_list-item-content img.mux_list-item-icon {
+ width: 16px;
+ height: 16px;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_header {
+ margin-bottom: var(--mux-edge-offset);
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-index {
+ margin-right: var(--mux-edge-offset);
+ width: 20px;
+ height: 20px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-sizing: border-box;
+ border: 1px solid var(--mux-disabled-color);
+ border-radius: var(--mux-rounding);
+ font-size: 12px;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-icon {
+ margin-right: var(--mux-edge-offset);
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-text {
+ width: 100%;
+ white-space: normal;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-text .mux_text.mux_small {
+ color: #979797;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-actions {
+ position: absolute;
+ right: var(--mux-edge-offset);
+ display: flex;
+ align-items: center;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-actions .mux_list-item-action {
+ width: 22px;
+ height: 22px;
+ transition-duration: var(--mux-transition-hover);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: var(--mux-rounding);
+ box-sizing: border-box;
+ border: var(--mux-border-transparent);
+ opacity: 0;
+ transition-duration: 0.1s;
+ cursor: pointer;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-actions .mux_list-item-action:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-actions .mux_list-item-action img {
+ width: 14px;
+ height: 14px;
+ margin: 0px;
+ pointer-events: none;
+}
+
+.mux_list .mux_list-item .mux_list-item-content .mux_list-item-actions .mux_list-item-action span {
+ font-size: 18px;
+ pointer-events: none;
+}
+
+.mux_input {
+ width: 100%;
+ border: var(--mux-border-transparent);
+ background: inherit;
+ color: var(--mux-text-color);
+ padding: var(--mux-edge-offset);
+ font-size: 11px;
+ border-radius: var(--mux-rounding);
+ transition-duration: var(--mux-transition-hover);
+ box-sizing: border-box;
+ font-family: Montserrat, sans-serif;
+}
+
+.mux_input:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_input:focus {
+ outline: none;
+ border: var(--mux-border-active);
+}
+
+.mux_input[disabled] {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+.mux_input.mux_input-alwaysborder {
+ border: var(--mux-border-hovering);
+}
+
+.mux_input.mux_input-alwaysborder:focus {
+ outline: none;
+ border: var(--mux-border-active);
+}
+
+.mux_input.mux_input-noborder:hover, .mux_input.mux_input-noborder:focus {
+ border: var(--mux-border-transparent);
+}
+
+.mux_select {
+ position: relative;
+ width: 100%;
+ cursor: pointer;
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+ border-radius: var(--mux-rounding);
+ box-sizing: border-box;
+}
+
+.mux_select:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_select:hover .mux_select-arrow {
+ margin-top: 1px;
+}
+
+.mux_select.mux_select-alwaysborder {
+ border: var(--mux-border-hovering);
+}
+
+.mux_select.mux_select-noborder:hover {
+ border: var(--mux-border-transparent);
+}
+
+.mux_select.mux_select-open {
+ border: var(--mux-border-active);
+}
+
+.mux_select .mux_input {
+ box-sizing: border-box;
+ width: 100%;
+ pointer-events: none;
+}
+
+.mux_select .mux_select-arrow {
+ position: absolute;
+ right: var(--mux-edge-offset-tiny);
+ font-size: 16px;
+ padding: var(--mux-edge-offset) 0px;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_select .mux_select-content {
+ position: absolute;
+ inset: 0px;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 0px var(--mux-edge-offset);
+}
+
+.mux_select .mux_select-content .mux_select-none {
+ color: gray;
+}
+
+.mux_select .mux_select-content .material-symbols-outlined {
+ margin-right: var(--mux-edge-offset-tiny);
+ font-size: 20px;
+}
+
+.mux_mobilemenu {
+ position: fixed;
+ inset: 0px;
+ background: rgba(0, 0, 0, 0.6);
+ z-index: 500;
+ opacity: 0;
+}
+
+.mux_mobilemenu .mux_mobilemenu-inner {
+ position: absolute;
+ top: 0px;
+ bottom: 0px;
+ right: 0px;
+ width: min(100% - var(--mux-edge-offset), 200px);
+ transform: translateX(100%);
+ background: var(--mux-primary-color);
+}
+
+.mux_mobilemenu .mux_mobilemenu-inner .mux_menubar-image {
+ display: none;
+}
+
+.mux_menubar {
+ position: relative;
+ user-select: none;
+ background: var(--mux-primary-color);
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ overflow: hidden;
+}
+
+.mux_menubar.mux_menubar-direction-horizontal {
+ width: 100%;
+ height: 50px;
+ flex-direction: row;
+}
+
+.mux_menubar.mux_menubar-direction-horizontal .mux_menubar-locater {
+ height: 100%;
+ flex-direction: row;
+}
+
+.mux_menubar.mux_menubar-direction-horizontal .mux_menubar-locater .mux_menubar-item {
+ justify-content: center;
+}
+
+.mux_menubar.mux_menubar-direction-vertical {
+ width: 100%;
+ height: 100%;
+ flex-direction: column;
+}
+
+.mux_menubar.mux_menubar-direction-vertical .mux_menubar-locater {
+ width: 100%;
+ flex-direction: column;
+}
+
+.mux_menubar.mux_menubar-direction-vertical .mux_menubar-locater .mux_menubar-item {
+ width: 100%;
+}
+
+.mux_menubar .mux_menubar-locater {
+ display: flex;
+ align-items: center;
+}
+
+.mux_menubar .mux_menubar-locater:not(.mux_menubar-visible) .mux_menubar-item {
+ opacity: 0;
+ pointer-events: none;
+}
+
+.mux_menubar .mux_menubar-locater.mux_left {
+ justify-content: flex-start;
+}
+
+.mux_menubar .mux_menubar-locater.mux_right {
+ justify-content: flex-end;
+}
+
+.mux_menubar .mux_menubar-mobile {
+ position: absolute;
+ inset: 0px;
+ display: none;
+}
+
+.mux_menubar .mux_menubar-mobile.mux_menubar-visible {
+ display: block;
+}
+
+.mux_menubar .mux_menubar-mobile .mux_menubar-mobile-logo {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 50px;
+ height: 50px;
+ box-sizing: border-box;
+ padding: var(--mux-edge-offset);
+}
+
+.mux_menubar .mux_menubar-mobile .mux_menubar-mobile-logo img {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+}
+
+.mux_menubar .mux_menubar-mobile .mux_menubar-mobile-items {
+ position: absolute;
+ top: 0px;
+ height: 100%;
+ display: flex;
+ align-items: center;
+}
+
+.mux_menubar .mux_menubar-mobile .mux_menubar-mobile-items.mux_left {
+ left: 0px;
+}
+
+.mux_menubar .mux_menubar-mobile .mux_menubar-mobile-items.mux_right {
+ right: 0px;
+}
+
+.mux_menubar .mux_menubar-mobile .mux_menubar-mobile-items .mux_menubar-item-icon {
+ justify-content: center;
+}
+
+.mux_menubar .mux_menubar-image {
+ height: 100%;
+ box-sizing: border-box;
+ padding: var(--mux-edge-offset);
+}
+
+.mux_menubar .mux_menubar-image img {
+ height: 100%;
+}
+
+.mux_menubar .mux_menubar-item {
+ position: relative;
+ height: 50px;
+ display: flex;
+ align-items: center;
+ box-sizing: border-box;
+ transition-duration: var(--mux-transition-hover);
+ border: var(--mux-border-transparent);
+ cursor: pointer;
+ pointer-events: auto;
+ text-decoration: none;
+}
+
+.mux_menubar .mux_menubar-item:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_menubar .mux_menubar-item:hover .mux_menubar-item-arrow {
+ margin-top: 5px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-selected {
+ background: var(--mux-primary-off-color);
+ border: var(--mux-border-width) solid var(--mux-selected-color);
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-selected .mux_menubar-item-arrow {
+ margin-top: 5px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-disabled {
+ opacity: 0.3;
+ cursor: not-allowed;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-disabled:hover {
+ border: var(--mux-border-transparent);
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-disabled:hover .mux_menubar-item-arrow {
+ margin-top: 0px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-icon {
+ width: 50px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-icon .mux_menubar-item-icon-img {
+ width: 20px;
+ height: 20px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-icon .mux_menubar-item-materialicon {
+ font-size: 26px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-icon .mux_menubar-item-arrow {
+ position: absolute;
+ bottom: 3px;
+ right: 3px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-normal {
+ padding: 0px 15px;
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-normal .mux_menubar-item-icon-img {
+ width: 16px;
+ height: 16px;
+ margin-right: var(--mux-edge-offset-tiny);
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-normal .mux_menubar-item-materialicon {
+ font-size: 20px;
+ color: white;
+ margin-right: var(--mux-edge-offset-tiny);
+}
+
+.mux_menubar .mux_menubar-item.mux_menubar-item-normal p {
+ margin: 0px;
+}
+
+.mux_menubar .mux_menubar-item .mux_menubar-item-arrow {
+ margin-left: var(--mux-edge-offset-tiny);
+ transition-duration: var(--mux-transition-hover);
+ font-size: 16px;
+ color: #fff;
+}
+
+.mux_menubar a.mux_menubar-item .mux_menubar-item-materialicon {
+ color: #fff;
+}
+
+.mux_menubar.mux_menubar-small {
+ height: 40px;
+}
+
+.mux_menubar.mux_menubar-small .mux_menubar-item {
+ height: 40px;
+}
+
+.mux_menubar.mux_menubar-small .mux_menubar-item.mux_menubar-item-icon {
+ width: 40px;
+}
+
+.mux_menubar.mux_menubar-small .mux_menubar-item.mux_menubar-item-icon .mux_menubar-item-materialicon {
+ font-size: 21px;
+}
+
+.mux_contextmenu {
+ position: absolute;
+ z-index: 1101;
+ min-width: 120px;
+ border-radius: var(--mux-rounding);
+ background: var(--mux-panel-color);
+ box-shadow: var(--mux-panel-shadow);
+ border: 1px solid var(--mux-border-color);
+ overflow-y: auto;
+ transform-origin: 50% 0%;
+ transform: scale(0);
+ user-select: none;
+ --mux-contextmenu-iconcolor: #919191;
+}
+
+.mux_contextmenu .mux_contextmenu-item {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ border: var(--mux-border-transparent);
+ padding: 5px var(--mux-edge-offset);
+ cursor: pointer;
+ text-decoration: none;
+ color: var(--mux-text-color);
+}
+
+.mux_contextmenu .mux_contextmenu-item:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_contextmenu .mux_contextmenu-item.mux_contextmenu-item-selected {
+ border: var(--mux-border-hovering);
+ background: var(--mux-selected-color);
+}
+
+.mux_contextmenu .mux_contextmenu-item.mux_contextmenu-item-disabled {
+ opacity: 0.3;
+ cursor: not-allowed;
+ border: var(--mux-border-transparent);
+}
+
+.mux_contextmenu .mux_contextmenu-item.mux_contextmenu-item-disabled:hover {
+ background: transparent;
+}
+
+.mux_contextmenu .mux_contextmenu-item .mux_contextmenu-item-icon {
+ margin-right: -2px;
+ height: 16px;
+ border-radius: var(--mux-rounding);
+}
+
+.mux_contextmenu .mux_contextmenu-item .mux_contextmenu-item-materialicon {
+ margin-right: -2px;
+ color: var(--mux-contextmenu-iconcolor);
+ font-size: 16px;
+}
+
+.mux_contextmenu .mux_contextmenu-item .mux_contextmenu-item-content {
+ flex-grow: 1;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: var(--mux-edge-offset-tiny);
+ padding-right: calc(var(--mux-edge-offset) * 2);
+}
+
+.mux_contextmenu .mux_contextmenu-item .mux_contextmenu-item-content .mux_contextmenu-item-arrow {
+ font-size: 16px;
+ margin-left: calc(var(--mux-edge-offset-tiny) * -1);
+ color: #c0c0c0;
+}
+
+.mux_contextmenu .mux_contextmenu-item .mux_contextmenu-item-content .mux_contextmenu-shortcut {
+ color: #b3b3b3;
+}
+
+.mux_contextmenu .mux_contextmenu-item .mux_text {
+ white-space: nowrap;
+}
+
+.mux_contextmenu .mux_contextmenu-separator {
+ width: 100%;
+ min-height: 1px;
+ background: var(--mux-border-color);
+ display: flex;
+}
+
+.mux_contextmenu .mux_contextmenu-separator span {
+ font-size: 8px;
+ font-weight: 500;
+ padding: 4px 0px 3px 0px;
+ margin-left: var(--mux-edge-offset-tiny);
+}
+
+.mux_dialogcontainer {
+ position: fixed;
+ inset: 0px;
+ background: rgba(0, 0, 0, 0.3098039216);
+ z-index: 100;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ transition-duration: 0.2s;
+ opacity: 0;
+}
+
+.mux_dialogcontainer .mux_dialog {
+ position: relative;
+ padding: var(--mux-edge-offset);
+ border-radius: var(--mux-rounding);
+ background: var(--mux-panel-color);
+ box-sizing: border-box;
+ box-shadow: var(--mux-panel-shadow);
+ border: 1px solid var(--mux-border-color);
+ max-width: calc(100% - 20px);
+ max-height: calc(100% - 20px);
+ transition-timing-function: ease-in;
+ transition-duration: var(--mux-transition-hover);
+ opacity: 0;
+ transform-origin: 50% 50%;
+ transform: scale(0.8);
+}
+
+.mux_dialogcontainer .mux_dialog.mux_w-big {
+ width: 900px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_w-medium {
+ width: 600px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_w-small {
+ width: 300px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_w-tiny {
+ width: 150px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_h-big {
+ height: 900px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_h-medium {
+ height: 600px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_h-small {
+ height: 300px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_h-tiny {
+ height: 150px;
+}
+
+.mux_dialogcontainer .mux_dialog.mux_h-auto .mux_dialog-content {
+ position: unset;
+ width: 100%;
+ margin: 30px calc(var(--mux-edge-offset) * -1) 45px calc(var(--mux-edge-offset) * -1);
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-titlebar {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ padding: var(--mux-edge-offset);
+ height: 20px;
+ border-bottom: 1px solid var(--mux-border-color);
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-titlebar .mux_dialog-title {
+ position: relative;
+ z-index: 1;
+ white-space: nowrap;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-titlebar .mux_dialog-titlesettings {
+ width: 100%;
+ height: 100%;
+ margin-right: calc(15px + var(--mux-edge-offset));
+ margin-left: var(--mux-edge-offset);
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-titlebar .mux_dialog-close {
+ width: 20px;
+ height: 20px;
+ border-radius: var(--mux-rounding);
+ border: var(--mux-border-transparent);
+ position: absolute;
+ right: var(--mux-edge-offset);
+ top: var(--mux-edge-offset);
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-titlebar .mux_dialog-close:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-titlebar .mux_dialog-close span {
+ font-size: 18px;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-content {
+ position: absolute;
+ top: 41px;
+ bottom: 56px;
+ left: 0px;
+ right: 0px;
+ padding: var(--mux-edge-offset);
+ overflow-y: auto;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-content.mux_dialog-content-nobuttons {
+ bottom: 0px;
+ margin-bottom: 0px;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-content .mux_dialog-searchbar {
+ width: 100%;
+ height: 35px;
+ border-radius: var(--mux-rounding);
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-content .mux_dialog-searchbar .mux_input {
+ width: 100%;
+ height: 100%;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-content .mux_properties {
+ padding: var(--mux-edge-offset) 0px;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-actionbar {
+ position: absolute;
+ bottom: var(--mux-edge-offset);
+ left: var(--mux-edge-offset);
+ right: var(--mux-edge-offset);
+ border-top: 1px solid var(--mux-border-color);
+ height: 45px;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-actionbar .mux_dialog-buttons {
+ display: flex;
+ justify-content: flex-end;
+ position: absolute;
+ bottom: 0px;
+ right: 0px;
+}
+
+.mux_dialogcontainer .mux_dialog .mux_dialog-actionbar .mux_dialog-buttons .mux_button {
+ margin-left: var(--mux-edge-offset);
+}
+
+.mux_dialogcontainer .mux_dialog .mux_row {
+ box-sizing: border-box;
+ padding: 0px var(--mux-edge-offset);
+}
+
+.mux_cards {
+ width: 100%;
+ box-sizing: border-box;
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+}
+
+.mux_cards.mux_cards-dragging .mux_cards-item {
+ border: var(--mux-border-transparent) !important;
+}
+
+.mux_cards.mux_cards-oneperrow {
+ display: flex;
+ flex-direction: column;
+}
+
+.mux_cards .mux_cards-item-dragging {
+ position: relative;
+ height: 100px;
+ background: #3d3d3d;
+}
+
+.mux_cards .mux_cards-item {
+ position: relative;
+ height: 100px;
+ user-select: none;
+ box-sizing: border-box;
+ padding: var(--mux-edge-offset);
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+ border-radius: var(--mux-rounding);
+ cursor: pointer;
+ display: flex;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: var(--mux-edge-offset);
+ color: white;
+ text-decoration: none;
+}
+
+.mux_cards .mux_cards-item:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_cards .mux_cards-item:hover .mux_cards-item-buttons {
+ opacity: 1;
+}
+
+.mux_cards .mux_cards-item.mux_cards-item-disabled {
+ cursor: default;
+}
+
+.mux_cards .mux_cards-item.mux_cards-item-disabled .mux_cards-item-thumbnail,
+.mux_cards .mux_cards-item.mux_cards-item-disabled .mux_cards-item-info {
+ opacity: 0.7;
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-thumbnail {
+ height: 100%;
+ border-radius: var(--mux-rounding);
+ border: none;
+ overflow: hidden;
+ pointer-events: none;
+ flex-shrink: 0;
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-info {
+ display: flex;
+ justify-content: flex-start;
+ align-items: flex-start;
+ flex-direction: column;
+ gap: var(--mux-edge-offset-tiny);
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-info span.highlight {
+ color: var(--mux-primary-color);
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-buttons {
+ position: absolute;
+ right: var(--mux-edge-offset-tiny);
+ height: calc(100% - 10px);
+ margin: -5px 0px;
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ flex-direction: column;
+ transition-duration: var(--mux-transition-hover);
+ opacity: 0;
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-buttons .mux_cards-item-button {
+ width: 26px;
+ height: 26px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-sizing: border-box;
+ border-radius: var(--mux-rounding);
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+ color: white;
+ cursor: pointer;
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-buttons .mux_cards-item-button:hover {
+ border: var(--mux-border-hovering);
+ opacity: 1;
+}
+
+.mux_cards .mux_cards-item .mux_cards-item-buttons .mux_cards-item-button span {
+ font-size: 20px;
+}
+
+.mux_icongrid {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: flex-start;
+}
+
+.mux_icongrid.mux_icongrid-dragging .mux_icongrid-item:hover {
+ border: var(--mux-border-transparent) !important;
+}
+
+.mux_icongrid .mux_icongrid-item {
+ width: 104px;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ box-sizing: border-box;
+ border-radius: var(--mux-rounding);
+ border: var(--mux-border-transparent);
+ padding: var(--mux-edge-offset);
+ transition-duration: 0.1s;
+ margin: calc(var(--mux-edge-offset) / 2);
+ user-select: none;
+}
+
+.mux_icongrid .mux_icongrid-item:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_icongrid .mux_icongrid-item.mux_icongrid-item-dragging {
+ background: var(--mux-disabled-color);
+ border: var(--mux-border-transparent) !important;
+}
+
+.mux_icongrid .mux_icongrid-item.mux_icongrid-item-dragging:hover {
+ border: var(--mux-border-transparent) !important;
+}
+
+.mux_icongrid .mux_icongrid-item .mux_icongrid-item-icon {
+ width: calc(75px - var(--mux-edge-offset));
+}
+
+.mux_icongrid .mux_icongrid-item .mux_text {
+ margin-top: var(--mux-edge-offset-tiny);
+ max-width: 100%;
+ text-align: center;
+ word-break: break-all;
+}
+
+.mux_row {
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: var(--mux-edge-offset);
+ margin-bottom: var(--mux-edge-offset);
+ transition-duration: 0.2s;
+}
+
+.mux_row:last-child {
+ margin-bottom: 0px;
+}
+
+.mux_row.mux_spread .mux_row-label,
+.mux_row.mux_spread .mux_row-content {
+ width: 50%;
+}
+
+.mux_row.mux_disabled {
+ opacity: 0.3;
+ filter: grayscale(0.5);
+ cursor: not-allowed;
+}
+
+.mux_row.mux_disabled .mux_row-content {
+ pointer-events: none;
+}
+
+.mux_row.mux_indent {
+ margin-left: 10px;
+ width: calc(100% - 10px);
+}
+
+.mux_row .mux_row-content {
+ width: 100%;
+}
+
+.mux_palette {
+ position: fixed;
+ inset: 0;
+ background: rgba(0, 0, 0, 0.4196078431);
+ z-index: 100;
+ display: flex;
+ justify-content: center;
+ align-items: flex-start;
+ transition-duration: var(--mux-transition-hover);
+ opacity: 0;
+ box-sizing: border-box;
+ padding-top: 20px;
+}
+
+.mux_palette .mux_palette-inner {
+ width: 400px;
+ max-width: calc(100% - 100px);
+ max-height: calc(100% - 100px);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ transition-timing-function: ease-in;
+ transition-duration: var(--mux-transition-hover);
+ opacity: 0;
+ transform-origin: 50% 50%;
+ transform: scale(0.8);
+ padding: 10px;
+ background: var(--mux-panel-color);
+ box-shadow: 0 0 20px #000;
+ border-radius: var(--mux-rounding);
+ overflow: hidden;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-input {
+ border: 1px solid var(--mux-border-color);
+ border-radius: var(--mux-rounding);
+ width: 100%;
+ box-sizing: border-box;
+ padding: 10px 10px;
+ background: var(--mux-panel-sub-color);
+ color: white;
+ font-size: 12px;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-input:active, .mux_palette .mux_palette-inner .mux_palette-input:focus {
+ outline: none;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results {
+ width: 100%;
+ max-height: 420px;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ overflow-y: auto;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-header,
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-label {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 10px;
+ color: #c7c7c7;
+ gap: var(--mux-edge-offset-tiny);
+ text-shadow: 0 0 8px #000;
+ height: 20px;
+ margin-top: var(--mux-edge-offset);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-header span.material-symbols-outlined,
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-label span.material-symbols-outlined {
+ font-size: 16px;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-header {
+ margin-top: 0px;
+ margin-bottom: var(--mux-edge-offset);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item {
+ position: relative;
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: var(--mux-edge-offset);
+ box-sizing: border-box;
+ padding: var(--mux-edge-offset);
+ color: #fff;
+ border: var(--mux-border-transparent);
+ cursor: pointer;
+ transition-duration: var(--mux-transition-hover);
+ text-decoration: none;
+ border-radius: var(--mux-rounding);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item:first-child {
+ margin-top: var(--mux-edge-offset);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item.mux_palette-results-item-selected {
+ border: var(--mux-border-active);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item.mux_palette-results-item-selected .mux_palette-results-item-selectedtext {
+ opacity: 1;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item.mux_palette-results-item-separator {
+ border-top: 2px solid var(--separator-color) !important;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item .mux_palette-results-item-text {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: var(--mux-edge-offset-tiny);
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item .mux_palette-results-item-text .mux_palette-results-item-text-sub {
+ color: #a5a5a5;
+}
+
+.mux_palette .mux_palette-inner .mux_palette-results .mux_palette-results-item .mux_palette-results-item-selectedtext {
+ position: absolute;
+ right: var(--mux-edge-offset);
+ color: #8b8b8b;
+ background: var(--background);
+ padding: 2px 5px;
+ border-radius: var(--mux-rounding);
+ transition-duration: var(--mux-transition-hover);
+ pointer-events: none;
+ opacity: 0;
+}
+
+.mux_palette .material-symbols-outlined {
+ font-size: 20px;
+ margin: -2px 0px;
+}
+
+.mux_palette .mux_palette-results-item-icon {
+ width: 20px;
+ height: 20px;
+ margin: -2px 0px;
+ object-fit: contain;
+}
+
+.mux_palette.mux_palette-checkboxes .mux_palette-results-item.mux_palette-results-item-checked .mux_palette-results-item-checkbox span {
+ display: block;
+}
+
+.mux_palette.mux_palette-checkboxes .mux_palette-results-item .mux_palette-results-item-checkbox {
+ width: 20px;
+ height: 20px;
+ margin: -2px 0;
+ background: var(--mux-selected-color);
+ border-radius: var(--mux-rounding);
+}
+
+.mux_palette.mux_palette-checkboxes .mux_palette-results-item .mux_palette-results-item-checkbox span {
+ display: none;
+}
+
+.mux_imageviewer {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ user-select: none;
+ overflow: hidden;
+}
+
+.mux_imageviewer.mux_imageviewer-galleryopen .mux_imageviewer-wrapper {
+ bottom: 100px;
+}
+
+.mux_imageviewer.mux_imageviewer-galleryopen .mux_imageviewer-gallery {
+ pointer-events: auto;
+ opacity: 1;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper {
+ position: absolute;
+ inset: 0px;
+ overflow: hidden;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-loader {
+ position: absolute;
+ inset: 0px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: var(--mux-edge-offset);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-loader .mux_imageviewer-loader-dot {
+ width: 30px;
+ height: 30px;
+ border-radius: var(--mux-rounding);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-loader .mux_imageviewer-loader-dot:nth-child(1) {
+ animation: MuxImageViewerLoader 1s 0ms linear infinite;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-loader .mux_imageviewer-loader-dot:nth-child(2) {
+ animation: MuxImageViewerLoader 1s 250ms linear infinite;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-loader .mux_imageviewer-loader-dot:nth-child(3) {
+ animation: MuxImageViewerLoader 1s 500ms linear infinite;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-loader .mux_imageviewer-loader-dot:nth-child(4) {
+ animation: MuxImageViewerLoader 1s 750ms linear infinite;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-image {
+ position: absolute;
+ z-index: 1;
+ object-fit: contain;
+ pointer-events: none;
+ transform-origin: top left;
+ opacity: 0;
+ transition: opacity 0.3s;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-unsupported {
+ position: absolute;
+ inset: 0px;
+ display: none;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ gap: calc(var(--mux-edge-offset) * 2);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-unsupported .mux_imageviewer-unsupported-icon {
+ font-size: 60px;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-unsupported .mux_button {
+ gap: var(--mux-edge-offset);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-unsupported .mux_button span.material-symbols-outlined {
+ color: #fff;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation {
+ position: absolute;
+ z-index: 2;
+ top: 0px;
+ bottom: 0px;
+ display: flex;
+ align-items: center;
+ opacity: 0.7;
+ padding: 0px var(--mux-edge-offset);
+ cursor: pointer;
+ text-shadow: 0px 0px 10px black;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation:hover {
+ opacity: 1;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation.disabled {
+ opacity: 0.2;
+ cursor: unset;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation.disabled:hover {
+ opacity: 0.2;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation.mux_imageviewer-navigation-right {
+ right: 0px;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation.mux_imageviewer-navigation-left {
+ left: 0px;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-navigation span {
+ font-size: 50px;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer {
+ position: absolute;
+ z-index: 2;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+ padding: 0px var(--mux-edge-offset) var(--mux-edge-offset) var(--mux-edge-offset);
+ display: flex;
+ justify-content: center;
+ pointer-events: none;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls {
+ background: var(--mux-panel-color);
+ border-radius: var(--mux-rounding);
+ box-shadow: var(--mux-panel-shadow);
+ pointer-events: auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ opacity: 0.6;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls:hover {
+ opacity: 1;
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls .mux_imageviewer-control {
+ position: relative;
+ width: 40px;
+ height: 40px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls .mux_imageviewer-control:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls .mux_imageviewer-control:first-child {
+ border-top-left-radius: var(--mux-rounding);
+ border-bottom-left-radius: var(--mux-rounding);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls .mux_imageviewer-control:last-child {
+ border-top-right-radius: var(--mux-rounding);
+ border-bottom-right-radius: var(--mux-rounding);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls .mux_imageviewer-control.mux_active {
+ background: rgba(255, 255, 255, 0.0392156863);
+}
+
+.mux_imageviewer .mux_imageviewer-wrapper .mux_imageviewer-controlscontainer .mux_imageviewer-controls .mux_imageviewer-control .mux_imageviewer-control-badge {
+ position: absolute;
+ bottom: 3px;
+ right: 3px;
+ background: var(--mux-selected-color);
+ padding: 1px 3px;
+ border-radius: var(--mux-rounding);
+}
+
+.mux_imageviewer .mux_imageviewer-gallery {
+ position: absolute;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+ height: 100px;
+ background: var(--mux-panel-color);
+ z-index: 1;
+ white-space: nowrap;
+ overflow-y: hidden;
+ overflow-x: auto;
+ box-sizing: border-box;
+ padding: var(--mux-edge-offset) 0px;
+ pointer-events: none;
+ opacity: 0;
+ transition-duration: var(--mux-transition-hover);
+}
+
+.mux_imageviewer .mux_imageviewer-gallery .mux_imageviewer-gallery-thumb {
+ height: 100%;
+ margin-right: var(--mux-edge-offset);
+ border-radius: var(--mux-rounding);
+ box-sizing: border-box;
+ border: var(--mux-border-transparent);
+ transition-duration: var(--mux-transition-hover);
+ cursor: pointer;
+}
+
+.mux_imageviewer .mux_imageviewer-gallery .mux_imageviewer-gallery-thumb:hover {
+ border: var(--mux-border-hovering);
+ opacity: 0.7;
+}
+
+.mux_imageviewer .mux_imageviewer-gallery .mux_imageviewer-gallery-thumb:first-child {
+ margin-left: 40%;
+}
+
+.mux_imageviewer .mux_imageviewer-gallery .mux_imageviewer-gallery-thumb:last-child {
+ margin-right: 40%;
+}
+
+.mux_imageviewer .mux_imageviewer-gallery .mux_imageviewer-gallery-thumb.active {
+ border: var(--mux-border-active);
+ opacity: 0.4;
+ cursor: unset;
+}
+
+@keyframes MuxImageViewerLoader {
+ 0% {
+ background: var(--mux-border-color);
+ }
+ 10% {
+ background: var(--mux-primary-color);
+ }
+ 30% {
+ background: var(--mux-primary-color);
+ }
+ 40% {
+ background: var(--mux-border-color);
+ }
+ 100% {
+ background: var(--mux-border-color);
+ }
+}
+.mux_resizer {
+ position: absolute;
+}
+
+.mux_resizer.mux_resizer-block {
+ transition-duration: 0.1s;
+}
+
+.mux_resizer.mux_resizer-closed .mux_resizer-grab-handle {
+ display: none !important;
+}
+
+.mux_resizer.mux_resizer-closed .mux_resizer-grab-open {
+ display: block !important;
+}
+
+.mux_resizer.mux_resizer-closed .mux_resizer-grab span {
+ font-size: 34px !important;
+}
+
+.mux_resizer.mux_resizer-closed.mux_resizer-direction-right .mux_resizer-grab {
+ margin-left: 10px;
+ border-radius: 0px var(--mux-rounding) var(--mux-rounding) 0px;
+}
+
+.mux_resizer.mux_resizer-closed.mux_resizer-direction-left .mux_resizer-grab {
+ margin-right: 10px;
+ border-radius: var(--mux-rounding) 0px 0px var(--mux-rounding);
+}
+
+.mux_resizer.mux_resizer-closed.mux_resizer-direction-up .mux_resizer-grab {
+ margin-bottom: 22px;
+ border-radius: 0px 0px var(--mux-rounding) var(--mux-rounding);
+}
+
+.mux_resizer.mux_resizer-closed.mux_resizer-direction-up .mux_resizer-grab {
+ margin-top: 10px;
+ border-radius: var(--mux-rounding) var(--mux-rounding) 0px 0px;
+}
+
+.mux_resizer.mux_resizer-moving {
+ user-select: none;
+}
+
+.mux_resizer.mux_resizer-moving * {
+ pointer-events: none;
+}
+
+.mux_resizer .mux_resizer-area {
+ position: absolute;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 100;
+ pointer-events: auto;
+}
+
+.mux_resizer .mux_resizer-area .mux_resizer-grab {
+ background: var(--mux-border-color);
+ border-radius: var(--mux-rounding);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ user-select: none;
+}
+
+.mux_resizer .mux_resizer-area .mux_resizer-grab:hover span {
+ opacity: 1;
+}
+
+.mux_resizer .mux_resizer-area .mux_resizer-grab span {
+ opacity: 0.7;
+ font-size: 18px;
+ pointer-events: none;
+}
+
+.mux_resizer .mux_resizer-area .mux_resizer-grab .mux_resizer-grab-handle {
+ display: block;
+}
+
+.mux_resizer .mux_resizer-area .mux_resizer-grab .mux_resizer-grab-open {
+ display: none;
+}
+
+.mux_resizer.mux_resizer-direction-right .mux_resizer-area, .mux_resizer.mux_resizer-direction-left .mux_resizer-area {
+ height: 100%;
+ width: 7px;
+ top: 0px;
+ cursor: ew-resize;
+}
+
+.mux_resizer.mux_resizer-direction-right .mux_resizer-area .mux_resizer-grab, .mux_resizer.mux_resizer-direction-left .mux_resizer-area .mux_resizer-grab {
+ width: 12px;
+ height: 30px;
+}
+
+.mux_resizer.mux_resizer-direction-up .mux_resizer-area, .mux_resizer.mux_resizer-direction-down .mux_resizer-area {
+ width: 100%;
+ height: 7px;
+ left: 0px;
+ cursor: ns-resize;
+}
+
+.mux_resizer.mux_resizer-direction-up .mux_resizer-area .mux_resizer-grab, .mux_resizer.mux_resizer-direction-down .mux_resizer-area .mux_resizer-grab {
+ width: 30px;
+ height: 12px;
+}
+
+.mux_resizer.mux_resizer-direction-left .mux_resizer-area {
+ left: -4px;
+}
+
+.mux_resizer.mux_resizer-direction-right .mux_resizer-area {
+ right: -4px;
+}
+
+.mux_resizer.mux_resizer-direction-up .mux_resizer-area {
+ top: -4px;
+}
+
+.mux_resizer.mux_resizer-direction-down .mux_resizer-area {
+ bottom: -4px;
+}
+
+.mux_table {
+ width: 100%;
+ height: 100%;
+ overflow-y: auto;
+}
+
+.mux_table.mux_nopointer {
+ cursor: ew-resize;
+}
+
+.mux_table.mux_nopointer * {
+ pointer-events: none !important;
+}
+
+.mux_table table {
+ padding: 0px;
+ border-radius: 0px;
+ border-collapse: collapse;
+ user-select: none;
+ --row-even-color: #282828;
+ --row-odd-color: #222222;
+ --row-child-even-color: #181818;
+ --row-child-odd-color:#1c1c1c;
+}
+
+.mux_table table.mux_table-dragging tr {
+ opacity: 0.4;
+}
+
+.mux_table table.mux_table-dragging tr:first-child {
+ opacity: 1;
+}
+
+.mux_table table tr {
+ width: unset;
+ height: unset;
+ border: 0px;
+ background: transparent;
+ box-sizing: border-box;
+ border-left: 2px solid transparent;
+ border-right: 2px solid transparent;
+ outline: 2px solid transparent;
+ background: var(--row-even-color);
+ display: none;
+}
+
+.mux_table table tr:first-child {
+ display: table-row;
+ border: 0px;
+ background: transparent;
+}
+
+.mux_table table tr.mux_table-row-visible {
+ display: table-row;
+}
+
+.mux_table table tr.mux_table-row-odd {
+ background: var(--row-odd-color);
+}
+
+.mux_table table tr.mux_table-row-dragging {
+ opacity: 1;
+}
+
+.mux_table table tr.mux_table-row-selected {
+ background: #696969 !important;
+}
+
+.mux_table table tr.mux_table-row-selected .mux_text {
+ font-weight: 700;
+ font-style: italic;
+}
+
+.mux_table table tr.mux_table-row-active {
+ background: var(--highlight-border-color) !important;
+}
+
+.mux_table table tr.mux_table-row-active.mux_table-row-child {
+ background: var(--highlight-offset-color) !important;
+}
+
+.mux_table table tr.mux_table-row-outline {
+ border-left: 2px solid var(--highlight-color);
+ border-right: 2px solid var(--highlight-color);
+ outline: 2px solid var(--highlight-color);
+}
+
+.mux_table table tr.mux_table-row-child {
+ background: var(--row-child-even-color);
+}
+
+.mux_table table tr.mux_table-row-child.mux_table-row-odd {
+ background: var(--row-child-odd-color);
+}
+
+.mux_table table tr.mux_table-row-child td {
+ padding: 0px 5px;
+}
+
+.mux_table table tr.mux_table-row-child .mux_text {
+ color: #9d9d9d;
+ font-weight: 400 !important;
+}
+
+.mux_table table tr.mux_table-row-hidden {
+ display: none;
+}
+
+.mux_table table tr th,
+.mux_table table tr td {
+ padding: 2px 5px;
+ overflow: hidden;
+}
+
+.mux_table table tr th:first-child,
+.mux_table table tr td:first-child {
+ padding-left: var(--edge-offset);
+}
+
+.mux_table table tr th {
+ white-space: nowrap;
+ pointer-events: none;
+}
+
+.mux_table table tr th.mux_table-noborder, .mux_table table tr th:first-child {
+ border-left: 0px;
+}
+
+.mux_table table tr th .mux_table-center {
+ justify-content: center;
+}
+
+.mux_table table tr td .mux_table-edit-input {
+ position: absolute;
+ inset: 0px;
+ z-index: 2;
+ display: none;
+ justify-content: flex-start;
+ align-items: center;
+}
+
+.mux_table table tr td .mux_table-edit-input .mux_text {
+ padding: 0px !important;
+}
+
+.mux_table table tr td .mux_table-edit-input .mux_table-edit-input-prefix {
+ position: unset !important;
+ margin-left: 5px;
+ margin-right: -2px;
+}
+
+.mux_table table tr td .mux_table-edit-input input {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ margin: 0;
+}
+
+.mux_table table tr td .mux_table-image {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.mux_table table tr td .mux_table-image span {
+ font-size: 20px;
+}
+
+.mux_table table tr td .mux_table-text {
+ position: relative;
+ width: calc(100% + 10px);
+ height: 24px;
+ margin-left: -5px;
+ display: flex;
+ align-items: center;
+}
+
+.mux_table table tr td .mux_table-text.mux_table-center {
+ text-align: center;
+}
+
+.mux_table table tr td .mux_table-text .mux_text {
+ position: absolute;
+ inset: 0px;
+ z-index: 1;
+ padding: 0px 5px;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ white-space: nowrap;
+ font-weight: 600;
+}
+
+.mux_table table tr td .mux_table-text .mux_text span {
+ margin-right: 3px;
+}
+
+.mux_table table tr td .mux_table-text .mux_text span:last-child {
+ margin-right: 0px;
+}
+
+.mux_table table tr td .mux_table-text .mux_text .highlight {
+ color: var(--highlight-color);
+}
+
+.mux_table table tr td .mux_table-textsuggestions {
+ position: relative;
+}
+
+.mux_table table tr td .mux_table-textsuggestions span.material-symbols-outlined {
+ position: absolute;
+ right: 3px;
+}
+
+.mux_table table tr td .mux_table-textsuggestions .mux_input {
+ height: 24px;
+}
+
+.mux_table table tr td .mux_table-subtext {
+ margin-left: 5px;
+ color: #c9c9c9;
+ margin-top: -5px;
+ margin-bottom: 5px;
+ font-style: italic;
+}
+
+.mux_table table tr td .mux_table-number .mux_text {
+ justify-content: center;
+}
+
+.mux_table table tr td .mux_table-number input {
+ text-align: center;
+}
+
+.mux_table table tr td .mux_table-button {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+}
+
+.mux_table table tr td .mux_table-button .mux_table-button-btn {
+ font-size: 10px;
+ border: 1px solid var(--separator-color);
+ padding: 2px 4px;
+ border-radius: var(--rounding);
+ background: var(--panel-color);
+ cursor: pointer;
+ transition-duration: 0.2s;
+}
+
+.mux_table table tr td .mux_table-button .mux_table-button-btn:hover {
+ background: var(--separator-color);
+}
+
+.mux_table table tr td .mux_table-duration .mux_text {
+ justify-content: center;
+}
+
+.mux_table table tr td .mux_table-duration input {
+ text-align: center;
+}
+
+.mux_table table tr td .mux_table-select {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+}
+
+.mux_table table tr td .mux_table-select:hover .mux_table-select-arrow {
+ margin-top: 3px;
+}
+
+.mux_table table tr td .mux_table-select span {
+ font-size: 24px;
+}
+
+.mux_table table tr td .mux_table-select .mux_table-select-arrow {
+ font-size: 16px;
+ transition-duration: 0.1s;
+}
+
+.mux_table table tr td .mux_table-icons {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ cursor: pointer;
+ gap: 2px;
+}
+
+.mux_table table tr td .mux_table-icons .mux_table-icon {
+ width: 20px;
+ height: 20px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background: rgba(255, 255, 255, 0.0588235294);
+ border-radius: var(--rounding);
+ border: var(--clickable-border-transparent);
+ transition-duration: 0.2s;
+}
+
+.mux_table table tr td .mux_table-icons .mux_table-icon:hover {
+ border: var(--clickable-border-hovering);
+}
+
+.mux_table table tr td .mux_table-icons .mux_table-icon span {
+ font-size: 20px;
+}
+
+.mux_table table tr td .mux_table-property .mux_property-value {
+ height: 35px;
+}
+
+.mux_textarea {
+ width: 100%;
+ border: var(--mux-border-transparent);
+ background: inherit;
+ color: var(--mux-text-color);
+ padding: var(--mux-edge-offset);
+ font-size: 11px;
+ border-radius: var(--mux-rounding);
+ transition-duration: var(--mux-transition-hover);
+ box-sizing: border-box;
+ font-family: Montserrat, sans-serif;
+}
+
+.mux_textarea:hover {
+ border: var(--mux-border-hovering);
+}
+
+.mux_textarea:focus {
+ outline: none;
+ border: var(--mux-border-active);
+}
+
+.mux_textarea[disabled] {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+.mux_textarea.mux_textarea-alwaysborder {
+ border: var(--mux-border-hovering);
+}
+
+.mux_textarea.mux_textarea-noborder:hover, .mux_textarea.mux_textarea-noborder:focus {
+ border: var(--mux-border-transparent);
+}
+
+.mux_notifications {
+ position: fixed;
+ bottom: var(--mux-edge-offset);
+ right: var(--mux-edge-offset);
+ width: 400px;
+ max-width: calc(100% - var(--mux-edge-offset) * 2);
+ z-index: 100;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-end;
+ gap: var(--mux-edge-offset-tiny);
+ pointer-events: none;
+}
+
+.mux_notifications .mux_notification {
+ width: 100%;
+ box-sizing: border-box;
+ padding: var(--mux-edge-offset);
+ background: var(--mux-panel-color);
+ box-shadow: var(--mux-panel-shadow);
+ border-radius: var(--mux-rounding);
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: var(--mux-edge-offset);
+ opacity: 0;
+ transform: translateX(100%);
+ transition-duration: var(--mux-transition-animation);
+ pointer-events: auto;
+}
+
+.mux_notifications .mux_notification.mux_notification-info .mux_notification-icon {
+ color: #fff;
+}
+
+.mux_notifications .mux_notification.mux_notification-error .mux_notification-icon {
+ color: var(--mux-color-red);
+}
+
+.mux_notifications .mux_notification.mux_notification-warning .mux_notification-icon {
+ color: var(--mux-color-yellow);
+}
+
+.mux_notifications .mux_notification.mux_notification-success .mux_notification-icon {
+ color: var(--mux-color-green);
+}
+
+.mux_notifications .mux_notification .mux_text {
+ width: 100%;
+}
+
+.mux_notifications .mux_notification .mux_notification-action {
+ background: var(--mux-selected-color);
+ padding: 4px;
+ font-size: 18px;
+ border-radius: var(--mux-rounding);
+ transition-duration: var(--mux-transition-hover);
+ cursor: pointer;
+}
+
+.mux_notifications .mux_notification .mux_notification-action:hover {
+ opacity: 0.5;
+}
+
+.mux_loader {
+ position: fixed;
+ inset: 0px;
+ z-index: 101;
+ background: rgba(0, 0, 0, 0.6196078431);
+ backdrop-filter: blur(4px);
+ -webkit-backdrop-filter: blur(4px);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: calc(var(--mux-edge-offset) * 2);
+}
+
+.mux_loader .material-symbols-outlined {
+ font-size: 100px;
+ clip-path: polygon(0px 0px, 100% 0px, 100% 80%, 0px 80%);
+ animation: MuxLoader 2s linear infinite;
+ font-weight: 900;
+}
+
+.mux_loader .mux_loader-progress {
+ width: 150px;
+ height: 12px;
+ background: rgba(255, 255, 255, 0.0705882353);
+ border-radius: var(--mux-rounding);
+ overflow: hidden;
+}
+
+.mux_loader .mux_loader-progress .mux_loader-progress-value {
+ position: relative;
+ width: var(--progress);
+ height: 100%;
+ background: #fff;
+ transition-duration: var(--mux-transition-hover);
+ transition-timing-function: linear;
+}
+
+.mux_loader .mux_loader-progress .mux_loader-progress-value .mux_loader-progress-label {
+ position: absolute;
+ inset: 0px;
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ color: black;
+ padding-right: 3px;
+ font-family: monospace;
+ font-size: 12px;
+}
+
+@keyframes MuxLoader {
+ 0% {
+ transform: rotate(0deg);
+ clip-path: polygon(0px 0px, 100% 0px, 100% 40%, 0px 40%);
+ }
+ 50% {
+ clip-path: polygon(0px 0px, 100% 0px, 100% 60%, 0px 60%);
+ }
+ 100% {
+ transform: rotate(360deg);
+ clip-path: polygon(0px 0px, 100% 0px, 100% 40%, 0px 40%);
+ }
+}
+/* width */
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+/* Track */
+::-webkit-scrollbar-track {
+ background: rgba(255, 255, 255, 0.0588235294);
+}
+
+/* Handle */
+::-webkit-scrollbar-thumb {
+ background: #b8b8b8;
+}
+
+/* Handle on hover */
+::-webkit-scrollbar-thumb:hover {
+ background: #d6d6d6;
+}
+
+:root {
+ --mux-bg-color: #1e1e1e;
+ --mux-primary-color: #d73125;
+ --mux-primary-off-color: #ad271d;
+ --mux-secondary-color: #4b4b4b;
+ --mux-disabled-color: #2d2d2d;
+ --mux-selected-color: #434343;
+ --mux-panel-color: #2c2c2c;
+ --mux-panel-shadow: 0px 0px 4px #121212;
+ --mux-panel-sub-color: #313131;
+ --mux-border-width: 1px;
+ --mux-border-color: #444444;
+ --mux-border-transparent: var(--mux-border-width) solid transparent;
+ --mux-border-hovering: var(--mux-border-width) solid var(--mux-border-color);
+ --mux-border-active: var(--mux-border-width) solid var(--mux-primary-color);
+ --mux-header-size: 14px;
+ --mux-text-color: #ececec;
+ --mux-text-size-tiny: 10px;
+ --mux-text-size-small: 11px;
+ --mux-text-size-normal: 12px;
+ --mux-text-size-medium: 16px;
+ --mux-text-size-big: 20px;
+ --mux-text-weight: 400;
+ --mux-header-color: #ffffff;
+ --mux-header-size-tiny: 10px;
+ --mux-header-size-small: 12px;
+ --mux-header-size-normal: 14px;
+ --mux-header-size-big: 20px;
+ --mux-header-weight: 600;
+ --mux-transition-hover: .2s;
+ --mux-transition-animation: .4s;
+ --mux-edge-offset: 10px;
+ --mux-edge-offset-tiny: 5px;
+ --mux-rounding: 6px;
+ --mux-color-red: #d73125;
+ --mux-color-green: #4caf50;
+ --mux-color-blue: #2196f3;
+ --mux-color-yellow: #ffde3b;
+ --mux-color-orange: #ff9800;
+ --mux-color-purple: #673ab7;
+}
+
+body {
+ position: absolute;
+ inset: 0px;
+ margin: 0px;
+ border: 0px;
+ background: var(--mux-bg-color);
+ color: #fff;
+ font-family: "Montserrat", sans-serif;
+}
+
+
+.ntsh-topbar .ntsh_menubar {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 30px;
+}
+.ntsh-topbar .ntsh_menubar .ntsh_menubar-item {
+ padding: 10px 20px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+}
+.ntsh-topbar .ntsh_menubar .ntsh_menubar-item:hover {
+ background: #d7ccc1;
+}
+.ntsh-topbar .ntsh_menubar .ntsh_menubar-item.selected {
+ pointer-events: none;
+ opacity: 0.3;
+}
+.ntsh-topbar img {
+ width: 100%;
+}
+
+.ntsh-checklist {
+ width: 100%;
+ margin: 30px 0px;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 10px;
+}
+.ntsh-checklist .ntsh-checklist-row {
+ width: 100%;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 10px;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-status {
+ width: 20px;
+ height: 20px;
+ margin: 0px 10px;
+ border-radius: 100%;
+ background: rgba(0, 0, 0, 0.1411764706);
+ flex-shrink: 0;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-status.GREEN {
+ background: #1db100;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-status.RED {
+ background: #b10000;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-status.YELLOW {
+ background: #b1a100;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-status.GRAY {
+ background: #d5c7ba;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-text {
+ flex-grow: 1;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-buttons {
+ display: flex;
+ flex-direction: column;
+ gap: 3px;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-buttons .ntsh-checklist-row-button {
+ align-self: stretch;
+ display: none;
+ padding: 5px 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 12px;
+ text-align: center;
+}
+.ntsh-checklist .ntsh-checklist-row .ntsh-checklist-row-buttons .ntsh-checklist-row-button:hover {
+ background: #d7ccc1;
+}
+
+h1 {
+ font-size: 45px;
+ margin: 0px;
+ font-weight: 600;
+}
+
+h2 {
+ font-size: 24px;
+ margin: 0px 0px 5px 0px;
+}
+
+h3 {
+ font-size: 22px;
+ margin: 0px;
+ font-weight: 400;
+}
+
+h4 {
+ font-size: 14px;
+ margin: 0px;
+}
+
+p {
+ font-size: 14px;
+ margin: 0px;
+}
+
+.switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+}
+
+/* Hide default HTML checkbox */
+.switch input {
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+
+/* The slider */
+.slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: #ccc;
+ -webkit-transition: 0.4s;
+ transition: 0.4s;
+}
+
+.slider:before {
+ position: absolute;
+ content: "";
+ height: 26px;
+ width: 26px;
+ left: 4px;
+ bottom: 4px;
+ background-color: white;
+ -webkit-transition: 0.4s;
+ transition: 0.4s;
+}
+
+input:checked + .slider {
+ background-color: #2bc038;
+}
+
+input:focus + .slider {
+ box-shadow: 0 0 1px #2bc038;
+}
+
+input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+}
+
+/* Rounded sliders */
+.slider.round {
+ border-radius: 34px;
+}
+
+.slider.round:before {
+ border-radius: 50%;
+}
+
+.ntsh-fullreboot {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+}
+.ntsh-fullreboot .ntsh-fullreboot-button {
+ padding: 20px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ background: #ff644e;
+ font-size: 25px;
+ font-weight: 800;
+ letter-spacing: -1px;
+}
+.ntsh-fullreboot .ntsh-fullreboot-button:hover {
+ background: #be4939;
+}
+
+.ntsh-support {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 20px;
+ margin-top: 30px;
+}
+.ntsh-support img {
+ height: 50px;
+ cursor: pointer;
+ transition-duration: 0.2s;
+}
+.ntsh-support img:hover {
+ filter: brightness(0.8);
+}
+
+.ntsh-calibration {
+ width: 100%;
+ margin: 30px 0px;
+}
+.ntsh-calibration img {
+ width: 100%;
+}
+
+.ntsh_callanchor {
+ width: 100%;
+ display: block;
+ background: #454545;
+ text-align: center;
+ padding: 10px 0px;
+ font-size: 40px;
+ color: #fff;
+}
+
+.ntsh-outofservicemode {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+ margin-top: 30px;
+}
+
+.ntsh-timer {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 10px;
+ margin-top: 30px;
+}
+.ntsh-timer .ntsh-timer-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+}
+.ntsh-timer .ntsh-timer-row h4 {
+ width: 85px;
+}
+.ntsh-timer .ntsh-timer-row input[type=time] {
+ position: relative;
+ padding: 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 20px;
+}
+.ntsh-timer .ntsh-timer-row input[type=time]::-webkit-calendar-picker-indicator {
+ background: transparent;
+ bottom: 0;
+ color: transparent;
+ cursor: pointer;
+ height: auto;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+}
+
+.ntsh-autolighting {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+ margin: 30px 0px;
+}
+
+.ntsh_lightingsettings-container {
+ width: 100%;
+}
+.ntsh_lightingsettings-container.disabled {
+ opacity: 0.3;
+ pointer-events: none;
+}
+.ntsh_lightingsettings-container h3 {
+ margin-bottom: 10px;
+}
+.ntsh_lightingsettings-container .ntsh_lightingsettings {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 5px;
+}
+.ntsh_lightingsettings-container .ntsh_lightingsettings .ntsh_lightingsettings-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+}
+.ntsh_lightingsettings-container .ntsh_lightingsettings .ntsh_lightingsettings-row h4 {
+ width: 120px;
+}
+.ntsh_lightingsettings-container .ntsh_lightingsettings .ntsh_lightingsettings-row input {
+ position: relative;
+ padding: 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 20px;
+}
+.ntsh_lightingsettings-container .ntsh_lightingsettings .ntsh_lightingsettings-row input::-webkit-calendar-picker-indicator {
+ background: transparent;
+ bottom: 0;
+ color: transparent;
+ cursor: pointer;
+ height: auto;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+}
+
+.ntsh_soundsettings {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ gap: 5px;
+}
+.ntsh_soundsettings.disabled {
+ opacity: 0.3;
+ pointer-events: none;
+}
+.ntsh_soundsettings .ntsh_soundsettings-row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 20px;
+}
+.ntsh_soundsettings .ntsh_soundsettings-row h4 {
+ width: 120px;
+}
+.ntsh_soundsettings .ntsh_soundsettings-row input {
+ padding: 10px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+ font-size: 20px;
+}
+.ntsh_soundsettings .ntsh_soundsettings-row input::-webkit-calendar-picker-indicator {
+ background: transparent;
+ bottom: 0;
+ color: transparent;
+ cursor: pointer;
+ height: auto;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+}
+
+.ntsh_soundsettings-resetcontainer {
+ width: 100%;
+ display: flex;
+ justify-content: flex-end;
+ margin-bottom: 30px;
+}
+.ntsh_soundsettings-resetcontainer .ntsh_soundsettings-reset {
+ padding: 10px 20px;
+ border: 2px solid #000;
+ font-weight: 500;
+ transition-duration: 0.2s;
+ cursor: pointer;
+}
+.ntsh_soundsettings-resetcontainer .ntsh_soundsettings-reset:hover {
+ background: #d7ccc1;
+}
+
+@font-face {
+ font-family: Roboto;
+ src: url(/font/Roboto-VariableFont_wdth,wght.ttf) format("truetype");
+}
+@font-face {
+ font-family: ScothBrace;
+ src: url(/font/ScothBrace.ttf) format("truetype");
+}
+@font-face {
+ font-family: RidleyGrotesk;
+ src: url(/font/RidleyGrotesk-Bold.otf) format("opentype");
+ font-weight: bold;
+}
+@font-face {
+ font-family: RidleyGrotesk;
+ src: url(/font/RidleyGrotesk-Regular.otf) format("opentype");
+ font-weight: normal;
+}
+body {
+ position: absolute;
+ inset: 0px;
+ margin: 0px;
+ padding: 0px;
+ color: #000;
+ font-family: RidleyGrotesk, sans-serif;
+ background: #E1EAF6;
+}
+
+.ntsh {
+ position: absolute;
+ inset: 0px;
+ overflow-y: scroll;
+}
+.ntsh .ntsh-wrapper {
+ width: 100%;
+ min-height: 100%;
+ background: linear-gradient(0deg, #E1EAF6, #F9E7D6);
+}
+.ntsh .ntsh-wrapper .ntsh-inlay {
+ width: min(800px, 100% - 40px);
+ margin: 0 auto;
+}
+
+.ntsh_tabs {
+ width: 100%;
+}
+.ntsh_tabs .ntsh_tab {
+ width: 100%;
+ display: none;
+}
+.ntsh_tabs .ntsh_tab.visible {
+ display: block;
+}
+
+.ntsh-separator {
+ width: 100%;
+ border-bottom: 10px dotted #000;
+ margin: 30px 0px;
+}
+
+/*# sourceMappingURL=style.css.map */
diff --git a/frontend/views/control/style.css.map b/frontend/views/control/style.css.map
new file mode 100644
index 0000000..d9473f0
--- /dev/null
+++ b/frontend/views/control/style.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["node_modules/morphux/style.css","scss/topbar.scss","scss/checklist.scss","scss/text.scss","scss/switch.scss","scss/home.scss","scss/advanced.scss","scss/index.scss"],"names":[],"mappings":"AAAQ;AACR;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAGF;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAGJ;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;AAAA;EAEE;EACA;;;AAEF;AAAA;EAEE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;IACA;;EAEF;IACE;;EAEF;IACE;IACA;;;AAGJ;AACA;EACE;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;EACE;;;AAGF;AACA;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;;ACh+DE;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAKZ;EACI;;;AC3BR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAIR;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AChEpB;EACI;EACA;EACA;;;AAIJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;ACzBJ;EACI;EACA;EACA;EACA;;;AAGJ;AACA;EACI;EACA;EACA;;;AAGJ;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;;;AAGJ;AACA;EACI;;;AAGJ;EACI;;;AC3DJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAMZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEA;EACI;;;AAKZ;EACI;EACA;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AC1DJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOhB;EACI;EACA;EACA;EACA;EACA;;;AAIJ;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOpB;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMhB;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AC3KZ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA;;;AAKZ;EACI;;AAEA;EACI;EACA;;AAEA;EACI;;;AAKZ;EACI;EACA;EACA","file":"style.css"}
\ No newline at end of file
diff --git a/frontend/views/control/ts/calibration.ts b/frontend/views/control/ts/calibration.ts
new file mode 100644
index 0000000..f7e3aae
--- /dev/null
+++ b/frontend/views/control/ts/calibration.ts
@@ -0,0 +1,41 @@
+import { Main } from './main';
+
+export class Calibration {
+ private _Main: Main;
+
+ observer: IntersectionObserver;
+ visible: boolean = false;
+
+ container: HTMLDivElement = document.querySelector('.ntsh-calibration');
+ image: HTMLImageElement = this.container.querySelector('img');
+
+ constructor(Main: Main) {
+ this._Main = Main;
+
+ this.registerListeners();
+
+ this.startClock();
+ }
+
+ private startClock() {
+ setInterval(() => {
+ if (this.visible && this.image)
+ this.image.src = `/calibrationImage?t=${Date.now()}`;
+ }, 1000);
+ }
+
+ private registerListeners() {
+ this.observer = new IntersectionObserver((entries) => {
+ entries.forEach((entry) => {
+ if (entry.isIntersecting) {
+ this.visible = true;
+ console.log('Calibration visible');
+ } else {
+ this.visible = false;
+ console.log('Calibration not visible');
+ }
+ });
+ });
+ this.observer.observe(this.container);
+ }
+}
diff --git a/frontend/views/control/ts/checklist.ts b/frontend/views/control/ts/checklist.ts
new file mode 100644
index 0000000..746f084
--- /dev/null
+++ b/frontend/views/control/ts/checklist.ts
@@ -0,0 +1,146 @@
+import { Main } from './main';
+import { MorphFeature } from 'morphux';
+
+export class Checklist {
+ private _Main: Main;
+
+ Rows = {
+ CAMERAPC: document.querySelector(
+ `.ntsh-checklist-row[status="CAMERAPC"]`,
+ ) as HTMLDivElement,
+ CAMERAPROCESS: document.querySelector(
+ `.ntsh-checklist-row[status="CAMERAPROCESS"]`,
+ ) as HTMLDivElement,
+ CAMERAUNITYSTREAM: document.querySelector(
+ `.ntsh-checklist-row[status="CAMERAUNITYSTREAM"]`,
+ ) as HTMLDivElement,
+ UNITYBUILD: document.querySelector(
+ `.ntsh-checklist-row[status="UNITYBUILD"]`,
+ ) as HTMLDivElement,
+ REPLAYFUNCTION: document.querySelector(
+ `.ntsh-checklist-row[status="REPLAYFUNCTION"]`,
+ ) as HTMLDivElement,
+ };
+ FullReboot: HTMLDivElement = document.querySelector(
+ '.ntsh-fullreboot-button',
+ );
+
+ constructor(Main: Main) {
+ this._Main = Main;
+
+ this.registerListeners();
+ }
+
+ update(status: Status) {
+ this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);
+ this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);
+ this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);
+ this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);
+ this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);
+ console.log('Updated checklist:', status);
+ }
+
+ updateRow(row: HTMLDivElement, state: StateEntry) {
+ const status: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-status',
+ );
+ const message: HTMLDivElement = row.querySelector('p');
+
+ const startButton: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-button.start',
+ );
+ const stopButton: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-button.stop',
+ );
+ const rebootButton: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-button.reboot',
+ );
+
+ status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');
+ status.classList.add(state.state);
+
+ message.innerText = state.message;
+
+ startButton.style.display = state.buttons?.start ? 'block' : 'none';
+ stopButton.style.display = state.buttons?.stop ? 'block' : 'none';
+ rebootButton.style.display = state.buttons?.reboot ? 'block' : 'none';
+ }
+
+ private registerListeners() {
+ this.FullReboot.onclick = () => {
+ MorphFeature.Confirm(
+ {
+ title: 'Full Reboot',
+ message: 'Are you sure you want to perform a full reboot?',
+ },
+ (state) => {
+ if (!state) return;
+ this._Main.socket.emit('status', 'fullreboot');
+ },
+ );
+ };
+
+ for (const key in this.Rows) {
+ const row = this.Rows[key];
+
+ const startButton: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-button.start',
+ );
+ startButton.onclick = () =>
+ MorphFeature.Confirm(
+ {
+ title: 'Start',
+ message: 'Are you sure you want to start?',
+ },
+ (state) => {
+ if (!state) return;
+ this._Main.socket.emit('status', 'start', key);
+ },
+ );
+
+ const stopButton: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-button.stop',
+ );
+ stopButton.onclick = () =>
+ MorphFeature.Confirm(
+ {
+ title: 'Stop',
+ message: 'Are you sure you want to stop?',
+ },
+ (state) => {
+ if (!state) return;
+ this._Main.socket.emit('status', 'stop', key);
+ },
+ );
+
+ const rebootButton: HTMLDivElement = row.querySelector(
+ '.ntsh-checklist-row-button.reboot',
+ );
+ rebootButton.onclick = () =>
+ MorphFeature.Confirm(
+ {
+ title: 'Reboot',
+ message: 'Are you sure you want to reboot?',
+ },
+ (state) => {
+ if (!state) return;
+ this._Main.socket.emit('status', 'reboot', key);
+ },
+ );
+ }
+ }
+}
+
+interface Status {
+ CAMERAPC: StateEntry;
+ CAMERAPROCESS: StateEntry;
+ CAMERAUNITYSTREAM: StateEntry;
+ UNITYBUILD: StateEntry;
+ REPLAYFUNCTION: StateEntry;
+}
+
+interface StateEntry {
+ state: 'GREEN' | 'RED' | 'YELLOW' | 'GRAY';
+ message: string;
+ buttons?: { reboot?: boolean; start?: boolean; stop?: boolean };
+}
diff --git a/frontend/views/control/ts/main.ts b/frontend/views/control/ts/main.ts
new file mode 100644
index 0000000..3c687d0
--- /dev/null
+++ b/frontend/views/control/ts/main.ts
@@ -0,0 +1,180 @@
+import { io } from 'socket.io-client';
+import { Menu } from './menu';
+import { Checklist } from './checklist';
+import { Calibration } from './calibration';
+import { ce, MorphComponent, MorphFeature } from 'morphux';
+import { OutOfServiceMode } from './outOfServiceMode';
+import { Timer } from './timer';
+
+const socket = io('/');
+
+export class Main {
+ Menu = new Menu();
+ CheckList = new Checklist(this);
+ Calibration = new Calibration(this);
+ OutOfServiceMode = new OutOfServiceMode(this);
+ Timer = new Timer(this);
+
+ socket = socket;
+
+ supportButton: HTMLDivElement = document.querySelector('.ntsh-support img');
+ supportNumber: string = '';
+
+ constructor() {
+ this.registerListeners();
+ }
+
+ private registerListeners() {
+ this.supportButton.onclick = () => this.showSupport();
+
+ socket.on('status', (data) => {
+ this.CheckList.update(data);
+ });
+
+ socket.on('supportNumber', (number: string) => {
+ this.supportNumber = number;
+ });
+
+ socket.on('unityWebSocketState', (state: UnityWebSocketStatus) => {
+ this.OutOfServiceMode.input.checked =
+ state?.parameters?.outOfService ?? false;
+ this.OutOfServiceMode.state =
+ state?.parameters?.outOfService ?? false;
+ });
+
+ socket.on('timer', (data) => {
+ this.Timer.update(data);
+ });
+ }
+
+ async executeCommand(
+ command: string,
+ message: string,
+ type: 'unityRunner' | 'unityWebSocket' = 'unityRunner',
+ ): Promise {
+ return new Promise(async (resolve) => {
+ const confirmed = await MorphFeature.Confirm({
+ title: 'Are you sure?',
+ message,
+ });
+ if (!confirmed) return resolve(false);
+
+ MorphFeature.Loader({
+ active: true,
+ message: `Dispatching command...`,
+ });
+ socket.emit(
+ type,
+ command,
+ (response: { succeed: boolean; message?: string }) => {
+ MorphFeature.Loader({ active: false });
+
+ if (!response.succeed)
+ return MorphFeature.Alert({
+ title: 'Error',
+ message: response.message,
+ });
+
+ MorphFeature.Notification({
+ level: 'success',
+ message: `Dispatched command`,
+ });
+ },
+ );
+ resolve(true);
+ });
+ }
+
+ async showSupport() {
+ const dialog = new MorphComponent.Dialog({
+ title: 'Contact Support',
+ width: 'medium',
+ height: 'auto',
+ okButtonVisible: false,
+ cancelButtonVisible: false,
+ });
+
+ this.supportNumber.slice();
+ const callAnchor = ce(
+ 'a',
+ 'ntsh_callanchor',
+ { href: `tel:${this.supportNumber}` },
+ `+${this.supportNumber}`,
+ );
+ dialog.content.appendChild(callAnchor);
+
+ setTimeout(() => callAnchor.click(), 100);
+ }
+}
+
+const _Main = new Main();
+
+export type ServiceState =
+ | 'CONNECTING'
+ | 'CONNECTED'
+ | 'DISCONNECTED'
+ | 'FAILED';
+
+interface UnityWebSocketStatus {
+ state: ServiceState;
+ message?: string;
+ error?: string;
+
+ parameters: UnityParameters;
+}
+
+interface UnityParameters {
+ timelineWatching: boolean;
+ timelineStanding: boolean;
+ timelineProgress: number;
+ zedPath: string;
+ zedReady: boolean;
+ zedFPS: string;
+ outOfService: boolean;
+ sliders: UnityParameterSlider[];
+ advancedSliders: UnityParameterSlider[];
+ sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
+}
+
+type UnityHeartbeatSlider =
+ UnitySocketMessageHeartbeat['heartbeat']['dataSliders'][number];
+interface UnityParameterSlider extends UnityHeartbeatSlider {
+ visualMultiplier: number;
+ decimalPlaces: number;
+}
+
+interface UnitySocketMessageBase {
+ type: string;
+ timestamp: number;
+}
+interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
+ type: 'heartbeat_data';
+ heartbeat: {
+ dataSensors: {
+ sensorIndex: number;
+ deviceName: string;
+ outputValue: number;
+ }[];
+ dataSliders: {
+ sliderIndex: number;
+ sliderName: string;
+ outputValue: number;
+ min: number;
+ max: number;
+ unit: string;
+ }[];
+ dataTimeline: {
+ isStanding: boolean;
+ isWatching: boolean;
+ timelineProgress: number;
+ };
+ zedCamera: {
+ cameraFPS: string;
+ isZedReady: boolean;
+ streamInputIP: string;
+ streamInputPort: number;
+ zedGrabError: number;
+ };
+ showOutOfService?: boolean;
+ };
+}
diff --git a/frontend/views/control/ts/menu.ts b/frontend/views/control/ts/menu.ts
new file mode 100644
index 0000000..5b62fa5
--- /dev/null
+++ b/frontend/views/control/ts/menu.ts
@@ -0,0 +1,42 @@
+export class Menu {
+ menuContainer: HTMLDivElement = document.querySelector('.ntsh_menubar');
+ tabContainer: HTMLDivElement = document.querySelector('.ntsh_tabs');
+
+ constructor() {
+ this.registerListeners();
+
+ if (window.location.search.includes('advanced'))
+ this.selectTab('advanced');
+ }
+
+ selectTab(tabId: string) {
+ this.menuContainer
+ .querySelectorAll('.ntsh_menubar-item')
+ .forEach((item) => {
+ if (item.getAttribute('tabid') === tabId) {
+ item.classList.add('selected');
+ } else {
+ item.classList.remove('selected');
+ }
+ });
+
+ this.tabContainer.querySelectorAll('.ntsh_tab').forEach((tab) => {
+ if (tab.getAttribute('tabid') === tabId) {
+ tab.classList.add('visible');
+ } else {
+ tab.classList.remove('visible');
+ }
+ });
+ }
+
+ private registerListeners() {
+ this.menuContainer
+ .querySelectorAll('.ntsh_menubar-item')
+ .forEach((item) => {
+ item.addEventListener('click', () => {
+ const itemId = item.getAttribute('tabid');
+ this.selectTab(itemId);
+ });
+ });
+ }
+}
diff --git a/frontend/views/control/ts/outOfServiceMode.ts b/frontend/views/control/ts/outOfServiceMode.ts
new file mode 100644
index 0000000..88890bd
--- /dev/null
+++ b/frontend/views/control/ts/outOfServiceMode.ts
@@ -0,0 +1,29 @@
+import { MorphComponent } from 'morphux';
+import { Main } from './main';
+
+export class OutOfServiceMode {
+ private _Main: Main;
+
+ state: boolean = false;
+ input: HTMLInputElement = document.querySelector(
+ '.ntsh-outofservicemode-input',
+ );
+
+ constructor(Main: Main) {
+ this._Main = Main;
+
+ this.registerListeners();
+ }
+
+ private registerListeners() {
+ this.input.addEventListener('change', async () => {
+ const valid = await this._Main.executeCommand(
+ this.state ? 'disableOutOfService' : 'enableOutOfService',
+ `Are you sure you want to set the installation to "${this.state ? 'Out of Service' : 'Operational'}"?`,
+ 'unityWebSocket',
+ );
+ if (!valid) this.input.checked = this.state;
+ this.state = this.input.checked;
+ });
+ }
+}
diff --git a/frontend/views/control/ts/timer.ts b/frontend/views/control/ts/timer.ts
new file mode 100644
index 0000000..e5fd137
--- /dev/null
+++ b/frontend/views/control/ts/timer.ts
@@ -0,0 +1,36 @@
+import { Main } from './main';
+
+export class Timer {
+ private _Main: Main;
+
+ startup: HTMLInputElement = document.querySelector('.ntsh-timer-startup');
+ shutdown: HTMLInputElement = document.querySelector('.ntsh-timer-shutdown');
+
+ constructor(Main: Main) {
+ this._Main = Main;
+
+ this.registerListeners();
+ }
+
+ update(data: {
+ start: { hour: number; minute: number };
+ end: { hour: number; minute: number };
+ }) {
+ const start = `${data.start.hour.toString().padStart(2, '0')}:${data.start.minute.toString().padStart(2, '0')}`;
+ const end = `${data.end.hour.toString().padStart(2, '0')}:${data.end.minute.toString().padStart(2, '0')}`;
+
+ this.startup.value = start;
+ this.shutdown.value = end;
+ }
+
+ registerListeners() {
+ this.startup.onchange = () => {
+ const [hour, minute] = this.startup.value.split(':').map(Number);
+ this._Main.socket.emit('setTimerStart', { hour, minute });
+ };
+ this.shutdown.onchange = () => {
+ const [hour, minute] = this.shutdown.value.split(':').map(Number);
+ this._Main.socket.emit('setTimerEnd', { hour, minute });
+ };
+ }
+}
diff --git a/frontend/views/control/tsconfig.json b/frontend/views/control/tsconfig.json
new file mode 100644
index 0000000..4f1714c
--- /dev/null
+++ b/frontend/views/control/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "compilerOptions": {
+ "outDir": "dist",
+ "sourceMap": true
+ },
+ "include": [
+ "ts/**/*"
+ ]
+}
\ No newline at end of file
diff --git a/frontend/views/dashboard/index.html b/frontend/views/dashboard/index.html
index 77f70d4..37382ff 100644
--- a/frontend/views/dashboard/index.html
+++ b/frontend/views/dashboard/index.html
@@ -7,8 +7,8 @@
NTSH Control
-
-
+
+
diff --git a/package-lock.json b/package-lock.json
index 66c7553..9a49fbf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "ntshcontrol",
- "version": "1.0.0",
+ "version": "2026.3.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ntshcontrol",
- "version": "1.0.0",
+ "version": "2026.3.1",
"license": "ISC",
"dependencies": {
"@types/express": "^5.0.3",
@@ -15,6 +15,7 @@
"@types/ws": "^8.18.1",
"express": "^5.1.0",
"fs-extra": "^11.3.2",
+ "naudiodon": "^2.3.6",
"ping": "^1.0.0",
"socket.io": "^4.8.1",
"socket.io-client": "^4.8.1",
@@ -221,6 +222,14 @@
"node": "^4.5.0 || >= 5.9"
}
},
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
"node_modules/body-parser": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
@@ -691,6 +700,11 @@
"url": "https://opencollective.com/express"
}
},
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
+ },
"node_modules/finalhandler": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
@@ -1125,6 +1139,21 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
+ "node_modules/nan": {
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz",
+ "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g=="
+ },
+ "node_modules/naudiodon": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/naudiodon/-/naudiodon-2.3.6.tgz",
+ "integrity": "sha512-6NWMV4lAdBSoHIh3jcXG/tjCzBLCafh6uuhwUdtDbPbj8xVJ8FOgKi6lU0rkHrW22Up5AFIrWPSiAhGOxmhEQQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "segfault-handler": "^1.3.0"
+ }
+ },
"node_modules/negotiator": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
@@ -1326,6 +1355,16 @@
"integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==",
"license": "BSD-3-Clause"
},
+ "node_modules/segfault-handler": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/segfault-handler/-/segfault-handler-1.3.0.tgz",
+ "integrity": "sha512-p7kVHo+4uoYkr0jmIiTBthwV5L2qmWtben/KDunDZ834mbos+tY+iO0//HpAJpOFSQZZ+wxKWuRo4DxV02B7Lg==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "bindings": "^1.2.1",
+ "nan": "^2.14.0"
+ }
+ },
"node_modules/semver": {
"version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
diff --git a/package.json b/package.json
index 969051f..022d487 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ntshcontrol",
- "version": "2025.11.2",
+ "version": "2026.3.1",
"main": "dist/Entry.js",
"scripts": {
"start": "node ."
@@ -15,10 +15,11 @@
"@types/ws": "^8.18.1",
"express": "^5.1.0",
"fs-extra": "^11.3.2",
+ "naudiodon": "^2.3.6",
"ping": "^1.0.0",
"socket.io": "^4.8.1",
"socket.io-client": "^4.8.1",
"twilio": "^5.10.3",
"ws": "^8.18.3"
}
-}
\ No newline at end of file
+}
diff --git a/src/Audio.ts b/src/Audio.ts
new file mode 100644
index 0000000..19687fc
--- /dev/null
+++ b/src/Audio.ts
@@ -0,0 +1,112 @@
+import { pathExistsSync, readJSONSync, writeFile } from 'fs-extra';
+import { Main } from './Main';
+import { join } from 'path';
+const portAudio = require('naudiodon');
+
+const PREFIX = '[Audio]';
+export class AudioChecker {
+ private _Main: Main;
+
+ private configPath: string;
+
+ deviceName: string = null;
+
+ constructor(Main: Main) {
+ this._Main = Main;
+
+ this.configPath = join(this._Main.dataPath, 'audio.json');
+ this.load();
+ }
+
+ async waitForDevice() {
+ if ((this.deviceName ?? '').trim().length == 0) {
+ console.log(
+ PREFIX,
+ 'No audio device configured, skipping audio check. Available devices:',
+ );
+
+ portAudio
+ .getDevices()
+ .filter((device) => device.maxOutputChannels > 0)
+ .forEach((device) => {
+ console.log(` - ${device.name}`);
+ });
+ return;
+ }
+
+ console.log(PREFIX, `Waiting for device "${this.deviceName}"...`);
+
+ let counter = 0;
+ return new Promise((resolve) => {
+ const c = setInterval(() => {
+ counter++;
+ const availableDevices = portAudio
+ .getDevices()
+ .filter((device) => device.maxOutputChannels > 0)
+ .map((device) => device.name);
+
+ if (!availableDevices.includes(this.deviceName)) {
+ if (counter == 3) {
+ console.log(
+ PREFIX,
+ 'Trouble finding the correct device. Available devices:',
+ );
+ availableDevices.forEach((device) => {
+ console.log(` - ${device}`);
+ });
+ }
+ return;
+ }
+
+ const hostApis = portAudio.getHostAPIs();
+ const defaultOutputDeviceId =
+ hostApis.HostAPIs[hostApis.defaultHostAPI].defaultOutput;
+ const defaultOutputDeviceName = portAudio
+ .getDevices()
+ .find(
+ (device) => device.id === defaultOutputDeviceId,
+ )?.name;
+ if (defaultOutputDeviceName !== this.deviceName) {
+ console.warn(
+ PREFIX,
+ `The configured device "${this.deviceName}" is not set as the default output device. Please set it as the default output device to ensure proper functionality. Current default output device: "${defaultOutputDeviceName}".`,
+ );
+ this._Main.Twilio.sendError(
+ 'Audio',
+ `The configured device "${this.deviceName}" is not set as the default output device. Current default output device: "${defaultOutputDeviceName}".`,
+ );
+ return;
+ }
+
+ clearInterval(c);
+ resolve();
+ console.log(PREFIX, `Device "${this.deviceName}" is ready!`);
+ }, 1000);
+ });
+ }
+
+ load() {
+ console.log(PREFIX, 'Loading audio configuration...');
+ const exists = pathExistsSync(this.configPath);
+ if (!exists) return this.save();
+
+ const data = readJSONSync(this.configPath);
+ this.deviceName = data.deviceName;
+ }
+
+ private _save: NodeJS.Timeout;
+ async save() {
+ if (this._save) clearTimeout(this._save);
+
+ this._save = setTimeout(async () => {
+ writeFile(
+ this.configPath,
+ JSON.stringify(
+ { deviceName: this.deviceName ?? null },
+ null,
+ 4,
+ ),
+ );
+ }, 1000);
+ }
+}
diff --git a/src/CameraRunner.ts b/src/CameraRunner.ts
index e69a464..b77376e 100644
--- a/src/CameraRunner.ts
+++ b/src/CameraRunner.ts
@@ -1,6 +1,7 @@
import { io, Socket } from 'socket.io-client';
import { Main } from './Main';
import { delay, ServiceState } from './Utils';
+import { State, StatusType } from './Status';
const PREFIX = `[CameraRunner]`;
export class CameraRunner {
@@ -43,7 +44,7 @@ export class CameraRunner {
sendCommand(
command: 'reboot' | 'restart',
- callback: (response: { succeed: boolean; message?: string }) => void
+ callback: (response: { succeed: boolean; message?: string }) => void,
) {
if (this.socket == null || !this.socket.connected)
return callback({
@@ -55,7 +56,7 @@ export class CameraRunner {
command,
(response: { succeed: boolean; message?: string }) => {
callback(response);
- }
+ },
);
}
@@ -77,6 +78,18 @@ export class CameraRunner {
this.message = message;
this.error = error;
this.state = state;
+
+ this._Main.Status.update(
+ StatusType.CameraPC,
+ CameraPCStateColors[this.state],
+ message,
+ {
+ reboot:
+ state === 'FAILED' ||
+ state === 'DISCONNECTED' ||
+ state == 'CONNECTED',
+ },
+ );
this.broadcastState();
if (
@@ -95,11 +108,23 @@ export class CameraRunner {
const poll = async () => {
const data: ProcessStatus = await new Promise((resolve) => {
this.socket.emit('getStatus', (response: ProcessStatus) =>
- resolve(response)
+ resolve(response),
);
});
this.processStatus = data;
+ this._Main.Status.update(
+ StatusType.CameraProcess,
+ CameraProcessStateColors[this.processStatus.state],
+ this.processStatus.message,
+ {
+ reboot:
+ this.processStatus.state === 'PROBLEM' ||
+ this.processStatus.state === 'STOPPED' ||
+ this.processStatus.state === 'RUNNING',
+ },
+ );
+
this.broadcastState();
};
@@ -107,13 +132,24 @@ export class CameraRunner {
this.processStatus.state = simpleStatus.state;
this.processStatus.message = simpleStatus.message;
this.processStatus.error = simpleStatus.error;
+ this._Main.Status.update(
+ StatusType.CameraProcess,
+ CameraProcessStateColors[this.processStatus.state],
+ this.processStatus.message,
+ {
+ reboot:
+ this.processStatus.state === 'PROBLEM' ||
+ this.processStatus.state === 'STOPPED' ||
+ this.processStatus.state === 'RUNNING',
+ },
+ );
this.broadcastState();
});
clearInterval(this.pollClock);
this.pollClock = setInterval(
() => poll(),
- this._Main.Config.cameraRunner.pollInterval
+ this._Main.Config.cameraRunner.pollInterval,
);
poll();
}
@@ -146,7 +182,7 @@ export class CameraRunner {
if (ip == null || port == null) {
return this.setInfo(
'Connection problem',
- 'Camera Runner WebSocket IP or port is not configured.'
+ 'Camera Runner WebSocket IP or port is not configured.',
);
}
@@ -165,7 +201,7 @@ export class CameraRunner {
this.setInfo(
'Disconnected',
'Camera Runner was disconnected unexpectedly',
- 'DISCONNECTED'
+ 'DISCONNECTED',
);
this.reconnect();
});
@@ -210,6 +246,19 @@ interface CameraRunnerStatus {
export type ProcessStatusState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
+export const CameraPCStateColors: Record = {
+ CONNECTED: State.Green,
+ DISCONNECTED: State.Gray,
+ CONNECTING: State.Yellow,
+ FAILED: State.Red,
+};
+export const CameraProcessStateColors: Record = {
+ RUNNING: State.Green,
+ STOPPED: State.Gray,
+ STARTING: State.Yellow,
+ PROBLEM: State.Red,
+};
+
interface ProcessStatusSimple {
state: ProcessStatusState;
message?: string;
diff --git a/src/Configuration/ConfigurationManager.ts b/src/Configuration/ConfigurationManager.ts
index cc4347f..0fd5443 100644
--- a/src/Configuration/ConfigurationManager.ts
+++ b/src/Configuration/ConfigurationManager.ts
@@ -21,7 +21,7 @@ export class ConfigurationManager {
if (!configExists) {
await writeFile(
configPath,
- JSON.stringify(DefaultConfiguration, null, 4)
+ JSON.stringify(DefaultConfiguration, null, 4),
);
this._Main.Config = DefaultConfiguration;
console.log(PREFIX, 'Written default configuration');
@@ -36,7 +36,7 @@ export class ConfigurationManager {
async validateConfig(config: Config): Promise {
const normalizedConfig: Config = this.normalizeConfig(
config,
- DefaultConfiguration
+ DefaultConfiguration,
);
const hasChanges =
JSON.stringify(config) !== JSON.stringify(normalizedConfig);
@@ -47,7 +47,7 @@ export class ConfigurationManager {
const configPath = join(this._Main.dataPath, 'config.json');
await writeFile(
configPath,
- JSON.stringify(normalizedConfig, null, 4)
+ JSON.stringify(normalizedConfig, null, 4),
);
console.log(PREFIX, 'Configuration updated and saved');
}
@@ -73,7 +73,7 @@ export class ConfigurationManager {
!Array.isArray(template[0])
) {
return current.map((item) =>
- this.normalizeConfig(item, template[0])
+ this.normalizeConfig(item, template[0]),
);
}
return current;
@@ -89,7 +89,7 @@ export class ConfigurationManager {
if (template.hasOwnProperty(key)) {
result[key] = this.normalizeConfig(
current?.[key],
- template[key]
+ template[key],
);
}
}
@@ -130,6 +130,7 @@ export interface ConfigUnity {
heartbeatInterval: number;
calibrationImageInterval: number;
+ launchOnStartup: boolean;
}
export interface ConfigCameraRunner {
diff --git a/src/Configuration/DefaultConfiguration.ts b/src/Configuration/DefaultConfiguration.ts
index 49389ec..10b921a 100644
--- a/src/Configuration/DefaultConfiguration.ts
+++ b/src/Configuration/DefaultConfiguration.ts
@@ -22,6 +22,7 @@ export const DefaultConfiguration: Config = {
heartbeatInterval: 1000,
calibrationImageInterval: 2000,
+ launchOnStartup: true,
},
cameraRunner: {
webSocket: {
diff --git a/src/Configuration/Timer.ts b/src/Configuration/Timer.ts
new file mode 100644
index 0000000..032b075
--- /dev/null
+++ b/src/Configuration/Timer.ts
@@ -0,0 +1,113 @@
+import { join } from 'path';
+import { Main } from '../Main';
+import { pathExists, readJSON, writeFile, writeJSON } from 'fs-extra';
+import { StartOrigin } from '../Unity/UnityRunner';
+
+const PREFIX = '[Main]';
+export class Timer {
+ private _Main: Main;
+
+ private configPath: string;
+
+ private start: {
+ hour: number;
+ minute: number;
+ } = {
+ hour: null,
+ minute: null,
+ };
+ private end: {
+ hour: number;
+ minute: number;
+ } = {
+ hour: null,
+ minute: null,
+ };
+
+ constructor(Main: Main) {
+ this._Main = Main;
+ this.configPath = join(this._Main.dataPath, 'timer.json');
+ }
+
+ getState() {
+ return {
+ start: this.start,
+ end: this.end,
+ };
+ }
+
+ setStart(data: { hour: number; minute: number }) {
+ this.start = data;
+ this._Main.WebServer.socket.emit('timer', this.getState());
+ this.save();
+ }
+
+ setEnd(data: { hour: number; minute: number }) {
+ this.end = data;
+ this._Main.WebServer.socket.emit('timer', this.getState());
+ this.save();
+ }
+
+ startClock() {
+ setInterval(() => {
+ const startTime = new Date();
+ startTime.setHours(this.start.hour, this.start.minute, 0, 0);
+
+ const endTime = new Date();
+ endTime.setHours(this.end.hour, this.end.minute, 0, 0);
+
+ const shouldBeStarted =
+ startTime <= new Date() && endTime > new Date();
+
+ if (shouldBeStarted) {
+ if (
+ this._Main.UnityRunner.state !== 'RUNNING' &&
+ this._Main.UnityRunner.state !== 'STARTING'
+ ) {
+ console.log(PREFIX, 'Starting Unity');
+ this._Main.UnityRunner.start(StartOrigin.Timer);
+ } else if (
+ this._Main.UnityRunner.startOrigin !== StartOrigin.Timer
+ ) {
+ console.log(PREFIX, 'Already running');
+ this._Main.UnityRunner.startOrigin = StartOrigin.Timer;
+ }
+ } else {
+ if (
+ this._Main.UnityRunner.state === 'RUNNING' &&
+ this._Main.UnityRunner.startOrigin === StartOrigin.Timer
+ ) {
+ console.log(PREFIX, 'Stopping Unity');
+ this._Main.UnityRunner.stop();
+ }
+ }
+ }, 5000);
+ }
+
+ async load() {
+ console.log(PREFIX, 'Loading timer configuration...');
+ const exists = await pathExists(this.configPath);
+ if (!exists) {
+ this.save();
+ return this.startClock();
+ }
+
+ const data = await readJSON(this.configPath);
+ this.start = data.start;
+ this.end = data.end;
+
+ this.startClock();
+ }
+
+ private _save: NodeJS.Timeout;
+ async save() {
+ if (this._save) clearTimeout(this._save);
+
+ this._save = setTimeout(async () => {
+ writeFile(
+ this.configPath,
+ JSON.stringify({ start: this.start, end: this.end }, null, 4),
+ );
+ }, 1000);
+ }
+}
diff --git a/src/Main.ts b/src/Main.ts
index 77b79e7..8599124 100644
--- a/src/Main.ts
+++ b/src/Main.ts
@@ -6,20 +6,26 @@ import {
ConfigurationManager,
} from './Configuration/ConfigurationManager';
import { CameraRunner } from './CameraRunner';
-import { UnityRunner } from './Unity/UnityRunner';
+import { StartOrigin, UnityRunner } from './Unity/UnityRunner';
import { UnityWebSocket } from './Unity/UnityWebSocket';
import { TwilioHandler } from './Twilio';
import { delay } from './Utils';
import * as ping from 'ping';
import { shutdown } from './Shutdown';
+import { Timer } from './Configuration/Timer';
+import { Status } from './Status';
+import { AudioChecker } from './Audio';
const PREFIX = '[Main]';
export class Main {
dataPath = join(homedir(), 'MorphixProductions', 'NTSHControl');
ConfigurationManager = new ConfigurationManager(this);
+ Timer = new Timer(this);
+ Status = new Status(this);
WebServer = new WebServer(this);
Twilio = new TwilioHandler(this);
+ Audio = new AudioChecker(this);
CameraRunner = new CameraRunner(this);
UnityRunner = new UnityRunner(this);
@@ -35,11 +41,23 @@ export class Main {
await this.WebServer.listen();
await this.Twilio.load();
+ await this.Audio.waitForDevice();
+
await this.CameraRunner.connect();
- setTimeout(() => {
- this.UnityRunner.start();
- }, this.Config.unity.executable.startUpDelay ?? 0);
+ await this.Timer.load();
+
+ if ((this.Config.unity.launchOnStartup ?? true) === true)
+ setTimeout(() => {
+ this.UnityRunner.start(StartOrigin.Startup);
+ }, this.Config.unity.executable.startUpDelay ?? 0);
+ else {
+ this.UnityRunner.setInfo(
+ 'Not set to launch on startup. Waiting for timer or manual start...',
+ null,
+ 'STOPPED',
+ );
+ }
}
async restart() {
@@ -55,11 +73,11 @@ export class Main {
if (!response.succeed) {
console.error(
'Failed to reboot CameraRunner:',
- response.message
+ response.message,
);
this.Twilio.sendError(
'CameraRunner',
- `Failed to reboot CameraRunner: ${response.message}`
+ `Failed to reboot CameraRunner: ${response.message}`,
);
resolve(false);
} else {
@@ -67,7 +85,7 @@ export class Main {
this.Twilio.sendError('CameraRunner', null);
resolve(true);
}
- }
+ },
);
});
if (!succeed) return;
@@ -75,7 +93,7 @@ export class Main {
await delay(5000);
console.log('Starting UnityRunner...');
- await this.UnityRunner.start();
+ await this.UnityRunner.start(this.UnityRunner.startOrigin);
console.log('Restart complete.');
}
diff --git a/src/Status.ts b/src/Status.ts
new file mode 100644
index 0000000..eb0db9c
--- /dev/null
+++ b/src/Status.ts
@@ -0,0 +1,156 @@
+import { Main } from './Main';
+import { StartOrigin } from './Unity/UnityRunner';
+import { delay } from './Utils';
+
+export class Status {
+ private _Main: Main;
+
+ states: Map = new Map();
+
+ constructor(Main: Main) {
+ this._Main = Main;
+
+ this.ensure();
+ this.startClock();
+ }
+
+ update(
+ type: StatusType,
+ state: State,
+ message: string,
+ buttons?: { reboot?: boolean; start?: boolean; stop?: boolean },
+ ) {
+ this.states.set(type, { state, message, buttons });
+
+ this._Main.WebServer.socket.emit('status', this.getState());
+ }
+
+ reboot(type: StatusType) {
+ switch (type) {
+ case StatusType.CameraPC: {
+ this._Main.CameraRunner.sendCommand(
+ 'reboot',
+ (response: { succeed: boolean; message?: string }) => {
+ console.log('CameraRunner reboot response:', response);
+ },
+ );
+ }
+ case StatusType.CameraProcess: {
+ this._Main.CameraRunner.sendCommand(
+ 'restart',
+ (response: { succeed: boolean; message?: string }) => {
+ console.log('CameraRunner restart response:', response);
+ },
+ );
+ }
+ case StatusType.CameraUnityStream: {
+ this._Main.CameraRunner.sendCommand(
+ 'restart',
+ (response: { succeed: boolean; message?: string }) => {
+ console.log('CameraRunner restart response:', response);
+ },
+ );
+ this._Main.UnityRunner.restart(StartOrigin.Manual);
+ }
+ case StatusType.UnityBuild: {
+ this._Main.UnityRunner.restart(StartOrigin.Manual);
+ }
+ case StatusType.ReplayFunction: {
+ console.log(
+ 'ReplayFunction reboot requested. Not implemented.',
+ );
+ }
+ }
+ }
+
+ start(type: StatusType) {
+ switch (type) {
+ case StatusType.UnityBuild: {
+ this._Main.UnityRunner.requestStart(StartOrigin.Manual);
+ }
+ }
+ }
+
+ stop(type: StatusType) {
+ switch (type) {
+ case StatusType.UnityBuild: {
+ this._Main.UnityRunner.requestStop();
+ }
+ }
+ }
+
+ getState() {
+ const state = {};
+ this.states.forEach((value, key) => {
+ state[key] = value;
+ });
+ return state;
+ }
+
+ private startClock() {
+ let hadInvalidLastRound: boolean = false;
+ setInterval(() => {
+ let hasInvalid = false;
+ this.states.forEach((state, key) => {
+ if (state.state === State.Red) hasInvalid = true;
+ });
+
+ if (hasInvalid && !hadInvalidLastRound) {
+ hadInvalidLastRound = true;
+ console.warn(
+ 'One ore more status entries are invalid, waiting to see if they recover...',
+ );
+ } else if (hasInvalid && hadInvalidLastRound) {
+ console.error(
+ 'One ore more status entries are still invalid after 5 seconds, restarting system.',
+ );
+ this._Main.Twilio.sendError(
+ 'Status',
+ 'One ore more status entries are still invalid after 5 seconds, restarting system.',
+ );
+ this._Main.restart();
+ } else {
+ this._Main.Twilio.sendError('Status', null);
+ hadInvalidLastRound = false;
+ }
+ }, 5000);
+ }
+
+ private ensure() {
+ for (const type in StatusType) {
+ if (!this.states.has(StatusType[type]))
+ this.states.set(StatusType[type], {
+ state: State.Gray,
+ message: 'Loading...',
+ });
+ }
+ }
+
+ private doLog() {
+ console.clear();
+ this.states.forEach((state, key) => {
+ console.log(`[${key}] ${state.state} - ${state.message}`);
+ });
+ }
+}
+
+export interface StatusEntry {
+ state: State;
+ message: string;
+ buttons?: { reboot?: boolean; start?: boolean; stop?: boolean };
+}
+
+export enum State {
+ Green = 'GREEN',
+ Yellow = 'YELLOW',
+ Red = 'RED',
+ Gray = 'GRAY',
+}
+
+export enum StatusType {
+ CameraPC = 'CAMERAPC',
+ CameraProcess = 'CAMERAPROCESS',
+ CameraUnityStream = 'CAMERAUNITYSTREAM',
+ UnityBuild = 'UNITYBUILD',
+ ReplayFunction = 'REPLAYFUNCTION',
+}
diff --git a/src/Twilio.ts b/src/Twilio.ts
index 18819d1..851969e 100644
--- a/src/Twilio.ts
+++ b/src/Twilio.ts
@@ -44,7 +44,7 @@ export class TwilioHandler {
this.client = require('twilio')(
this._Main.Config.twilio.accountSid,
- this._Main.Config.twilio.authToken
+ this._Main.Config.twilio.authToken,
);
}
@@ -77,14 +77,13 @@ export class TwilioHandler {
console.log(PREFIX, `Sending to Twilio:\n`, errorMessage);
const promises = this._Main.Config.twilio.toNumbers.map(
- (toNumber) => this.sendMessage(toNumber, errorMessage)
+ (toNumber) => this.sendMessage(toNumber, errorMessage),
);
await Promise.all(promises);
}, this._Main.Config.twilio.aggregateTimeout);
}
sendMessage(to: string, message: string) {
- return;
return new Promise((resolve) => {
this.client.messages
.create({
@@ -104,4 +103,9 @@ export class TwilioHandler {
}
}
-type TwilioCategories = 'CameraRunner' | 'UnityRunner' | 'UnityWebSocket';
+type TwilioCategories =
+ | 'CameraRunner'
+ | 'UnityRunner'
+ | 'UnityWebSocket'
+ | 'Status'
+ | 'Audio';
diff --git a/src/Unity/UnityRunner.ts b/src/Unity/UnityRunner.ts
index b20e798..6699f34 100644
--- a/src/Unity/UnityRunner.ts
+++ b/src/Unity/UnityRunner.ts
@@ -1,7 +1,9 @@
import { pathExistsSync } from 'fs-extra';
-import { ChildProcess, exec, spawn } from 'child_process';
+import { ChildProcess, spawn } from 'child_process';
import { delay } from '../Utils';
import { Main } from '../Main';
+import { ProcessStatusState } from '../CameraRunner';
+import { StatusType } from '../Status';
const PREFIX = '[UnityRunner]';
@@ -11,6 +13,8 @@ export class UnityRunner {
private _Main: Main;
state: UnityRunnerState;
+ startOrigin: StartOrigin;
+
message?: string = 'Awaiting startup delay...';
error?: string;
@@ -34,11 +38,11 @@ export class UnityRunner {
switch (command) {
case 'restart':
- return callback(this.requestRestart());
+ return callback(this.requestRestart(StartOrigin.Manual));
case 'stop':
return callback(this.requestStop());
case 'start':
- return callback(this.requestStart());
+ return callback(this.requestStart(StartOrigin.Manual));
}
}
@@ -50,7 +54,10 @@ export class UnityRunner {
}, 3000);
}
- requestRestart(): { succeed: boolean; message?: string } {
+ requestRestart(startOrigin: StartOrigin): {
+ succeed: boolean;
+ message?: string;
+ } {
if (this.state !== 'RUNNING')
return {
succeed: false,
@@ -58,7 +65,7 @@ export class UnityRunner {
'Cannot restart when process is not running. It is probably restarting already.',
};
- this.restart(true);
+ this.restart(startOrigin, true);
return { succeed: true };
}
@@ -74,14 +81,17 @@ export class UnityRunner {
return { succeed: true };
}
- requestStart(): { succeed: boolean; message?: string } {
+ requestStart(startOrigin: StartOrigin): {
+ succeed: boolean;
+ message?: string;
+ } {
if (this.state !== 'STOPPED')
return {
succeed: false,
message: 'Cannot start when process is already running.',
};
- this.start();
+ this.start(startOrigin);
return { succeed: true };
}
@@ -92,11 +102,21 @@ export class UnityRunner {
setInfo(
message: string,
error: string,
- state: UnityRunnerState = 'PROBLEM'
+ state: UnityRunnerState = 'PROBLEM',
) {
this.message = message;
this.error = error;
this.state = state;
+ this._Main.Status.update(
+ StatusType.UnityBuild,
+ UnityBuildStateColors[state],
+ message ?? error ?? '',
+ {
+ reboot: state === 'PROBLEM' || state === 'RUNNING',
+ start: state === 'STOPPED',
+ stop: state === 'RUNNING',
+ },
+ );
this.broadcastState();
if (error != null) this._Main.Twilio.sendError('UnityRunner', error);
@@ -104,7 +124,7 @@ export class UnityRunner {
this.output.current.push(
`[${new Date().toLocaleTimeString('nl-NL')}] [System] [${state}] ${
message ?? error
- }`
+ }`,
);
if (state == 'PROBLEM' || state == 'STOPPED')
@@ -123,7 +143,7 @@ export class UnityRunner {
this.setInfo(
'Requested quit through WebSocket...',
null,
- 'STARTING'
+ 'STARTING',
);
} else {
this.process.kill('SIGTERM');
@@ -161,7 +181,7 @@ export class UnityRunner {
}
restartTriggered: boolean = false;
- async restart(instant: boolean = false) {
+ async restart(origin: StartOrigin, instant: boolean = false) {
if (this.restartTriggered) return;
this.restartTriggered = true;
@@ -170,6 +190,7 @@ export class UnityRunner {
clearInterval(this.statusClock);
this.startTime = -1;
+ this.startOrigin = null;
this.broadcastState();
if (!instant) await delay(2000);
@@ -191,10 +212,10 @@ export class UnityRunner {
await delay(10000);
}
- await this.start();
+ await this.start(this.startOrigin);
}
- async start() {
+ async start(origin: StartOrigin) {
if (this.output.current.length > 0) {
this.output.last = [...this.output.current];
this.output.current = [];
@@ -211,7 +232,7 @@ export class UnityRunner {
if (path == null || !pathExistsSync(path)) {
this.setInfo(
'Executable problem',
- `Executable path is not set or does not exist: ${path}`
+ `Executable path is not set or does not exist: ${path}`,
);
return;
}
@@ -221,7 +242,7 @@ export class UnityRunner {
this.setInfo(
'Waiting for CameraRunner to connect...',
null,
- 'STARTING'
+ 'STARTING',
);
var c = setInterval(() => {
if (this._Main.CameraRunner.state !== 'CONNECTED') return;
@@ -236,7 +257,7 @@ export class UnityRunner {
this.setInfo(
'Waiting for CameraRunner process to start...',
null,
- 'STARTING'
+ 'STARTING',
);
var c = setInterval(() => {
if (
@@ -259,7 +280,7 @@ export class UnityRunner {
this._Main.Config.unity.executable.arguments,
{
stdio: 'pipe',
- }
+ },
);
this.process.on('exit', (code, signal) => {
@@ -267,13 +288,13 @@ export class UnityRunner {
this.setInfo(
'Process exited',
`Process exited with code ${code} and signal ${signal}`,
- 'PROBLEM'
+ 'PROBLEM',
);
- this.restart();
+ this.restart(this.startOrigin);
});
this.process.on('error', (err) => {
this.setInfo('Process error', err.message);
- this.restart();
+ this.restart(this.startOrigin);
});
this.process.stdout?.on('data', (data) => {
const lines = data
@@ -283,7 +304,7 @@ export class UnityRunner {
.filter((line) => line.length > 0);
lines.forEach((line) => {
const formattedLine = `[${new Date().toLocaleTimeString(
- 'nl-NL'
+ 'nl-NL',
)}] [${fileName}] ${line}`;
if (LOG_OUTPUT) console.log(PREFIX, formattedLine);
this.output.current.push(formattedLine);
@@ -297,12 +318,13 @@ export class UnityRunner {
.filter((line) => line.length > 0);
lines.forEach((line) => {
const formattedLine = `[${new Date().toLocaleTimeString(
- 'nl-NL'
+ 'nl-NL',
)}] [${fileName}] [ERROR] ${line}`;
if (LOG_OUTPUT) console.error(PREFIX, formattedLine);
this.output.current.push(formattedLine);
});
});
+ this.startOrigin = origin;
this.startStatusClock();
setTimeout(() => {
if (
@@ -340,4 +362,24 @@ interface UnityRunnerStatus {
output: { current: string[]; last: string[] };
}
+enum State {
+ Green = 'GREEN',
+ Yellow = 'YELLOW',
+ Red = 'RED',
+ Gray = 'GRAY',
+}
+
+export const UnityBuildStateColors: Record = {
+ RUNNING: State.Green,
+ STOPPED: State.Gray,
+ STARTING: State.Yellow,
+ PROBLEM: State.Red,
+};
+
export type UnityRunnerState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
+
+export enum StartOrigin {
+ Timer = 'TIMER',
+ Manual = 'MANUAL',
+ Startup = 'STARTUP',
+}
diff --git a/src/Unity/UnityWebSocket.ts b/src/Unity/UnityWebSocket.ts
index bbf6fdc..a8f9333 100644
--- a/src/Unity/UnityWebSocket.ts
+++ b/src/Unity/UnityWebSocket.ts
@@ -1,6 +1,7 @@
import { RawData, WebSocket } from 'ws';
import { Main } from '../Main';
import { delay, ServiceState } from '../Utils';
+import { State, StatusType } from '../Status';
const PREFIX = '[Unity]';
export class UnityWebSocket {
@@ -29,6 +30,8 @@ export class UnityWebSocket {
constructor(Main: Main) {
this._Main = Main;
+
+ this.updateStatus();
}
handle(command: string, ...args: any[]) {
@@ -74,7 +77,7 @@ export class UnityWebSocket {
this.socket.send(
JSON.stringify({
type: 'quit_application',
- })
+ }),
);
}
@@ -87,7 +90,7 @@ export class UnityWebSocket {
type: 'set_slider_value',
sliderIndex,
sliderValue,
- })
+ }),
);
if (this.parameters.sliders[sliderIndex] == undefined) return;
@@ -104,7 +107,7 @@ export class UnityWebSocket {
type: 'set_advanced_slider_value',
sliderIndex,
sliderValue,
- })
+ }),
);
if (this.parameters.advancedSliders[sliderIndex] == undefined) return;
@@ -120,7 +123,7 @@ export class UnityWebSocket {
JSON.stringify({
type: 'set_out_of_service',
showOutOfService: state,
- })
+ }),
);
this.parameters.outOfService = true;
@@ -130,14 +133,40 @@ export class UnityWebSocket {
broadcastState() {
this._Main.WebServer.socket.emit(
'unityWebSocketState',
- this.getState()
+ this.getState(),
);
}
+ updateStatus() {
+ if (this.state != 'CONNECTED') {
+ this._Main.Status.update(
+ StatusType.CameraUnityStream,
+ CameraUnityStateColors[this.state],
+ this.message,
+ {
+ reboot: this.state === 'FAILED',
+ },
+ );
+ } else {
+ const status = !this.parameters.zedReady
+ ? 'Waiting for ZED stream'
+ : this.message;
+ this._Main.Status.update(
+ StatusType.CameraUnityStream,
+ this.parameters.zedReady ? State.Green : State.Yellow,
+ status,
+ {
+ reboot: this.parameters.zedReady,
+ },
+ );
+ }
+ }
+
setInfo(message: string, error: string, state: ServiceState = 'FAILED') {
this.message = message;
this.error = error;
this.state = state;
+ this.updateStatus();
this.broadcastState();
if (error != null) this._Main.Twilio.sendError('UnityWebSocket', error);
@@ -185,7 +214,7 @@ export class UnityWebSocket {
? 2
: null,
};
- }
+ },
);
this.parameters.advancedSliders =
message.heartbeat.dataAdvancedSliders.map((slider) => {
@@ -199,12 +228,13 @@ export class UnityWebSocket {
};
});
+ this.updateStatus();
this.broadcastState();
break;
case 'response_camera_frame':
this._Main.WebServer.Calibration.writeCalibrationImage(
- message.imageBase64
+ message.imageBase64,
);
break;
}
@@ -261,7 +291,7 @@ export class UnityWebSocket {
await delay(1000);
this.socket = new WebSocket(
- `ws://${this._Main.Config.unity.webSocket.ip}:${this._Main.Config.unity.webSocket.port}`
+ `ws://${this._Main.Config.unity.webSocket.ip}:${this._Main.Config.unity.webSocket.port}`,
);
this.socket.on('error', (error) => {
@@ -269,7 +299,7 @@ export class UnityWebSocket {
this.setInfo(
'Connection error',
`Could not connect: ${error.message}`,
- 'FAILED'
+ 'FAILED',
);
this.reconnect();
});
@@ -288,7 +318,7 @@ export class UnityWebSocket {
this.setInfo(
'Disconnected',
'Unity was disconnected unexpectedly',
- 'FAILED'
+ 'FAILED',
);
this.reconnect();
});
@@ -300,7 +330,10 @@ export class UnityWebSocket {
private calibrationImageClock: NodeJS.Timeout;
startFetchClocks() {
this.socket.send(
- JSON.stringify({ type: 'set_heartbeat_auto_send', autoSend: false })
+ JSON.stringify({
+ type: 'set_heartbeat_auto_send',
+ autoSend: false,
+ }),
);
this.heartbeatClock = setInterval(() => {
if (
@@ -409,6 +442,13 @@ interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
showOutOfService?: boolean;
};
}
+
+export const CameraUnityStateColors: Record = {
+ CONNECTED: State.Green,
+ DISCONNECTED: State.Gray,
+ CONNECTING: State.Yellow,
+ FAILED: State.Red,
+};
interface UnitySocketMessageCameraFrame extends UnitySocketMessageBase {
type: 'response_camera_frame';
imageBase64: string;
diff --git a/src/WebServer/ControlRouter.ts b/src/WebServer/ControlRouter.ts
new file mode 100644
index 0000000..9273e4c
--- /dev/null
+++ b/src/WebServer/ControlRouter.ts
@@ -0,0 +1,46 @@
+import { Router } from 'express';
+import { Main } from '../Main';
+import { join } from 'path';
+import { pathExistsSync, readdirSync, readFile } from 'fs-extra';
+
+export class ControlRouter {
+ private _Main: Main;
+ Router: Router;
+
+ path: string;
+
+ constructor(Main: Main) {
+ this._Main = Main;
+ this.Router = Router();
+
+ this.path = join(
+ __filename,
+ '..',
+ '..',
+ '..',
+ 'frontend',
+ 'views',
+ 'control',
+ );
+
+ this.registerRoutes();
+ }
+
+ async registerRoutes() {
+ this.Router.get('/', async (req, res) => {
+ const htmlContent = await readFile(join(this.path, 'index.html'));
+ res.setHeader('Content-Type', 'text/html');
+ res.send(htmlContent);
+ });
+ this.Router.get('/style.css', async (req, res) => {
+ const styleContent = await readFile(join(this.path, 'style.css'));
+ res.setHeader('Content-Type', 'text/css');
+ res.send(styleContent);
+ });
+ this.Router.get('/script.js', async (req, res) => {
+ const scriptContent = await readFile(join(this.path, 'script.js'));
+ res.setHeader('Content-Type', 'application/javascript');
+ res.send(scriptContent);
+ });
+ }
+}
diff --git a/src/WebServer/DashboardRouter.ts b/src/WebServer/DashboardRouter.ts
index 69511f5..33dbee7 100644
--- a/src/WebServer/DashboardRouter.ts
+++ b/src/WebServer/DashboardRouter.ts
@@ -20,7 +20,7 @@ export class DashboardRouter {
'..',
'frontend',
'views',
- 'dashboard'
+ 'dashboard',
);
this.registerRoutes();
@@ -28,21 +28,21 @@ export class DashboardRouter {
async registerRoutes() {
this.Router.get(
- ['/', '/dashboard', '/calibration', '/cameralogs', '/unitylogs'],
+ ['/dashboard', '/calibration', '/cameralogs', '/unitylogs'],
async (req, res) => {
const htmlContent = await readFile(
- join(this.path, 'index.html')
+ join(this.path, 'index.html'),
);
res.setHeader('Content-Type', 'text/html');
res.send(htmlContent);
- }
+ },
);
- this.Router.get('/style.css', async (req, res) => {
+ this.Router.get('/dashboard/style.css', async (req, res) => {
const styleContent = await readFile(join(this.path, 'style.css'));
res.setHeader('Content-Type', 'text/css');
res.send(styleContent);
});
- this.Router.get('/script.js', async (req, res) => {
+ this.Router.get('/dashboard/script.js', async (req, res) => {
const scriptContent = await readFile(join(this.path, 'script.js'));
res.setHeader('Content-Type', 'application/javascript');
res.send(scriptContent);
diff --git a/src/WebServer/WebServer.ts b/src/WebServer/WebServer.ts
index 58a8045..5551b32 100644
--- a/src/WebServer/WebServer.ts
+++ b/src/WebServer/WebServer.ts
@@ -7,11 +7,14 @@ import { DashboardRouter } from './DashboardRouter';
import { join } from 'path';
import { CalibrationRouter } from './CalibrationRouter';
import { delay } from '../Utils';
+import { ControlRouter } from './ControlRouter';
+import { StatusType } from '../Status';
const PREFIX = '[WebServer]';
export class WebServer {
private _Main: Main;
+ Control: ControlRouter;
Dashboard: DashboardRouter;
Calibration: CalibrationRouter;
@@ -23,6 +26,7 @@ export class WebServer {
this._Main = Main;
this.Dashboard = new DashboardRouter(this._Main);
this.Calibration = new CalibrationRouter(this._Main);
+ this.Control = new ControlRouter(this._Main);
this.prepare();
}
@@ -34,26 +38,29 @@ export class WebServer {
this.app.use(
express.static(
- join(__filename, '..', '..', '..', 'frontend', 'static')
- )
+ join(__filename, '..', '..', '..', 'frontend', 'static'),
+ ),
);
this.app.use(this.Dashboard.Router);
+ this.app.use(this.Control.Router);
this.app.use(this.Calibration.Router);
this.socket.on('connection', (socket) => {
+ socket.emit('status', this._Main.Status.getState());
+ socket.emit('timer', this._Main.Timer.getState());
socket.emit(
'cameraRunnerState',
- this._Main.CameraRunner.getState()
+ this._Main.CameraRunner.getState(),
);
socket.emit('unityRunnerState', this._Main.UnityRunner.getStatus());
socket.emit(
'unityWebSocketState',
- this._Main.UnityWebSocket.getState()
+ this._Main.UnityWebSocket.getState(),
);
socket.emit(
'supportNumber',
- this._Main.Config.support.telephone.replace('+', '')
+ this._Main.Config.support.telephone.replace('+', ''),
);
socket.on(
@@ -62,7 +69,7 @@ export class WebServer {
callback: (response: {
succeed: boolean;
message?: string;
- }) => void
+ }) => void,
) => {
if (this._Main.CameraRunner.state !== 'CONNECTED')
return callback({
@@ -73,7 +80,7 @@ export class WebServer {
this._Main.restart();
callback({ succeed: true });
- }
+ },
);
socket.on(
@@ -82,21 +89,52 @@ export class WebServer {
callback: (response: {
succeed: boolean;
message?: string;
- }) => void
+ }) => void,
) => {
await delay(1000);
callback({ succeed: true });
this._Main.shutdown();
- }
+ },
);
socket.on('cameraRunner', (command: string, ...args: any[]) =>
- this._Main.CameraRunner.handle(command, ...args)
+ this._Main.CameraRunner.handle(command, ...args),
);
socket.on('unityRunner', (command: string, ...args: any[]) =>
- this._Main.UnityRunner.handle(command, ...args)
+ this._Main.UnityRunner.handle(command, ...args),
);
socket.on('unityWebSocket', (command: string, ...args: any[]) =>
- this._Main.UnityWebSocket.handle(command, ...args)
+ this._Main.UnityWebSocket.handle(command, ...args),
+ );
+
+ socket.on(
+ 'status',
+ (
+ action: 'fullreboot' | 'reboot' | 'start' | 'stop',
+ type: StatusType,
+ ) => {
+ switch (action) {
+ case 'fullreboot':
+ return this._Main.restart();
+ case 'reboot':
+ return this._Main.Status.reboot(type);
+ case 'start':
+ return this._Main.Status.start(type);
+ case 'stop':
+ return this._Main.Status.stop(type);
+ }
+ },
+ );
+ socket.on(
+ 'setTimerStart',
+ (data: { hour: number; minute: number }) => {
+ this._Main.Timer.setStart(data);
+ },
+ );
+ socket.on(
+ 'setTimerEnd',
+ (data: { hour: number; minute: number }) => {
+ this._Main.Timer.setEnd(data);
+ },
);
});
}
@@ -107,7 +145,7 @@ export class WebServer {
this.httpServer.listen(port, () => {
console.log(
PREFIX,
- `Listening on port http://127.0.0.1:${port}`
+ `Listening on port http://127.0.0.1:${port}`,
);
resolve();
});
diff --git a/test.js b/test.js
index e3160b9..8ddc135 100644
--- a/test.js
+++ b/test.js
@@ -1,14 +1,11 @@
-const app = require('express')();
-app.get('/exit', (req, res) => {
- console.log(`Received exit request at ${new Date().toLocaleTimeString('nl-NL')}`)
- res.send('Goodbye World!')
- process.exit(0);
-});
+const portAudio = require('naudiodon');
+// const defaultOutput = portAudio.getDevices().find(d => d.isDefaultOutput);
+console.log(portAudio.getDevices().filter((d) => d.maxOutputChannels > 0));
+// console.log(defaultOutput);
-app.get('/', (req, res) => {
- console.log(`Received request at ${new Date().toLocaleTimeString('nl-NL')}`)
- res.send('Hello World!')
-});
-app.listen(3001, () => console.log('Test server listening on port 3001!'));
\ No newline at end of file
+const hostApis = portAudio.getHostAPIs();
+const defaultOutputDeviceId = hostApis.HostAPIs[hostApis.defaultHostAPI].defaultOutput;
+
+console.log(hostApis)
\ No newline at end of file