@interopio/workspaces-api 3.0.3 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.es.js","sources":["../node_modules/callback-registry/lib/index.js","../node_modules/decoder-validate/dist/index.es5.js","../src/shared/decoders.ts","../src/communication/constants.ts","../src/shared/promiseWrapper.ts","../src/communication/bridge.ts","../src/shared/promisePlus.ts","../src/communication/interop-transport.ts","../src/builders/parentBuilder.ts","../src/builders/baseBuilder.ts","../src/builders/workspaceBuilder.ts","../src/models/row.ts","../src/models/column.ts","../src/models/group.ts","../src/models/workspace.ts","../src/models/window.ts","../src/models/frame.ts","../src/shared/privateDataManager.ts","../src/models/base/base.ts","../src/controllers/base.ts","../src/controllers/main.ts","../src/controllers/shortcuts.ts","../src/shared/ioc.ts","../src/main.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder<A> {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder<A>` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result<A, DecoderError>`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial<DecoderError>` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial<DecoderError>`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray<T> = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = <T>(values: Decoder<T>): Decoder<NonEmptyArray<T>> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder<string> =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder<User> = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder<User> = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder<Comment> = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { Decoder, object, boolean, string, optional, array, oneOf, constant, lazy, number, anyJson, intersection } from \"decoder-validate\";\nimport {\n IsWindowInSwimlaneResult,\n WorkspaceSnapshotResult,\n ChildSnapshotResult,\n WorkspaceConfigResult,\n FrameSummaryResult,\n WorkspaceCreateConfigProtocol,\n GetFrameSummaryConfig,\n WorkspaceSummaryResult,\n LayoutSummariesResult,\n LayoutSummary,\n OpenWorkspaceConfig,\n FrameSummariesResult,\n WorkspaceSummariesResult,\n ExportedLayoutsResult,\n DeleteLayoutConfig,\n SimpleItemConfig,\n ResizeItemConfig,\n MoveFrameConfig,\n FrameSnapshotResult,\n BaseChildSnapshotConfig,\n ParentSnapshotConfig,\n SwimlaneWindowSnapshotConfig,\n SimpleWindowOperationSuccessResult,\n SetItemTitleConfig,\n MoveWindowConfig,\n AddWindowConfig,\n AddContainerConfig,\n AddItemResult,\n BundleWorkspaceConfig,\n WorkspaceStreamData,\n FrameStreamData,\n ContainerStreamData,\n ContainerSummaryResult,\n WindowStreamData,\n PingResult,\n FrameStateConfig,\n FrameStateResult,\n LockWorkspaceConfig,\n LockWindowConfig,\n LockContainerConfig,\n SubParentSnapshotResult,\n WindowSnapshotResult,\n LockRowConfig,\n LockColumnConfig,\n LockGroupConfig,\n FrameBoundsResult,\n GetWorkspaceIconResult,\n PinWorkspaceConfig,\n SetWorkspaceIconConfig,\n FrameInitializationConfigProtocol,\n WorkspaceSelector,\n ShortcutClickedData,\n ShortcutConfig,\n FrameSnapshotConfig,\n FrameBounds,\n SetMaximizationBoundaryConfig,\n LoadingAnimationConfig,\n GetPlatformFrameIdResult,\n ItemBundleConfig,\n OperationCheckConfig,\n OperationCheckResult\n} from \"../types/protocol\";\nimport { WorkspaceEventType, WorkspaceEventAction } from \"../types/subscription\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\n\nexport const nonEmptyStringDecoder: Decoder<string> = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nexport const nonNegativeNumberDecoder: Decoder<number> = number().where((num) => num >= 0, \"Expected a non-negative number\");\nexport const positiveNumberDecoder: Decoder<number> = number().where((num) => num > 0, \"Expected a positive number\");\n\n\nexport const isWindowInSwimlaneResultDecoder: Decoder<IsWindowInSwimlaneResult> = object({\n inWorkspace: boolean()\n});\n\nexport const allParentDecoder: Decoder<\"workspace\" | \"row\" | \"column\" | \"group\"> = oneOf<\"workspace\" | \"row\" | \"column\" | \"group\">(\n constant(\"workspace\"),\n constant(\"row\"),\n constant(\"column\"),\n constant(\"group\")\n);\n\nexport const subParentDecoder: Decoder<\"row\" | \"column\" | \"group\"> = oneOf<\"row\" | \"column\" | \"group\">(\n constant(\"row\"),\n constant(\"column\"),\n constant(\"group\")\n);\n\nexport const frameStateDecoder: Decoder<\"maximized\" | \"minimized\" | \"normal\"> = oneOf<\"maximized\" | \"minimized\" | \"normal\">(\n constant(\"maximized\"),\n constant(\"minimized\"),\n constant(\"normal\")\n);\n\nexport const loadingAnimationTypeDecoder: Decoder<\"workspace\"> = oneOf<\"workspace\">(\n constant(\"workspace\")\n);\n\nexport const checkThrowCallback = (callback: unknown, allowUndefined?: boolean): void => {\n const argumentType = typeof callback;\n\n if (allowUndefined && argumentType !== \"function\" && argumentType !== \"undefined\") {\n throw new Error(`Provided argument must be either undefined or of type function, provided: ${argumentType}`);\n }\n\n if (!allowUndefined && argumentType !== \"function\") {\n throw new Error(`Provided argument must be of type function, provided: ${argumentType}`);\n }\n};\n\nexport const workspaceBuilderCreateConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceCreateConfig> = optional(object({\n saveLayout: optional(boolean())\n}));\n\nexport const deleteLayoutConfigDecoder: Decoder<DeleteLayoutConfig> = object({\n name: nonEmptyStringDecoder\n});\n\nexport const windowDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowDefinitionConfig> = object({\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean())\n});\n\nexport const groupDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.GroupDefinitionConfig> = object({\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n allowDrop: optional(boolean()),\n allowDropHeader: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropBottom: optional(boolean()),\n showMaximizeButton: optional(boolean()),\n showEjectButton: optional(boolean()),\n showAddWindowButton: optional(boolean())\n});\n\nexport const rowDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.RowDefinitionConfig> = object({\n minHeight: optional(number()),\n maxHeight: optional(number()),\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n isPinned: optional(boolean()),\n maximizationBoundary: optional(boolean())\n});\n\nexport const columnDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.ColumnDefinitionConfig> = object({\n minWidth: optional(number()),\n maxWidth: optional(number()),\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n isPinned: optional(boolean()),\n maximizationBoundary: optional(boolean())\n});\n\nexport const swimlaneWindowDefinitionDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowDefinition> = object({\n type: optional(constant(\"window\")),\n appName: optional(nonEmptyStringDecoder),\n windowId: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n config: optional(windowDefinitionConfigDecoder)\n});\n\nexport const strictSwimlaneWindowDefinitionDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowDefinition> = object({\n type: constant(\"window\"),\n appName: optional(nonEmptyStringDecoder),\n windowId: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n config: optional(windowDefinitionConfigDecoder)\n});\n\nexport const parentDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = optional(object({\n type: optional(subParentDecoder),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n swimlaneWindowDefinitionDecoder,\n parentDefinitionDecoder\n )\n ))\n ),\n config: optional(anyJson())\n}));\n\n\nexport const strictColumnDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = object({\n type: constant(\"column\"),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n strictSwimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n )\n ))\n ),\n config: optional(columnDefinitionConfigDecoder)\n});\n\nexport const strictRowDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = object({\n type: constant(\"row\"),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n strictSwimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n )\n ))\n ),\n config: optional(rowDefinitionConfigDecoder)\n});\n\nexport const strictGroupDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = object({\n type: constant(\"group\"),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n strictSwimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n )\n ))\n ),\n config: optional(groupDefinitionConfigDecoder)\n});\n\nexport const strictParentDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = oneOf(strictGroupDefinitionDecoder, strictColumnDefinitionDecoder, strictRowDefinitionDecoder);\n\nexport const stateDecoder: Decoder<\"maximized\" | \"normal\"> = oneOf<\"maximized\" | \"normal\">(\n (string().where((s) => s.toLowerCase() === \"maximized\", \"Expected a case insensitive variation of 'maximized'\") as Decoder<\"maximized\">),\n (string().where((s) => s.toLowerCase() === \"normal\", \"Expected a case insensitive variation of 'normal'\") as Decoder<\"normal\">)\n);\n\nexport const newFrameConfigDecoder: Decoder<IOConnectWorkspaces.NewFrameConfig> = object({\n bounds: optional(object({\n left: optional(number()),\n top: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n })),\n frameId: optional(nonEmptyStringDecoder)\n});\n\nexport const loadingStrategyDecoder: Decoder<IOConnectWorkspaces.LoadingStrategy> = oneOf<\"direct\" | \"delayed\" | \"lazy\">(\n constant(\"direct\"),\n constant(\"delayed\"),\n constant(\"lazy\")\n);\n\nexport const restoreWorkspaceConfigDecoder: Decoder<IOConnectWorkspaces.RestoreWorkspaceConfig> = optional(object({\n app: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n loadingStrategy: optional(loadingStrategyDecoder),\n title: optional(nonEmptyStringDecoder),\n reuseWorkspaceId: optional(nonEmptyStringDecoder),\n frameId: optional(nonEmptyStringDecoder),\n applicationName: optional(nonEmptyStringDecoder),\n lockdown: optional(boolean()),\n activateFrame: optional(boolean()),\n newFrame: optional(oneOf<IOConnectWorkspaces.NewFrameConfig | boolean>(\n newFrameConfigDecoder,\n boolean()\n )),\n noTabHeader: optional(boolean()),\n inMemoryLayout: optional(boolean()),\n icon: optional(nonEmptyStringDecoder),\n isPinned: optional(boolean()),\n isSelected: optional(boolean()),\n positionIndex: optional(nonNegativeNumberDecoder),\n allowSystemHibernation: optional(boolean())\n}));\n\nexport const openWorkspaceConfigDecoder: Decoder<OpenWorkspaceConfig> = object({\n name: nonEmptyStringDecoder,\n restoreOptions: optional(restoreWorkspaceConfigDecoder)\n});\n\nexport const workspaceDefinitionDecoder: Decoder<IOConnectWorkspaces.WorkspaceDefinition> = object({\n children: optional(array(oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n swimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n ))),\n context: optional(anyJson()),\n config: optional(object({\n title: optional(nonEmptyStringDecoder),\n position: optional(nonNegativeNumberDecoder),\n isFocused: optional(boolean()),\n noTabHeader: optional(boolean()),\n reuseWorkspaceId: optional(nonEmptyStringDecoder),\n loadingStrategy: optional(loadingStrategyDecoder),\n allowDrop: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropBottom: optional(boolean()),\n allowSystemHibernation: optional(boolean()),\n allowExtract: optional(boolean()),\n allowWindowReorder: optional(boolean()),\n showSaveButton: optional(boolean()),\n allowWorkspaceTabReorder: optional(boolean()),\n allowWorkspaceTabExtract: optional(boolean()),\n showCloseButton: optional(boolean()),\n allowSplitters: optional(boolean()),\n showWindowCloseButtons: optional(boolean()),\n showEjectButtons: optional(boolean()),\n showAddWindowButtons: optional(boolean()),\n icon: optional(nonEmptyStringDecoder),\n isPinned: optional(boolean()),\n isSelected: optional(boolean()),\n positionIndex: optional(nonNegativeNumberDecoder)\n })),\n frame: optional(object({\n reuseFrameId: optional(nonEmptyStringDecoder),\n applicationName: optional(nonEmptyStringDecoder),\n newFrame: optional(oneOf<boolean | IOConnectWorkspaces.NewFrameConfig>(\n boolean(),\n newFrameConfigDecoder\n ))\n }))\n});\n\nexport const workspaceSelectorDecoder: Decoder<WorkspaceSelector> = object({\n workspaceId: nonEmptyStringDecoder\n});\n\nexport const restoreWorkspaceDefinitionDecoder: Decoder<IOConnectWorkspaces.RestoreWorkspaceDefinition> = object({\n name: nonEmptyStringDecoder,\n restoreOptions: optional(restoreWorkspaceConfigDecoder)\n});\n\nexport const emptyFrameDefinitionDecoder: Decoder<IOConnectWorkspaces.EmptyFrameDefinition> = optional(object({\n applicationName: optional(string()),\n frameConfig: optional(newFrameConfigDecoder),\n context: optional(object()),\n layoutComponentId: optional(nonEmptyStringDecoder)\n}));\n\nexport const frameInitConfigDecoder: Decoder<IOConnectWorkspaces.FrameInitializationConfig> = object({\n workspaces: array(oneOf<IOConnectWorkspaces.WorkspaceDefinition | IOConnectWorkspaces.RestoreWorkspaceDefinition>(\n optional(workspaceDefinitionDecoder),\n optional(restoreWorkspaceDefinitionDecoder)\n ))\n});\n\nexport const frameInitProtocolConfigDecoder: Decoder<FrameInitializationConfigProtocol> = object({\n frameId: nonEmptyStringDecoder,\n workspaces: array(oneOf<IOConnectWorkspaces.WorkspaceDefinition | IOConnectWorkspaces.RestoreWorkspaceDefinition>(\n workspaceDefinitionDecoder,\n restoreWorkspaceDefinitionDecoder\n ))\n});\n\nexport const builderConfigDecoder: Decoder<IOConnectWorkspaces.BuilderConfig> = object({\n type: allParentDecoder,\n definition: optional(oneOf<IOConnectWorkspaces.WorkspaceDefinition | IOConnectWorkspaces.BoxDefinition>(\n workspaceDefinitionDecoder,\n parentDefinitionDecoder\n ))\n});\n\nexport const workspaceCreateConfigDecoder: Decoder<WorkspaceCreateConfigProtocol> = intersection(\n workspaceDefinitionDecoder,\n object({\n saveConfig: optional(object({\n saveLayout: optional(boolean())\n }))\n })\n);\n\nexport const getFrameSummaryConfigDecoder: Decoder<GetFrameSummaryConfig> = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const frameInitializationContextDecoder: Decoder<IOConnectWorkspaces.FrameInitializationContext> = object({\n context: optional(object())\n});\n\nexport const frameSummaryDecoder: Decoder<FrameSummaryResult> = object({\n id: nonEmptyStringDecoder,\n isFocused: optional(boolean()),\n isInitialized: optional(boolean()),\n initializationContext: optional(frameInitializationContextDecoder)\n});\n\nexport const containerSummaryDecoder: Decoder<IOConnectWorkspaces.BoxSummary> = object({\n type: subParentDecoder,\n id: nonEmptyStringDecoder,\n frameId: nonEmptyStringDecoder,\n workspaceId: nonEmptyStringDecoder,\n positionIndex: number()\n});\n\nexport const eventTypeDecoder: Decoder<WorkspaceEventType> = oneOf<\"frame\" | \"workspace\" | \"container\" | \"window\">(\n constant(\"frame\"),\n constant(\"workspace\"),\n constant(\"container\"),\n constant(\"window\")\n);\n\nexport const streamRequestArgumentsDecoder: Decoder<{ type: WorkspaceEventType; branch: string }> = object({\n type: eventTypeDecoder,\n branch: nonEmptyStringDecoder\n});\n\nexport const workspaceEventActionDecoder: Decoder<WorkspaceEventAction> = oneOf<\"opened\" | \"closing\" | \"closed\" | \"focus\" | \"added\" | \"loaded\" | \"removed\" | \"childrenUpdate\" | \"containerChange\" | \"maximized\" | \"restored\" | \"minimized\" | \"normal\" | \"selected\" | \"lock-configuration-changed\" | \"hibernated\" | \"resumed\">(\n constant(\"opened\"),\n constant(\"closing\"),\n constant(\"closed\"),\n constant(\"focus\"),\n constant(\"added\"),\n constant(\"loaded\"),\n constant(\"removed\"),\n constant(\"childrenUpdate\"),\n constant(\"containerChange\"),\n constant(\"maximized\"),\n constant(\"restored\"),\n constant(\"minimized\"),\n constant(\"normal\"),\n constant(\"selected\"),\n constant(\"lock-configuration-changed\"),\n constant(\"hibernated\"),\n constant(\"resumed\")\n);\n\nexport const workspaceConfigResultDecoder: Decoder<WorkspaceConfigResult> = object({\n frameId: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder,\n positionIndex: nonNegativeNumberDecoder,\n name: nonEmptyStringDecoder,\n layoutName: optional(nonEmptyStringDecoder),\n isHibernated: optional(boolean()),\n isSelected: optional(boolean()),\n allowDrop: optional(boolean()),\n allowSystemHibernation: optional(boolean()),\n allowExtract: optional(boolean()),\n allowWindowReorder: optional(boolean()),\n allowSplitters: optional(boolean()),\n showCloseButton: optional(boolean()),\n showSaveButton: optional(boolean()),\n allowWorkspaceTabReorder: optional(boolean()),\n allowWorkspaceTabExtract: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropBottom: optional(boolean()),\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number()),\n showAddWindowButtons: optional(boolean()),\n showEjectButtons: optional(boolean()),\n showWindowCloseButtons: optional(boolean()),\n widthInPx: optional(number()),\n heightInPx: optional(number()),\n isPinned: optional(boolean()),\n});\n\n// todo: remove number positionIndex when fixed\nexport const baseChildSnapshotConfigDecoder: Decoder<BaseChildSnapshotConfig> = object({\n frameId: nonEmptyStringDecoder,\n workspaceId: nonEmptyStringDecoder,\n positionIndex: number(),\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number())\n});\n\nexport const parentSnapshotConfigDecoder: Decoder<ParentSnapshotConfig> = anyJson();\n\nexport const swimlaneWindowSnapshotConfigDecoder: Decoder<SwimlaneWindowSnapshotConfig> = intersection(\n baseChildSnapshotConfigDecoder,\n object({\n windowId: optional(nonEmptyStringDecoder),\n isMaximized: optional(boolean()),\n isFocused: boolean(),\n isSelected: optional(boolean()),\n title: optional(string()),\n appName: optional(nonEmptyStringDecoder),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n minWidth: optional(number()),\n minHeight: optional(number()),\n maxWidth: optional(number()),\n maxHeight: optional(number()),\n widthInPx: optional(number()),\n heightInPx: optional(number()),\n context: optional(anyJson())\n })\n) as any;\n\nexport const customWorkspaceSubParentSnapshotDecoder: Decoder<SubParentSnapshotResult> = object({\n id: optional(nonEmptyStringDecoder),\n config: parentSnapshotConfigDecoder,\n children: optional(lazy(() => array(customWorkspaceChildSnapshotDecoder))),\n type: oneOf<\"row\" | \"column\" | \"group\">(\n constant(\"row\"),\n constant(\"column\"),\n constant(\"group\")\n )\n});\n\nexport const customWorkspaceWindowSnapshotDecoder: Decoder<WindowSnapshotResult> = object({\n id: optional(nonEmptyStringDecoder),\n config: swimlaneWindowSnapshotConfigDecoder,\n type: constant(\"window\")\n});\n\nexport const customWorkspaceChildSnapshotDecoder: Decoder<ChildSnapshotResult> = oneOf<WindowSnapshotResult | SubParentSnapshotResult>(\n customWorkspaceWindowSnapshotDecoder,\n customWorkspaceSubParentSnapshotDecoder);\n\nexport const childSnapshotResultDecoder: Decoder<ChildSnapshotResult> = customWorkspaceChildSnapshotDecoder;\n\nexport const workspaceSnapshotResultDecoder: Decoder<WorkspaceSnapshotResult> = object({\n id: nonEmptyStringDecoder,\n config: workspaceConfigResultDecoder,\n children: array(childSnapshotResultDecoder),\n frameSummary: frameSummaryDecoder,\n context: optional(anyJson())\n});\n\nexport const windowLayoutItemDecoder: Decoder<IOConnectWorkspaces.WindowLayoutItem> = object({\n type: constant(\"window\"),\n config: object({\n appName: nonEmptyStringDecoder,\n windowId: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n url: optional(nonEmptyStringDecoder),\n title: optional(string()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n minWidth: optional(number()),\n minHeight: optional(number()),\n maxWidth: optional(number()),\n maxHeight: optional(number()),\n isMaximized: optional(boolean())\n })\n});\n\nexport const groupLayoutItemDecoder: Decoder<IOConnectWorkspaces.GroupLayoutItem> = object({\n type: constant(\"group\"),\n config: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.WindowLayoutItem>(\n windowLayoutItemDecoder\n ))\n});\n\nexport const columnLayoutItemDecoder: Decoder<IOConnectWorkspaces.ColumnLayoutItem> = object({\n type: constant(\"column\"),\n config: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.RowLayoutItem | IOConnectWorkspaces.ColumnLayoutItem | IOConnectWorkspaces.GroupLayoutItem | IOConnectWorkspaces.WindowLayoutItem>(\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => columnLayoutItemDecoder),\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const rowLayoutItemDecoder: Decoder<IOConnectWorkspaces.RowLayoutItem> = object({\n type: constant(\"row\"),\n config: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.RowLayoutItem | IOConnectWorkspaces.ColumnLayoutItem | IOConnectWorkspaces.GroupLayoutItem | IOConnectWorkspaces.WindowLayoutItem>(\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const workspaceLayoutDecoder: Decoder<IOConnectWorkspaces.WorkspaceLayout> = object({\n name: nonEmptyStringDecoder,\n type: constant(\"Workspace\"),\n metadata: optional(anyJson()),\n components: array(object({\n type: constant(\"Workspace\"),\n application: optional(string()),\n state: object({\n config: anyJson(),\n context: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.RowLayoutItem | IOConnectWorkspaces.ColumnLayoutItem | IOConnectWorkspaces.GroupLayoutItem | IOConnectWorkspaces.WindowLayoutItem>(\n rowLayoutItemDecoder,\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder\n ))\n })\n }))\n});\n\nexport const workspacesImportLayoutDecoder: Decoder<{ layout: IOConnectWorkspaces.WorkspaceLayout; mode: \"replace\" | \"merge\" }> = object({\n layout: workspaceLayoutDecoder,\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const workspacesImportLayoutsDecoder: Decoder<{ layouts: IOConnectWorkspaces.WorkspaceLayout[]; mode: \"replace\" | \"merge\" }> = object({\n layouts: array(workspaceLayoutDecoder),\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const exportedLayoutsResultDecoder: Decoder<ExportedLayoutsResult> = object({\n layouts: array(workspaceLayoutDecoder)\n});\n\nexport const frameSummaryResultDecoder: Decoder<FrameSummaryResult> = object({\n id: nonEmptyStringDecoder,\n isFocused: optional(boolean()),\n isInitialized: optional(boolean()),\n initializationContext: optional(frameInitializationContextDecoder)\n});\n\nexport const frameSummariesResultDecoder: Decoder<FrameSummariesResult> = object({\n summaries: array(frameSummaryResultDecoder)\n});\n\nexport const workspaceSummaryResultDecoder: Decoder<WorkspaceSummaryResult> = object({\n id: nonEmptyStringDecoder,\n config: workspaceConfigResultDecoder\n});\n\nexport const workspaceSummariesResultDecoder: Decoder<WorkspaceSummariesResult> = object({\n summaries: array(workspaceSummaryResultDecoder)\n});\n\nexport const frameSnapshotResultDecoder: Decoder<FrameSnapshotResult> = object({\n id: nonEmptyStringDecoder,\n config: anyJson(),\n workspaces: array(workspaceSnapshotResultDecoder)\n});\n\nexport const layoutSummaryDecoder: Decoder<LayoutSummary> = object({\n name: nonEmptyStringDecoder,\n applicationName: optional(string())\n});\n\nexport const layoutSummariesDecoder: Decoder<LayoutSummariesResult> = object({\n summaries: array(layoutSummaryDecoder)\n});\n\nexport const simpleWindowOperationSuccessResultDecoder: Decoder<SimpleWindowOperationSuccessResult> = object({\n windowId: nonEmptyStringDecoder\n});\n\nexport const voidResultDecoder: Decoder<{}> = anyJson();\n\nexport const frameStateResultDecoder: Decoder<FrameStateResult> = object({\n state: frameStateDecoder\n});\n\nexport const frameBoundsDecoder: Decoder<FrameBounds> = object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n});\n\nexport const frameBoundsResultDecoder: Decoder<FrameBoundsResult> = object({\n bounds: frameBoundsDecoder\n});\n\nexport const getWorkspaceIconResultDecoder: Decoder<GetWorkspaceIconResult> = object({\n icon: optional(nonEmptyStringDecoder)\n});\n\nexport const getPlatformFrameIdResultDecoder: Decoder<GetPlatformFrameIdResult> = object({\n id: optional(nonEmptyStringDecoder)\n});\n\nexport const operationCheckResultDecoder: Decoder<OperationCheckResult> = object({\n isSupported: boolean()\n});\n\nexport const resizeConfigDecoder: Decoder<IOConnectWorkspaces.ResizeConfig> = object({\n width: optional(positiveNumberDecoder),\n height: optional(positiveNumberDecoder),\n relative: optional(boolean())\n});\n\nexport const moveConfigDecoder: Decoder<IOConnectWorkspaces.MoveConfig> = object({\n top: optional(number()),\n left: optional(number()),\n relative: optional(boolean())\n});\n\nexport const simpleItemConfigDecoder: Decoder<SimpleItemConfig> = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const frameSnapshotConfigDecoder: Decoder<FrameSnapshotConfig> = object({\n itemId: nonEmptyStringDecoder,\n excludeIds: optional(boolean())\n});\n\nexport const frameStateConfigDecoder: Decoder<FrameStateConfig> = object({\n frameId: nonEmptyStringDecoder,\n requestedState: frameStateDecoder\n});\n\nexport const setItemTitleConfigDecoder: Decoder<SetItemTitleConfig> = object({\n itemId: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder\n});\n\nexport const moveWindowConfigDecoder: Decoder<MoveWindowConfig> = object({\n itemId: nonEmptyStringDecoder,\n containerId: nonEmptyStringDecoder\n});\n\nexport const resizeItemConfigDecoder: Decoder<ResizeItemConfig> = intersection(\n simpleItemConfigDecoder,\n resizeConfigDecoder\n);\n\nexport const setMaximizationBoundaryConfigDecoder: Decoder<SetMaximizationBoundaryConfig> = object({\n itemId: nonEmptyStringDecoder,\n enabled: boolean()\n});\n\nexport const moveFrameConfigDecoder: Decoder<MoveFrameConfig> = intersection(\n simpleItemConfigDecoder,\n moveConfigDecoder\n);\n\nexport const simpleParentDecoder: Decoder<{ id: string; type: \"row\" | \"column\" | \"group\" }> = object({\n id: nonEmptyStringDecoder,\n type: subParentDecoder\n});\n\nexport const addWindowConfigDecoder: Decoder<AddWindowConfig> = object({\n definition: swimlaneWindowDefinitionDecoder,\n parentId: nonEmptyStringDecoder,\n parentType: allParentDecoder\n});\n\nexport const addContainerConfigDecoder: Decoder<AddContainerConfig> = object({\n definition: strictParentDefinitionDecoder,\n parentId: nonEmptyStringDecoder,\n parentType: allParentDecoder\n});\n\nexport const addItemResultDecoder: Decoder<AddItemResult> = object({\n itemId: nonEmptyStringDecoder,\n windowId: optional(nonEmptyStringDecoder)\n});\n\nexport const pingResultDecoder: Decoder<PingResult> = object({\n live: boolean()\n});\n\nexport const bundleWorkspaceConfigDecoder: Decoder<BundleWorkspaceConfig> = object({\n type: oneOf<\"row\" | \"column\">(\n constant(\"row\"),\n constant(\"column\")\n ),\n workspaceId: nonEmptyStringDecoder\n});\n\nexport const bundleItemConfigDecoder: Decoder<ItemBundleConfig> = object({\n type: oneOf<\"row\" | \"column\">(\n constant(\"row\"),\n constant(\"column\")\n ),\n itemId: nonEmptyStringDecoder\n});\n\nexport const containerSummaryResultDecoder: Decoder<ContainerSummaryResult> = object({\n itemId: nonEmptyStringDecoder,\n config: parentSnapshotConfigDecoder\n});\n\nexport const frameStreamDataDecoder: Decoder<FrameStreamData> = object({\n frameSummary: frameSummaryDecoder,\n frameBounds: optional(frameBoundsDecoder)\n});\n\nexport const workspaceStreamDataDecoder: Decoder<WorkspaceStreamData> = object({\n workspaceSummary: workspaceSummaryResultDecoder,\n frameSummary: frameSummaryDecoder,\n workspaceSnapshot: optional(workspaceSnapshotResultDecoder),\n frameBounds: optional(frameBoundsDecoder)\n});\n\nexport const containerStreamDataDecoder: Decoder<ContainerStreamData> = object({\n containerSummary: containerSummaryResultDecoder\n});\n\nexport const windowStreamDataDecoder: Decoder<WindowStreamData> = object({\n windowSummary: object({\n itemId: nonEmptyStringDecoder,\n parentId: nonEmptyStringDecoder,\n config: swimlaneWindowSnapshotConfigDecoder\n })\n});\n\nexport const workspaceLayoutSaveConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceLayoutSaveConfig> = object({\n name: nonEmptyStringDecoder,\n workspaceId: nonEmptyStringDecoder,\n saveContext: optional(boolean()),\n metadata: optional(object())\n});\n\nexport const workspaceLockConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceLockConfig> = object({\n allowDrop: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropBottom: optional(boolean()),\n allowSystemHibernation: optional(boolean()),\n allowExtract: optional(boolean()),\n allowWindowReorder: optional(boolean()),\n allowSplitters: optional(boolean()),\n showCloseButton: optional(boolean()),\n showSaveButton: optional(boolean()),\n allowWorkspaceTabReorder: optional(boolean()),\n allowWorkspaceTabExtract: optional(boolean()),\n showWindowCloseButtons: optional(boolean()),\n showAddWindowButtons: optional(boolean()),\n showEjectButtons: optional(boolean()),\n});\n\nexport const lockWorkspaceDecoder: Decoder<LockWorkspaceConfig> = object({\n workspaceId: nonEmptyStringDecoder,\n config: optional(workspaceLockConfigDecoder)\n});\n\nexport const windowLockConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowLockConfig> = object({\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean())\n});\n\nexport const elementResizeConfigDecoder: Decoder<IOConnectWorkspaces.ElementResizeConfig> = object({\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const lockWindowDecoder: Decoder<LockWindowConfig> = object({\n windowPlacementId: nonEmptyStringDecoder,\n config: optional(windowLockConfigDecoder)\n});\n\nexport const rowLockConfigDecoder: Decoder<IOConnectWorkspaces.RowLockConfig> = object({\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n});\n\nexport const columnLockConfigDecoder: Decoder<IOConnectWorkspaces.ColumnLockConfig> = object({\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n});\n\nexport const groupLockConfigDecoder: Decoder<IOConnectWorkspaces.GroupLockConfig> = object({\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n allowDrop: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropBottom: optional(boolean()),\n allowDropHeader: optional(boolean()),\n showMaximizeButton: optional(boolean()),\n showEjectButton: optional(boolean()),\n showAddWindowButton: optional(boolean()),\n});\n\nexport const lockRowDecoder: Decoder<LockRowConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: constant(\"row\"),\n config: optional(rowLockConfigDecoder)\n});\n\nexport const lockColumnDecoder: Decoder<LockColumnConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: constant(\"column\"),\n config: optional(columnLockConfigDecoder)\n});\n\nexport const lockGroupDecoder: Decoder<LockGroupConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: constant(\"group\"),\n config: optional(groupLockConfigDecoder)\n});\n\nexport const lockContainerDecoder: Decoder<LockContainerConfig> = oneOf<LockGroupConfig | LockColumnConfig | LockRowConfig>(lockRowDecoder, lockColumnDecoder, lockGroupDecoder);\n\nexport const pinWorkspaceDecoder: Decoder<PinWorkspaceConfig> = object({\n workspaceId: nonEmptyStringDecoder,\n icon: optional(nonEmptyStringDecoder)\n});\n\nexport const setWorkspaceIconDecoder: Decoder<SetWorkspaceIconConfig> = object({\n workspaceId: nonEmptyStringDecoder,\n icon: optional(nonEmptyStringDecoder) // to enable the user to remove the icon from the workspace altogether\n});\n\nexport const workspacePinOptionsDecoder: Decoder<IOConnectWorkspaces.WorkspacePinOptions> = optional(object({\n icon: optional(nonEmptyStringDecoder)\n}));\n\nexport const shortcutConfigDecoder: Decoder<ShortcutConfig> = object({\n shortcut: nonEmptyStringDecoder,\n frameId: nonEmptyStringDecoder\n});\n\nexport const shortcutClickedDataDecoder: Decoder<ShortcutClickedData> = object({\n shortcut: nonEmptyStringDecoder,\n frameId: nonEmptyStringDecoder\n});\n\nexport const setMaximizationBoundaryAPIConfigDecoder: Decoder<IOConnectWorkspaces.SetMaximizationBoundaryConfig> = object({\n enabled: boolean()\n});\n\nexport const loadingAnimationConfigDecoder: Decoder<LoadingAnimationConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: loadingAnimationTypeDecoder\n});\n\nexport const operationCheckConfigDecoder: Decoder<OperationCheckConfig> = object({\n operation: nonEmptyStringDecoder\n});\n","import {\n isWindowInSwimlaneResultDecoder,\n frameSummaryDecoder,\n workspaceSnapshotResultDecoder,\n frameSummariesResultDecoder,\n workspaceCreateConfigDecoder,\n getFrameSummaryConfigDecoder,\n layoutSummariesDecoder,\n openWorkspaceConfigDecoder,\n workspaceSummariesResultDecoder,\n voidResultDecoder,\n exportedLayoutsResultDecoder,\n workspaceLayoutDecoder,\n deleteLayoutConfigDecoder,\n simpleItemConfigDecoder,\n resizeItemConfigDecoder,\n moveFrameConfigDecoder,\n frameSnapshotResultDecoder,\n simpleWindowOperationSuccessResultDecoder,\n setItemTitleConfigDecoder,\n moveWindowConfigDecoder,\n addWindowConfigDecoder,\n addContainerConfigDecoder,\n addItemResultDecoder,\n bundleWorkspaceConfigDecoder,\n workspaceStreamDataDecoder,\n frameStreamDataDecoder,\n containerStreamDataDecoder,\n windowStreamDataDecoder,\n workspaceLayoutSaveConfigDecoder,\n pingResultDecoder,\n frameStateConfigDecoder,\n frameStateResultDecoder,\n workspacesImportLayoutDecoder,\n workspaceSelectorDecoder,\n lockWorkspaceDecoder,\n lockWindowDecoder,\n lockContainerDecoder,\n frameBoundsResultDecoder,\n getWorkspaceIconResultDecoder,\n pinWorkspaceDecoder,\n setWorkspaceIconDecoder,\n frameSummaryResultDecoder,\n emptyFrameDefinitionDecoder,\n frameInitProtocolConfigDecoder,\n shortcutClickedDataDecoder,\n shortcutConfigDecoder,\n frameSnapshotConfigDecoder,\n setMaximizationBoundaryConfigDecoder,\n loadingAnimationConfigDecoder,\n getPlatformFrameIdResultDecoder,\n workspacesImportLayoutsDecoder,\n bundleItemConfigDecoder,\n operationCheckConfigDecoder,\n operationCheckResultDecoder\n} from \"../shared/decoders\";\nimport { ControlOperation, StreamOperation } from \"../types/protocol\";\nimport { WorkspaceEventType } from \"../types/subscription\";\n\ntype OperationsTypes = \"isWindowInWorkspace\" |\n \"createWorkspace\" |\n \"getAllFramesSummaries\" |\n \"getFrameSummary\" |\n \"getAllWorkspacesSummaries\" |\n \"getWorkspaceSnapshot\" |\n \"getAllLayoutsSummaries\" |\n \"openWorkspace\" |\n \"deleteLayout\" |\n \"saveLayout\" |\n \"importLayout\" |\n \"importLayouts\" |\n \"exportAllLayouts\" |\n \"restoreItem\" |\n \"maximizeItem\" |\n \"focusItem\" |\n \"closeItem\" |\n \"resizeItem\" |\n \"setMaximizationBoundary\" |\n \"moveFrame\" |\n \"getFrameSnapshot\" |\n \"forceLoadWindow\" |\n \"ejectWindow\" |\n \"setItemTitle\" |\n \"moveWindowTo\" |\n \"addWindow\" |\n \"addContainer\" |\n \"bundleWorkspace\" |\n \"bundleItem\" |\n \"ping\" |\n \"changeFrameState\" |\n \"getFrameState\" |\n \"getFrameBounds\" |\n \"hibernateWorkspace\" |\n \"resumeWorkspace\" |\n \"lockWorkspace\" |\n \"lockWindow\" |\n \"lockContainer\" |\n \"pinWorkspace\" |\n \"unpinWorkspace\" |\n \"getWorkspaceIcon\" |\n \"setWorkspaceIcon\" |\n \"createFrame\" |\n \"registerShortcut\" |\n \"unregisterShortcut\" |\n \"initFrame\" |\n \"showLoadingAnimation\" |\n \"hideLoadingAnimation\" |\n \"getPlatformFrameId\" |\n \"operationCheck\";\ntype OutgoingMethodTypes = \"control\" | \"frameStream\" | \"workspaceStream\" | \"containerStream\" | \"windowStream\";\nexport type IncomingMethodTypes = \"control\";\n\nexport const webPlatformMethodName = \"T42.Web.Platform.Control\";\nexport const webPlatformWspStreamName = \"T42.Web.Platform.WSP.Stream\";\n\nexport const OUTGOING_METHODS: { [key in OutgoingMethodTypes]: { name: string; isStream: boolean } } = {\n control: { name: \"T42.Workspaces.Control\", isStream: false },\n frameStream: { name: \"T42.Workspaces.Stream.Frame\", isStream: true },\n workspaceStream: { name: \"T42.Workspaces.Stream.Workspace\", isStream: true },\n containerStream: { name: \"T42.Workspaces.Stream.Container\", isStream: true },\n windowStream: { name: \"T42.Workspaces.Stream.Window\", isStream: true }\n};\n\nexport const INCOMING_METHODS: { [key in IncomingMethodTypes]: { name: string; isStream: boolean } } = {\n control: { name: \"T42.Workspaces.Client.Control\", isStream: false },\n};\n\nexport const STREAMS: { [key in WorkspaceEventType]: StreamOperation } = {\n frame: { name: \"T42.Workspaces.Stream.Frame\", payloadDecoder: frameStreamDataDecoder },\n workspace: { name: \"T42.Workspaces.Stream.Workspace\", payloadDecoder: workspaceStreamDataDecoder },\n container: { name: \"T42.Workspaces.Stream.Container\", payloadDecoder: containerStreamDataDecoder },\n window: { name: \"T42.Workspaces.Stream.Window\", payloadDecoder: windowStreamDataDecoder }\n};\n\ninterface ShortcutClicked {\n operation: \"shortcutClicked\",\n data: {\n shortcut: string;\n frameId: string;\n }\n}\n\nexport type ClientOperations = ShortcutClicked;\n\nexport type OnOperationsTypes = \"shortcutClicked\";\n\nexport const CLIENT_OPERATIONS: { [key in OnOperationsTypes]: ControlOperation } = {\n shortcutClicked: { name: \"shortcutClicked\", argsDecoder: shortcutClickedDataDecoder, resultDecoder: voidResultDecoder },\n};\n\nexport const OPERATIONS: { [key in OperationsTypes]: ControlOperation } = {\n ping: { name: \"ping\", resultDecoder: pingResultDecoder },\n isWindowInWorkspace: { name: \"isWindowInWorkspace\", argsDecoder: simpleItemConfigDecoder, resultDecoder: isWindowInSwimlaneResultDecoder },\n createWorkspace: { name: \"createWorkspace\", resultDecoder: workspaceSnapshotResultDecoder, argsDecoder: workspaceCreateConfigDecoder },\n createFrame: { name: \"createFrame\", resultDecoder: frameSummaryResultDecoder, argsDecoder: emptyFrameDefinitionDecoder },\n initFrame: { name: \"initFrame\", resultDecoder: voidResultDecoder, argsDecoder: frameInitProtocolConfigDecoder },\n getAllFramesSummaries: { name: \"getAllFramesSummaries\", resultDecoder: frameSummariesResultDecoder },\n getFrameSummary: { name: \"getFrameSummary\", resultDecoder: frameSummaryDecoder, argsDecoder: getFrameSummaryConfigDecoder },\n getAllWorkspacesSummaries: { name: \"getAllWorkspacesSummaries\", resultDecoder: workspaceSummariesResultDecoder },\n getWorkspaceSnapshot: { name: \"getWorkspaceSnapshot\", resultDecoder: workspaceSnapshotResultDecoder, argsDecoder: simpleItemConfigDecoder },\n getAllLayoutsSummaries: { name: \"getAllLayoutsSummaries\", resultDecoder: layoutSummariesDecoder },\n openWorkspace: { name: \"openWorkspace\", argsDecoder: openWorkspaceConfigDecoder, resultDecoder: workspaceSnapshotResultDecoder },\n deleteLayout: { name: \"deleteLayout\", resultDecoder: voidResultDecoder, argsDecoder: deleteLayoutConfigDecoder },\n saveLayout: { name: \"saveLayout\", resultDecoder: workspaceLayoutDecoder, argsDecoder: workspaceLayoutSaveConfigDecoder },\n importLayout: { name: \"importLayout\", resultDecoder: voidResultDecoder, argsDecoder: workspacesImportLayoutDecoder },\n importLayouts: { name: \"importLayouts\", resultDecoder: voidResultDecoder, argsDecoder: workspacesImportLayoutsDecoder },\n exportAllLayouts: { name: \"exportAllLayouts\", resultDecoder: exportedLayoutsResultDecoder },\n restoreItem: { name: \"restoreItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n maximizeItem: { name: \"maximizeItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n focusItem: { name: \"focusItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n closeItem: { name: \"closeItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n resizeItem: { name: \"resizeItem\", argsDecoder: resizeItemConfigDecoder, resultDecoder: voidResultDecoder },\n setMaximizationBoundary: { name: \"setMaximizationBoundary\", argsDecoder: setMaximizationBoundaryConfigDecoder, resultDecoder: voidResultDecoder },\n changeFrameState: { name: \"changeFrameState\", argsDecoder: frameStateConfigDecoder, resultDecoder: voidResultDecoder },\n getFrameState: { name: \"getFrameState\", argsDecoder: simpleItemConfigDecoder, resultDecoder: frameStateResultDecoder },\n getFrameBounds: { name: \"getFrameBounds\", argsDecoder: simpleItemConfigDecoder, resultDecoder: frameBoundsResultDecoder },\n moveFrame: { name: \"moveFrame\", argsDecoder: moveFrameConfigDecoder, resultDecoder: voidResultDecoder },\n getFrameSnapshot: { name: \"getFrameSnapshot\", argsDecoder: frameSnapshotConfigDecoder, resultDecoder: frameSnapshotResultDecoder },\n forceLoadWindow: { name: \"forceLoadWindow\", argsDecoder: simpleItemConfigDecoder, resultDecoder: simpleWindowOperationSuccessResultDecoder },\n ejectWindow: { name: \"ejectWindow\", argsDecoder: simpleItemConfigDecoder, resultDecoder: simpleWindowOperationSuccessResultDecoder },\n setItemTitle: { name: \"setItemTitle\", argsDecoder: setItemTitleConfigDecoder, resultDecoder: voidResultDecoder },\n moveWindowTo: { name: \"moveWindowTo\", argsDecoder: moveWindowConfigDecoder, resultDecoder: voidResultDecoder },\n addWindow: { name: \"addWindow\", argsDecoder: addWindowConfigDecoder, resultDecoder: addItemResultDecoder },\n addContainer: { name: \"addContainer\", argsDecoder: addContainerConfigDecoder, resultDecoder: addItemResultDecoder },\n bundleWorkspace: { name: \"bundleWorkspace\", argsDecoder: bundleWorkspaceConfigDecoder, resultDecoder: voidResultDecoder },\n bundleItem: { name: \"bundleItem\", argsDecoder: bundleItemConfigDecoder, resultDecoder: voidResultDecoder },\n hibernateWorkspace: { name: \"hibernateWorkspace\", argsDecoder: workspaceSelectorDecoder, resultDecoder: voidResultDecoder },\n resumeWorkspace: { name: \"resumeWorkspace\", argsDecoder: workspaceSelectorDecoder, resultDecoder: voidResultDecoder },\n lockWorkspace: { name: \"lockWorkspace\", argsDecoder: lockWorkspaceDecoder, resultDecoder: voidResultDecoder },\n lockWindow: { name: \"lockWindow\", argsDecoder: lockWindowDecoder, resultDecoder: voidResultDecoder },\n lockContainer: { name: \"lockContainer\", argsDecoder: lockContainerDecoder, resultDecoder: voidResultDecoder },\n pinWorkspace: { name: \"pinWorkspace\", argsDecoder: pinWorkspaceDecoder, resultDecoder: voidResultDecoder },\n unpinWorkspace: { name: \"unpinWorkspace\", argsDecoder: workspaceSelectorDecoder, resultDecoder: voidResultDecoder },\n getWorkspaceIcon: { name: \"getWorkspaceIcon\", argsDecoder: workspaceSelectorDecoder, resultDecoder: getWorkspaceIconResultDecoder },\n setWorkspaceIcon: { name: \"setWorkspaceIcon\", argsDecoder: setWorkspaceIconDecoder, resultDecoder: voidResultDecoder },\n registerShortcut: { name: \"registerShortcut\", argsDecoder: shortcutConfigDecoder, resultDecoder: voidResultDecoder },\n unregisterShortcut: { name: \"unregisterShortcut\", argsDecoder: shortcutConfigDecoder, resultDecoder: voidResultDecoder },\n showLoadingAnimation: { name: \"showLoadingAnimation\", argsDecoder: loadingAnimationConfigDecoder, resultDecoder: voidResultDecoder },\n hideLoadingAnimation: { name: \"hideLoadingAnimation\", argsDecoder: loadingAnimationConfigDecoder, resultDecoder: voidResultDecoder },\n getPlatformFrameId: { name: \"getPlatformFrameId\", resultDecoder: getPlatformFrameIdResultDecoder },\n operationCheck: { name: \"operationCheck\", argsDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\n};\n","export class PromiseWrapper<T> {\r\n public resolve: (value: T | PromiseLike<T>) => void;\r\n public reject: (err: string) => void;\r\n public readonly promise: Promise<T>;\r\n constructor() {\r\n this.promise = new Promise<T>((res, rej) => {\r\n this.resolve = res;\r\n this.reject = rej;\r\n });\r\n }\r\n}","import { CallbackRegistry, UnsubscribeFunction } from \"callback-registry\";\nimport { SubscriptionConfig, ActiveSubscription, WorkspaceEventType, WorkspaceEventAction, WorkspacePayload, WorkspaceEventScope, PendingSubscription } from \"../types/subscription\";\nimport { ClientOperations, CLIENT_OPERATIONS, STREAMS } from \"./constants\";\nimport { OPERATIONS } from \"./constants\";\nimport { eventTypeDecoder, streamRequestArgumentsDecoder, workspaceEventActionDecoder } from \"../shared/decoders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { InteropTransport } from \"./interop-transport\";\nimport { PromiseWrapper } from \"../shared/promiseWrapper\";\nimport { Instance } from \"../types/glue\";\n\nexport class Bridge {\n\n private readonly activeSubscriptions: ActiveSubscription[] = [];\n private readonly pendingSubScriptions: PendingSubscription[] = [];\n\n constructor(\n private readonly transport: InteropTransport,\n private readonly registry: CallbackRegistry\n ) { }\n\n public async createCoreEventSubscription(): Promise<void> {\n await this.transport.coreSubscriptionReady(this.handleCoreEvent.bind(this));\n }\n\n public handleCoreSubscription(config: SubscriptionConfig): UnsubscribeFunction {\n const registryKey = `${config.eventType}-${config.action}`;\n const scope = config.scope;\n const scopeId = config.scopeId;\n\n return this.registry.add(registryKey, (args) => {\n const scopeConfig = {\n type: scope,\n id: scopeId\n };\n\n const receivedIds = {\n frame: args.frameSummary?.id || args.windowSummary?.config.frameId,\n workspace: args.workspaceSummary?.id || args.windowSummary?.config.workspaceId,\n container: args.containerSummary?.itemId,\n window: args.windowSummary?.itemId\n };\n\n const shouldInvokeCallback = this.checkScopeMatch(scopeConfig, receivedIds);\n\n if (!shouldInvokeCallback) {\n return;\n }\n\n config.callback(args);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async send<T>(operationName: string, operationArgs?: any): Promise<T> {\n\n const operationDefinition = Object.values(OPERATIONS).find((operation) => operation.name === operationName);\n\n if (!operationDefinition) {\n throw new Error(`Cannot find definition for operation name: ${operationName}`);\n }\n\n if (operationDefinition.argsDecoder) {\n try {\n operationDefinition.argsDecoder.runWithException(operationArgs);\n } catch (error) {\n throw new Error(`Unexpected internal outgoing validation error: ${error.message}, for input: ${JSON.stringify(error.input)}, for operation ${operationName}`);\n }\n }\n\n try {\n const operationResult = await this.transport.transmitControl(operationDefinition.name, operationArgs);\n\n operationDefinition.resultDecoder.runWithException(operationResult);\n\n return operationResult;\n } catch (error) {\n if (error.kind) {\n throw new Error(`Unexpected internal incoming validation error: ${error.message}, for input: ${JSON.stringify(error.input)}, for operation ${operationName}`);\n }\n throw new Error(error.message);\n }\n }\n\n public async subscribe(config: SubscriptionConfig): Promise<IOConnectWorkspaces.Unsubscribe> {\n const pendingSub = this.getPendingSubscription(config);\n if (pendingSub) {\n await pendingSub.promise;\n }\n\n let activeSub = this.getActiveSubscription(config);\n const registryKey = this.getRegistryKey(config);\n\n if (!activeSub) {\n const pendingPromise = new PromiseWrapper<void>();\n const pendingSubscription = {\n streamType: config.eventType,\n level: config.scope,\n levelId: config.scopeId,\n promise: pendingPromise.promise\n };\n this.pendingSubScriptions.push(pendingSubscription);\n try {\n const stream = STREAMS[config.eventType];\n const gdSub = await this.transport.subscribe(stream.name, this.getBranchKey(config), config.eventType);\n\n gdSub.onData((streamData) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = streamData.data as { action: string; payload: any };\n\n // important to decode without exception, because we do not want to throw an exception here\n const requestedArgumentsResult = streamRequestArgumentsDecoder.run(streamData.requestArguments);\n const actionResult = workspaceEventActionDecoder.run(data.action);\n\n if (!requestedArgumentsResult.ok || !actionResult.ok) {\n return;\n }\n\n const streamType = requestedArgumentsResult.result.type;\n const branch = requestedArgumentsResult.result.branch;\n\n const keyToExecute = `${streamType}-${branch}-${actionResult.result}`;\n const validatedPayload = STREAMS[streamType].payloadDecoder.run(data.payload);\n if (!validatedPayload.ok) {\n return;\n }\n\n this.registry.execute(keyToExecute, validatedPayload.result);\n });\n\n activeSub = {\n streamType: config.eventType,\n level: config.scope,\n levelId: config.scopeId,\n callbacksCount: 0,\n gdSub\n };\n\n this.activeSubscriptions.push(activeSub);\n\n pendingPromise.resolve();\n } catch (error) {\n pendingPromise.reject(error);\n\n throw error;\n } finally {\n this.removePendingSubscription(pendingSubscription);\n }\n\n }\n\n const unsubscribe = this.registry.add(registryKey, config.callback);\n\n ++activeSub.callbacksCount;\n\n return (): void => {\n unsubscribe();\n\n --activeSub.callbacksCount;\n\n if (activeSub.callbacksCount === 0) {\n activeSub.gdSub.close();\n this.activeSubscriptions.splice(this.activeSubscriptions.indexOf(activeSub), 1);\n }\n };\n }\n\n public onOperation(callback: (operation: ClientOperations, caller: Instance) => void) {\n\n const wrappedCallback = (payload: ClientOperations, caller: Instance) => {\n const operationName = payload.operation;\n const operationArgs = payload.data;\n const operationDefinition = Object.values(CLIENT_OPERATIONS).find((operation) => operation.name === operationName);\n\n if (!operationDefinition) {\n throw new Error(`Cannot find definition for operation name: ${operationName}`);\n }\n\n if (operationDefinition.argsDecoder) {\n try {\n operationDefinition.argsDecoder.runWithException(operationArgs);\n } catch (error) {\n throw new Error(`Unexpected internal outgoing validation error: ${error.message}, for input: ${JSON.stringify(error.input)}, for operation ${operationName}`);\n }\n }\n\n callback(payload, caller);\n };\n\n return this.transport.onInternalMethodInvoked(\"control\", wrappedCallback);\n }\n\n private checkScopeMatch(scope: { type: WorkspaceEventScope; id?: string }, receivedIds: { frame: string; workspace: string; container: string; window: string }): boolean {\n\n if (scope.type === \"global\") {\n return true;\n }\n\n if (scope.type === \"frame\" && scope.id === receivedIds.frame) {\n return true;\n }\n\n if (scope.type === \"workspace\" && scope.id === receivedIds.workspace) {\n return true;\n }\n\n if (scope.type === \"container\" && scope.id === receivedIds.container) {\n return true;\n }\n\n if (scope.type === \"window\" && scope.id === receivedIds.window) {\n return true;\n }\n\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleCoreEvent(args: any): void {\n const data = args.data;\n try {\n const verifiedAction: WorkspaceEventAction = workspaceEventActionDecoder.runWithException(data.action);\n const verifiedType: WorkspaceEventType = eventTypeDecoder.runWithException(data.type);\n const verifiedPayload: WorkspacePayload = STREAMS[verifiedType].payloadDecoder.runWithException(data.payload);\n\n const registryKey = `${verifiedType}-${verifiedAction}`;\n\n this.registry.execute(registryKey, verifiedPayload);\n } catch (error) {\n console.warn(`Cannot handle event with data ${JSON.stringify(data)}, because of validation error: ${error.message}`);\n }\n }\n\n private getBranchKey(config: SubscriptionConfig): string {\n return config.scope === \"global\" ? config.scope : `${config.scope}_${config.scopeId}`;\n }\n\n private getRegistryKey(config: SubscriptionConfig): string {\n return `${config.eventType}-${this.getBranchKey(config)}-${config.action}`;\n }\n\n private getActiveSubscription(config: SubscriptionConfig): ActiveSubscription {\n return this.activeSubscriptions\n .find((activeSub) => activeSub.streamType === config.eventType &&\n activeSub.level === config.scope &&\n activeSub.levelId === config.scopeId\n );\n }\n\n private getPendingSubscription(config: SubscriptionConfig): PendingSubscription {\n return this.pendingSubScriptions\n .find((activeSub) => activeSub.streamType === config.eventType &&\n activeSub.level === config.scope &&\n activeSub.levelId === config.scopeId\n );\n }\n\n private removePendingSubscription(pendingSubscription: PendingSubscription): void {\n const index = this.pendingSubScriptions.indexOf(pendingSubscription);\n\n if (index >= 0) {\n this.pendingSubScriptions.splice(index, 1);\n }\n }\n}\n","export const promisePlus = <T>(promise: () => Promise<T>, timeoutMilliseconds: number, timeoutMessage?: string): Promise<T> => {\n return new Promise<T>((resolve, reject) => {\n\n let promiseActive = true;\n\n const timeout = setTimeout(() => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n\n reject(message);\n }, timeoutMilliseconds);\n\n promise()\n .then((result) => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ClientOperations, IncomingMethodTypes, INCOMING_METHODS, OUTGOING_METHODS, webPlatformMethodName, webPlatformWspStreamName } from \"./constants\";\nimport { promisePlus } from \"../shared/promisePlus\";\nimport { WorkspaceEventType } from \"../types/subscription\";\nimport { InteropAPI, Subscription, InvocationResult, Instance } from \"../types/glue\";\nimport { CallbackRegistry } from \"callback-registry\";\n\nexport class InteropTransport {\n\n private readonly defaultTransportTimeout: number = 30000;\n private coreEventMethodInitiated = false;\n private corePlatformSubPromise: Promise<Subscription>;\n\n constructor(private readonly agm: InteropAPI,\n private readonly registry: CallbackRegistry) { }\n\n public async initiate(actualWindowId: string): Promise<void> {\n\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (desktopGlobal) {\n await Promise.all(\n Object.values(OUTGOING_METHODS).map((method) => {\n return this.verifyMethodLive(method.name);\n })\n );\n\n await Promise.all(\n Object.keys(INCOMING_METHODS).map((method: IncomingMethodTypes) => {\n return this.registerMethod(method);\n })\n );\n\n return;\n }\n\n const browserGlobal = (window as any).glue42core || (window as any).iobrowser;\n\n const systemId = browserGlobal.communicationId;\n\n await Promise.all([\n this.verifyMethodLive(webPlatformMethodName, systemId),\n this.verifyMethodLive(webPlatformWspStreamName, systemId)\n ]);\n\n await this.transmitControl(\"frameHello\", { windowId: actualWindowId });\n }\n\n public coreSubscriptionReady(eventCallback: (args?: any) => void): Promise<Subscription> {\n if (!this.coreEventMethodInitiated) {\n this.subscribePlatform(eventCallback);\n }\n return this.corePlatformSubPromise;\n }\n\n public subscribePlatform(eventCallback: (args?: any) => void): void {\n this.coreEventMethodInitiated = true;\n\n const browserGlobal = (window as any).glue42core || (window as any).iobrowser;\n\n const systemId = browserGlobal.communicationId;\n\n this.corePlatformSubPromise = this.agm.subscribe(webPlatformWspStreamName, systemId ? { target: { instance: systemId } } : undefined);\n\n this.corePlatformSubPromise\n .then((sub) => {\n sub.onData((data) => eventCallback(data.data));\n });\n }\n\n public async subscribe(streamName: string, streamBranch: string, streamType: WorkspaceEventType): Promise<Subscription> {\n\n const subscriptionArgs = {\n branch: streamBranch,\n type: streamType\n };\n\n let subscription: Subscription;\n\n try {\n subscription = await this.agm.subscribe(streamName, { arguments: subscriptionArgs });\n } catch (error) {\n const message = `Internal subscription error! Error details: stream - ${streamName}, branch: ${streamBranch}. Internal message: ${error.message}`;\n throw new Error(message);\n }\n\n return subscription;\n }\n\n public async transmitControl(operation: string, operationArguments: any): Promise<any> {\n\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n const browserGlobal = (window as any).glue42core || (window as any).iobrowser;\n \n const invocationArguments = desktopGlobal ? { operation, operationArguments } : { operation, domain: \"workspaces\", data: operationArguments };\n const methodName = desktopGlobal ? OUTGOING_METHODS.control.name : webPlatformMethodName;\n\n const platformTarget = desktopGlobal ? undefined : browserGlobal.communicationId;\n\n let invocationResult: InvocationResult<any>;\n const baseErrorMessage = `Internal Workspaces Communication Error. Attempted operation: ${JSON.stringify(invocationArguments)}. `;\n\n // using the 0 index of the errors and values collections, because we expect only one server and\n // this is to safeguard in case in future we decide to deprecate the default returned/message properties in favor of using only collections\n try {\n invocationResult = await this.agm.invoke(methodName, invocationArguments, platformTarget ? { instance: platformTarget } : \"best\", { methodResponseTimeoutMs: this.defaultTransportTimeout });\n\n if (!invocationResult) {\n throw new Error(\"Received unsupported result from GD - empty result\");\n }\n\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\n throw new Error(\"Received unsupported result from GD - empty values collection\");\n }\n\n } catch (error) {\n if (error && error.all_errors && error.all_errors.length) {\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n const invocationErrorMessage = error.all_errors[0].message;\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\n\n }\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\n }\n\n return invocationResult.all_return_values[0].returned;\n }\n\n public onInternalMethodInvoked(key: IncomingMethodTypes, callback: (operation: ClientOperations, caller: Instance) => void) {\n return this.registry.add(key, callback);\n }\n\n private verifyMethodLive(name: string, systemId?: string): Promise<void> {\n return promisePlus(() => {\n return new Promise((resolve) => {\n const hasMethod = this.agm.methods().some((method) => {\n const nameMatch = method.name === name;\n \n const serverMatch = systemId ?\n method.getServers().some((server) => server.instance === systemId) :\n true;\n \n return nameMatch && serverMatch;\n });\n\n if (hasMethod) {\n resolve();\n return;\n }\n\n const unSub = this.agm.serverMethodAdded((data) => {\n const method = data.method;\n const server = data.server;\n \n const serverMatch = systemId ?\n server.instance === systemId :\n true;\n \n if (method.name === name && serverMatch) {\n unSub();\n resolve();\n }\n });\n });\n }, 15000, \"Timeout waiting for the Workspaces communication channels\");\n }\n\n private registerMethod(key: IncomingMethodTypes) {\n const method = INCOMING_METHODS[key];\n return this.agm.register(method.name, (args, caller) => {\n this.registry.execute(key, args, caller);\n });\n }\n}\n","import { BaseBuilder } from \"./baseBuilder\";\nimport { ChildBuilder } from \"../types/builders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\n\ninterface PrivateData {\n definition: IOConnectWorkspaces.BoxDefinition;\n base: BaseBuilder;\n children: ChildBuilder[];\n}\n\nconst privateData = new WeakMap<ParentBuilder, PrivateData>();\n\nexport class ParentBuilder implements ParentBuilder {\n\n constructor(\n definition: IOConnectWorkspaces.BoxDefinition,\n base: BaseBuilder\n ) {\n const children = base.wrapChildren(definition.children);\n\n delete definition.children;\n\n privateData.set(this, { base, children, definition });\n }\n\n public get type(): \"column\" | \"row\" | \"group\" {\n return privateData.get(this).definition.type;\n }\n\n public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n return base.add(\"column\", privateData.get(this).children, definition);\n }\n\n public addRow(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n return base.add(\"row\", privateData.get(this).children, definition);\n }\n\n public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n return base.add(\"group\", privateData.get(this).children, definition);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n base.addWindow(privateData.get(this).children, definition);\n\n return this;\n }\n\n public serialize(): IOConnectWorkspaces.BoxDefinition {\n const definition = privateData.get(this).definition;\n definition.children = privateData.get(this).base.serializeChildren(privateData.get(this).children);\n return definition;\n }\n\n}\n","import { ParentBuilder } from \"./parentBuilder\";\nimport { ChildDefinition, ChildBuilder } from \"../types/builders\";\nimport { parentDefinitionDecoder, swimlaneWindowDefinitionDecoder } from \"../shared/decoders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspaceBuilder } from \"./workspaceBuilder\";\n\nexport class BaseBuilder {\n\n constructor(\n private readonly getBuilder: (config: IOConnectWorkspaces.BuilderConfig) => ParentBuilder | WorkspaceBuilder,\n ) { }\n\n public wrapChildren(children: ChildDefinition[]): ChildBuilder[] {\n return children.map((child) => {\n if (child.type === \"window\") {\n return child;\n }\n\n return this.getBuilder({ type: child.type, definition: child }) as ParentBuilder;\n });\n }\n\n public add(type: \"row\" | \"column\" | \"group\", children: ChildBuilder[], definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const validatedDefinition = parentDefinitionDecoder.runWithException(definition);\n\n const childBuilder = this.getBuilder({ type, definition: validatedDefinition }) as ParentBuilder;\n\n children.push(childBuilder);\n\n return childBuilder;\n }\n\n public addWindow(children: ChildBuilder[], definition: IOConnectWorkspaces.WorkspaceWindowDefinition): void {\n const validatedDefinition = swimlaneWindowDefinitionDecoder.runWithException(definition);\n\n validatedDefinition.type = \"window\";\n\n children.push(validatedDefinition);\n }\n\n public serializeChildren(children: ChildBuilder[]): ChildDefinition[] {\n return children.map((child) => {\n if (child instanceof ParentBuilder) {\n return child.serialize();\n } else {\n return child as IOConnectWorkspaces.WorkspaceWindowDefinition;\n }\n });\n }\n}\n","import { BaseBuilder } from \"./baseBuilder\";\nimport { ChildBuilder } from \"../types/builders\";\nimport { ParentBuilder } from \"./parentBuilder\";\nimport { workspaceBuilderCreateConfigDecoder, nonNegativeNumberDecoder } from \"../shared/decoders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspacesController } from \"../types/controller\";\n\ninterface PrivateData {\n definition: IOConnectWorkspaces.WorkspaceDefinition;\n children: ChildBuilder[];\n base: BaseBuilder;\n controller: WorkspacesController;\n}\n\nconst privateData = new WeakMap<WorkspaceBuilder, PrivateData>();\n\nexport class WorkspaceBuilder implements WorkspaceBuilder {\n\n constructor(\n definition: IOConnectWorkspaces.WorkspaceDefinition,\n base: BaseBuilder,\n controller: WorkspacesController\n ) {\n const children = base.wrapChildren(definition.children);\n\n delete definition.children;\n\n privateData.set(this, { base, children, definition, controller });\n }\n\n public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const children = privateData.get(this).children;\n\n const areAllColumns = children.every((child) => child instanceof ParentBuilder && child.type === \"column\");\n\n if (!areAllColumns) {\n throw new Error(\"Cannot add a column to this workspace, because there are already children of another type\");\n }\n\n const base = privateData.get(this).base;\n\n return base.add(\"column\", children, definition);\n }\n\n public addRow(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const children = privateData.get(this).children;\n\n const areAllRows = children.every((child) => child instanceof ParentBuilder && child.type === \"row\");\n\n if (!areAllRows) {\n throw new Error(\"Cannot add a row to this workspace, because there are already children of another type\");\n }\n\n const base = privateData.get(this).base;\n\n return base.add(\"row\", children, definition);\n }\n\n public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const children = privateData.get(this).children;\n\n if (children.length !== 0) {\n throw new Error(\"Cannot add a group to this workspace, because there are already defined children.\");\n }\n\n const base = privateData.get(this).base;\n\n return base.add(\"group\", children, definition);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): WorkspaceBuilder {\n const children = privateData.get(this).children;\n\n if (children.length !== 0) {\n throw new Error(\"Cannot add a window to this workspace, because there are already defined children.\");\n }\n\n const base = privateData.get(this).base;\n\n base.addWindow(children, definition);\n\n return this;\n }\n\n public getChildAt(index: number): ChildBuilder {\n nonNegativeNumberDecoder.runWithException(index);\n const data = privateData.get(this).children;\n\n return data[index];\n }\n\n public async create(config?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<IOConnectWorkspaces.Workspace> {\n const saveConfig = workspaceBuilderCreateConfigDecoder.runWithException(config);\n\n const definition = privateData.get(this).definition;\n definition.children = privateData.get(this).base.serializeChildren(privateData.get(this).children);\n\n const controller = privateData.get(this).controller;\n\n return controller.createWorkspace(definition, saveConfig);\n }\n}\n","import { Base } from \"./base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { checkThrowCallback, nonNegativeNumberDecoder, rowLockConfigDecoder, setMaximizationBoundaryAPIConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\n\ninterface PrivateData {\n base: Base;\n}\n\nconst privateData = new WeakMap<Row, PrivateData>();\n\nconst getBase = (model: Row): Base => {\n return privateData.get(model).base;\n};\n\nexport class Row implements IOConnectWorkspaces.Row {\n\n constructor(base: Base) {\n privateData.set(this, { base });\n }\n\n public get type(): \"row\" {\n return \"row\";\n }\n\n public get id(): string {\n return getBase(this).getId(this);\n }\n\n public get frameId(): string {\n return getBase(this).getFrameId(this);\n }\n\n public get workspaceId(): string {\n return getBase(this).getWorkspaceId(this);\n }\n\n public get positionIndex(): number {\n return getBase(this).getPositionIndex(this);\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getBase(this).getAllChildren(this);\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.WorkspaceBox {\n return getBase(this).getMyParent(this);\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getBase(this).getMyFrame(this);\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getBase(this).getMyWorkspace(this);\n }\n\n public get allowDrop(): boolean {\n return getBase(this).getAllowDrop(this);\n }\n\n public get allowSplitters(): boolean {\n return getBase(this).getAllowSplitters(this);\n }\n\n public get minWidth(): number {\n return getBase(this).getMinWidth(this);\n }\n\n public get minHeight(): number {\n return getBase(this).getMinHeight(this);\n }\n\n public get maxWidth(): number {\n return getBase(this).getMaxWidth(this);\n }\n\n public get maxHeight(): number {\n return getBase(this).getMaxHeight(this);\n }\n\n public get width(): number {\n return getBase(this).getWidthInPx(this);\n }\n\n public get height(): number {\n return getBase(this).getHeightInPx(this);\n }\n\n public get isPinned(): boolean {\n return getBase(this).getIsPinned(this);\n }\n\n public get isMaximized(): boolean {\n return getBase(this).getIsMaximized(this);\n }\n\n public get maximizationBoundary(): boolean {\n return getBase(this).getMaximizationBoundary(this);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getBase(this).addWindow(this, definition, \"row\");\n }\n\n public async addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {\n if (definition?.type && definition.type !== \"group\") {\n throw new Error(`Expected a group definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Group>(this, \"group\", \"row\", definition);\n }\n\n public async addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Column> {\n if (definition?.type && definition.type !== \"column\") {\n throw new Error(`Expected a column definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Column>(this, \"column\", \"row\", definition);\n }\n\n public async addRow(): Promise<Row> {\n throw new Error(\"Adding rows as row children is not supported\");\n }\n\n public removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n return getBase(this).removeChild(this, predicate);\n }\n\n public maximize(): Promise<void> {\n return getBase(this).maximize(this);\n }\n\n public restore(): Promise<void> {\n return getBase(this).restore(this);\n }\n\n public close(): Promise<void> {\n return getBase(this).close(this);\n }\n\n public lock(config?: IOConnectWorkspaces.RowLockConfig | ((config: IOConnectWorkspaces.RowLockConfig) => IOConnectWorkspaces.RowLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n };\n\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n\n const verifiedConfig = lockConfigResult === undefined ? undefined : rowLockConfigDecoder.runWithException(lockConfigResult);\n\n return getBase(this).lockContainer(this, verifiedConfig);\n }\n\n public async setHeight(height: number): Promise<void> {\n nonNegativeNumberDecoder.runWithException(height);\n return getBase(this).setHeight(this, height);\n }\n\n\n public async onLockConfigurationChanged(callback: (config: IOConnectWorkspaces.RowLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getBase(this).getId(this);\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"container\",\n scope: \"container\"\n };\n const unsubscribe = await getBase(this).processLocalSubscription(this, config);\n return unsubscribe;\n }\n public async setMaximizationBoundary(config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n const validatedConfig = setMaximizationBoundaryAPIConfigDecoder.runWithException(config);\n return getBase(this).setMaximizationBoundary(this, validatedConfig);\n }\n\n}\n","import { Base } from \"./base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { checkThrowCallback, columnLockConfigDecoder, nonNegativeNumberDecoder, setMaximizationBoundaryAPIConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\n\ninterface PrivateData {\n base: Base;\n}\n\nconst privateData = new WeakMap<Column, PrivateData>();\n\nconst getBase = (model: Column): Base => {\n return privateData.get(model).base;\n};\n\nexport class Column implements IOConnectWorkspaces.Column {\n\n constructor(base: Base) {\n privateData.set(this, { base });\n }\n\n public get type(): \"column\" {\n return \"column\";\n }\n\n public get id(): string {\n return getBase(this).getId(this);\n }\n\n public get frameId(): string {\n return getBase(this).getFrameId(this);\n }\n\n public get workspaceId(): string {\n return getBase(this).getWorkspaceId(this);\n }\n\n public get positionIndex(): number {\n return getBase(this).getPositionIndex(this);\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getBase(this).getAllChildren(this);\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.WorkspaceBox {\n return getBase(this).getMyParent(this);\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getBase(this).getMyFrame(this);\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getBase(this).getMyWorkspace(this);\n }\n\n public get allowDrop(): boolean {\n return getBase(this).getAllowDrop(this);\n }\n\n public get allowSplitters(): boolean {\n return getBase(this).getAllowSplitters(this);\n }\n\n public get minWidth(): number {\n return getBase(this).getMinWidth(this);\n }\n\n public get minHeight(): number {\n return getBase(this).getMinHeight(this);\n }\n\n public get maxWidth(): number {\n return getBase(this).getMaxWidth(this);\n }\n\n public get maxHeight(): number {\n return getBase(this).getMaxHeight(this);\n }\n\n public get width(): number {\n return getBase(this).getWidthInPx(this);\n }\n\n public get height(): number {\n return getBase(this).getHeightInPx(this);\n }\n\n public get isPinned(): boolean {\n return getBase(this).getIsPinned(this);\n }\n\n public get isMaximized(): boolean {\n return getBase(this).getIsMaximized(this);\n }\n\n public get maximizationBoundary(): boolean {\n return getBase(this).getMaximizationBoundary(this);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getBase(this).addWindow(this, definition, \"column\");\n }\n\n public async addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {\n if (definition?.type && definition.type !== \"group\") {\n throw new Error(`Expected a group definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Group>(this, \"group\", \"column\", definition);\n }\n\n public async addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<Column> {\n throw new Error(\"Adding columns as column children is not supported\");\n return getBase(this).addParent<Column>(this, \"column\", \"column\", definition);\n }\n\n public async addRow(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Row> {\n if (definition?.type && definition.type !== \"row\") {\n throw new Error(`Expected a row definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Row>(this, \"row\", \"column\", definition);\n }\n\n public removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n return getBase(this).removeChild(this, predicate);\n }\n\n public maximize(): Promise<void> {\n return getBase(this).maximize(this);\n }\n\n public restore(): Promise<void> {\n return getBase(this).restore(this);\n }\n\n public close(): Promise<void> {\n return getBase(this).close(this);\n }\n\n public lock(config?: IOConnectWorkspaces.ColumnLockConfig | ((config: IOConnectWorkspaces.ColumnLockConfig) => IOConnectWorkspaces.ColumnLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n };\n\n lockConfigResult = config(currentLockConfig);\n\n } else {\n lockConfigResult = config;\n }\n const verifiedConfig = lockConfigResult === undefined ? undefined : columnLockConfigDecoder.runWithException(lockConfigResult);\n return getBase(this).lockContainer(this, verifiedConfig);\n }\n\n public async setWidth(width: number): Promise<void> {\n nonNegativeNumberDecoder.runWithException(width);\n return getBase(this).setWidth(this, width);\n }\n\n\n public async onLockConfigurationChanged(callback: (config: IOConnectWorkspaces.ColumnLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getBase(this).getId(this);\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"container\",\n scope: \"container\"\n };\n const unsubscribe = await getBase(this).processLocalSubscription(this, config);\n return unsubscribe;\n }\n public async setMaximizationBoundary(config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n const validatedConfig = setMaximizationBoundaryAPIConfigDecoder.runWithException(config);\n return getBase(this).setMaximizationBoundary(this, validatedConfig);\n\n }\n}\n","import { Base } from \"./base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { checkThrowCallback, elementResizeConfigDecoder, groupLockConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\n\ninterface PrivateData {\n base: Base;\n}\n\nconst privateData = new WeakMap<Group, PrivateData>();\n\nconst getBase = (model: Group): Base => {\n return privateData.get(model).base;\n};\n\nexport class Group implements IOConnectWorkspaces.Group {\n\n constructor(base: Base) {\n privateData.set(this, { base });\n }\n\n public get type(): \"group\" {\n return \"group\";\n }\n\n public get id(): string {\n return getBase(this).getId(this);\n }\n\n public get frameId(): string {\n return getBase(this).getFrameId(this);\n }\n\n public get workspaceId(): string {\n return getBase(this).getWorkspaceId(this);\n }\n\n public get positionIndex(): number {\n return getBase(this).getPositionIndex(this);\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getBase(this).getAllChildren(this);\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.WorkspaceBox {\n return getBase(this).getMyParent(this);\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getBase(this).getMyFrame(this);\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getBase(this).getMyWorkspace(this);\n }\n\n public get allowExtract(): boolean {\n return getBase(this).getAllowExtract(this);\n }\n\n public get allowReorder(): boolean {\n return getBase(this).getAllowReorder(this);\n }\n\n public get allowDropLeft(): boolean {\n return getBase(this).getAllowDropLeft(this);\n }\n\n public get allowDropRight(): boolean {\n return getBase(this).getAllowDropRight(this);\n }\n\n public get allowDropTop(): boolean {\n return getBase(this).getAllowDropTop(this);\n }\n\n public get allowDropBottom(): boolean {\n return getBase(this).getAllowDropBottom(this);\n }\n\n public get allowDropHeader(): boolean {\n return getBase(this).getAllowDropHeader(this);\n }\n\n public get allowDrop(): boolean {\n return getBase(this).getAllowDrop(this);\n }\n\n public get showMaximizeButton(): boolean {\n return getBase(this).getShowMaximizeButton(this);\n }\n\n public get showEjectButton(): boolean {\n return getBase(this).getShowEjectButton(this);\n }\n\n public get showAddWindowButton(): boolean {\n return getBase(this).getShowAddWindowButton(this);\n }\n\n public get minWidth(): number {\n return getBase(this).getMinWidth(this);\n }\n\n public get minHeight(): number {\n return getBase(this).getMinHeight(this);\n }\n\n public get maxWidth(): number {\n return getBase(this).getMaxWidth(this);\n }\n\n public get maxHeight(): number {\n return getBase(this).getMaxHeight(this);\n }\n\n public get width(): number {\n return getBase(this).getWidthInPx(this);\n }\n\n public get height(): number {\n return getBase(this).getHeightInPx(this);\n }\n\n public get isMaximized(): boolean {\n return getBase(this).getIsMaximized(this);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getBase(this).addWindow(this, definition, \"group\");\n }\n\n public async addGroup(): Promise<Group> {\n throw new Error(\"Adding groups as group child is not supported\");\n }\n\n public async addColumn(): Promise<IOConnectWorkspaces.Column> {\n throw new Error(\"Adding columns as group child is not supported\");\n }\n\n public async addRow(): Promise<IOConnectWorkspaces.Row> {\n throw new Error(\"Adding rows as group child is not supported\");\n }\n\n public removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n return getBase(this).removeChild(this, predicate);\n }\n\n public maximize(): Promise<void> {\n return getBase(this).maximize(this);\n }\n\n public restore(): Promise<void> {\n return getBase(this).restore(this);\n }\n\n public close(): Promise<void> {\n return getBase(this).close(this);\n }\n\n public lock(config?: IOConnectWorkspaces.GroupLockConfig | ((config: IOConnectWorkspaces.GroupLockConfig) => IOConnectWorkspaces.GroupLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowDropHeader: this.allowDropHeader,\n allowDropLeft: this.allowDropLeft,\n allowDropRight: this.allowDropRight,\n allowDropTop: this.allowDropTop,\n allowDropBottom: this.allowDropBottom,\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showAddWindowButton: this.showAddWindowButton,\n showEjectButton: this.showEjectButton,\n showMaximizeButton: this.showMaximizeButton\n };\n\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n const verifiedConfig = lockConfigResult === undefined ? undefined : groupLockConfigDecoder.runWithException(lockConfigResult);\n return getBase(this).lockContainer(this, verifiedConfig);\n }\n\n public async setSize(config: IOConnectWorkspaces.ElementResizeConfig): Promise<void> {\n const verifiedConfig = elementResizeConfigDecoder.runWithException(config);\n\n if (!verifiedConfig.width && !verifiedConfig.height) {\n throw new Error(\"Expected either width or height to be passed.\");\n }\n\n\n return getBase(this).setSize(this, config.width, config.height);\n }\n\n public async bundleToRow(): Promise<void> {\n await getBase(this).bundleTo(this, \"row\");\n await this.workspace.refreshReference();\n }\n\n public async bundleToColumn(): Promise<void> {\n await getBase(this).bundleTo(this, \"column\");\n await this.workspace.refreshReference();\n }\n\n public async onLockConfigurationChanged(callback: (config: IOConnectWorkspaces.GroupLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowDropHeader: this.allowDropHeader,\n allowDropLeft: this.allowDropLeft,\n allowDropTop: this.allowDropTop,\n allowDropRight: this.allowDropRight,\n allowDropBottom: this.allowDropBottom,\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showAddWindowButton: this.showAddWindowButton,\n showEjectButton: this.showEjectButton,\n showMaximizeButton: this.showMaximizeButton\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"container\",\n scope: \"container\"\n };\n const unsubscribe = await getBase(this).processLocalSubscription(this, config);\n return unsubscribe;\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WorkspaceSnapshotResult, WindowStreamData, WorkspaceStreamData } from \"../types/protocol\";\nimport { checkThrowCallback, nonEmptyStringDecoder, workspaceLockConfigDecoder, workspacePinOptionsDecoder } from \"../shared/decoders\";\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\nimport { FrameCreateConfig } from \"../types/ioc\";\nimport { Frame } from \"./frame\";\nimport { SubscriptionConfig } from \"../types/subscription\";\nimport { WorkspacePrivateData } from \"../types/privateData\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { Workspace as WorkspaceTemp, WorkspaceLockConfig } from \"../../temp\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Workspace, PrivateData>();\n\nconst getData = (model: Workspace): WorkspacePrivateData => {\n return data.get(model).manager.getWorkspaceData(model);\n};\n\nconst getDataManager = (model: Workspace): PrivateDataManager => {\n return data.get(model).manager;\n};\n\ntype SaveLayoutConfig = Omit<Omit<IOConnectWorkspaces.WorkspaceLayoutSaveConfig, \"name\">, \"workspaceId\">;\n\nexport class Workspace implements WorkspaceTemp {\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public get id(): string {\n return getData(this).id;\n }\n\n public get frameId(): string {\n return getData(this).config.frameId;\n }\n\n public get positionIndex(): number {\n return getData(this).config.positionIndex;\n }\n\n public get title(): string {\n return getData(this).config.title;\n }\n\n public get layoutName(): string {\n return getData(this).config.layoutName;\n }\n\n public get isHibernated(): boolean | undefined {\n return getData(this).config.isHibernated;\n }\n\n public get isSelected(): boolean {\n return getData(this).config.isSelected;\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getData(this).children;\n }\n\n public get frame(): Frame {\n return getData(this).frame;\n }\n\n public get allowSplitters(): boolean {\n return getData(this).config.allowSplitters;\n }\n\n public get allowSystemHibernation(): boolean {\n return getData(this).config.allowSystemHibernation;\n }\n\n public get allowDrop(): boolean {\n return getData(this).config.allowDrop;\n }\n\n public get allowDropLeft(): boolean {\n return getData(this).config.allowDropLeft;\n }\n\n public get allowDropTop(): boolean {\n return getData(this).config.allowDropTop;\n }\n\n public get allowDropRight(): boolean {\n return getData(this).config.allowDropRight;\n }\n\n public get allowDropBottom(): boolean {\n return getData(this).config.allowDropBottom;\n }\n\n public get allowExtract(): boolean {\n return getData(this).config.allowExtract;\n }\n\n public get allowWindowReorder(): boolean {\n return getData(this).config.allowWindowReorder;\n }\n\n public get showCloseButton(): boolean {\n return getData(this).config.showCloseButton;\n }\n\n public get showSaveButton(): boolean {\n return getData(this).config.showSaveButton;\n }\n\n public get allowWorkspaceTabReorder(): boolean {\n return getData(this).config.allowWorkspaceTabReorder;\n }\n\n public get allowWorkspaceTabExtract(): boolean {\n return getData(this).config.allowWorkspaceTabExtract;\n }\n\n public get minWidth(): number {\n return getData(this).config.minWidth;\n }\n\n public get minHeight(): number {\n return getData(this).config.minHeight;\n }\n\n public get maxWidth(): number {\n return getData(this).config.maxWidth;\n }\n\n public get maxHeight(): number {\n return getData(this).config.maxHeight;\n }\n\n public get width(): number {\n return getData(this).config.widthInPx;\n }\n\n public get height(): number {\n return getData(this).config.heightInPx;\n }\n\n public get showWindowCloseButtons(): boolean {\n return getData(this).config.showWindowCloseButtons;\n }\n\n public get showEjectButtons(): boolean {\n return getData(this).config.showEjectButtons;\n }\n\n public get showAddWindowButtons(): boolean {\n return getData(this).config.showAddWindowButtons;\n }\n\n public get isPinned(): boolean {\n return getData(this).config.isPinned;\n }\n\n public async removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n checkThrowCallback(predicate);\n const child = this.children.find(predicate);\n if (!child) {\n return;\n }\n await child.close();\n await this.refreshReference();\n }\n\n public async remove(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n checkThrowCallback(predicate);\n const controller = getData(this).controller;\n\n const child = controller.iterateFindChild(this.children, predicate);\n\n await child.close();\n\n await this.refreshReference();\n }\n\n public async focus(): Promise<void> {\n await getData(this).controller.focusItem(this.id);\n await this.refreshReference();\n }\n\n public async close(): Promise<void> {\n const controller = getData(this).controller;\n\n const workspaces = await getData(this).frame.workspaces();\n\n // should close the frame only if the frame is NOT a platform\n const platformFrameId = (await controller.getPlatformFrameId()).id;\n\n const shouldCloseFrame = workspaces.length === 1 &&\n workspaces.every((wsp) => wsp.id === this.id) &&\n platformFrameId !== this.frame.id;\n\n if (shouldCloseFrame) {\n return this.frame.close();\n }\n\n await controller.closeItem(this.id);\n }\n\n public snapshot(): Promise<IOConnectWorkspaces.WorkspaceSnapshot> {\n return getData(this).controller.getSnapshot(this.id, \"workspace\") as Promise<IOConnectWorkspaces.WorkspaceSnapshot>;\n }\n\n public async saveLayout(name: string, config?: SaveLayoutConfig): Promise<void> {\n nonEmptyStringDecoder.runWithException(name);\n await getData(this).controller.saveLayout({ name, workspaceId: this.id, saveContext: config?.saveContext, metadata: config?.metadata });\n }\n\n public async setTitle(title: string): Promise<void> {\n nonEmptyStringDecoder.runWithException(title);\n const controller = getData(this).controller;\n\n await controller.setItemTitle(this.id, title);\n await this.refreshReference();\n }\n\n public getContext(): Promise<any> {\n const controller = getData(this).controller;\n return controller.getWorkspaceContext(this.id);\n }\n\n public setContext(data: any): Promise<void> {\n const controller = getData(this).controller;\n return controller.setWorkspaceContext(this.id, data);\n }\n\n public updateContext(data: any): Promise<void> {\n const controller = getData(this).controller;\n return controller.updateWorkspaceContext(this.id, data);\n }\n\n public onContextUpdated(callback: (data: any) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n const controller = getData(this).controller;\n return controller.subscribeWorkspaceContextUpdated(this.id, callback);\n }\n\n public async refreshReference(): Promise<void> {\n const newSnapshot = (await getData(this).controller.getSnapshot(this.id, \"workspace\")) as WorkspaceSnapshotResult;\n\n const currentChildrenFlat = getData(this).controller.flatChildren(getData(this).children);\n\n const newChildren = getData(this).controller.refreshChildren({\n existingChildren: currentChildrenFlat,\n workspace: this,\n parent: this,\n children: newSnapshot.children\n });\n\n const currentFrame = this.frame;\n let actualFrame: Frame;\n\n if (currentFrame.id === newSnapshot.config.frameId) {\n getDataManager(this).remapFrame(currentFrame, newSnapshot.frameSummary);\n actualFrame = currentFrame;\n } else {\n const frameCreateConfig: FrameCreateConfig = {\n summary: newSnapshot.frameSummary\n };\n const newFrame = getData(this).ioc.getModel<\"frame\">(\"frame\", frameCreateConfig);\n actualFrame = newFrame;\n }\n\n getDataManager(this).remapWorkspace(this, {\n config: newSnapshot.config,\n children: newChildren,\n frame: actualFrame\n });\n }\n\n public async getIcon(): Promise<string> {\n const controller = getData(this).controller;\n return controller.getWorkspaceIcon(this.id);\n }\n\n public async setIcon(icon: string): Promise<void> {\n const controller = getData(this).controller;\n return controller.setWorkspaceIcon(this.id, icon);\n }\n\n public getBox(predicate: (box: IOConnectWorkspaces.WorkspaceBox) => boolean): IOConnectWorkspaces.WorkspaceBox {\n checkThrowCallback(predicate);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n return controller.iterateFindChild(children, (child) => child.type !== \"window\" && predicate(child)) as IOConnectWorkspaces.WorkspaceBox;\n }\n\n public getAllBoxes(predicate?: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): IOConnectWorkspaces.WorkspaceBox[] {\n checkThrowCallback(predicate, true);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n const allParents = controller.iterateFilterChildren(children, (child) => child.type !== \"window\") as IOConnectWorkspaces.WorkspaceBox[];\n\n if (!predicate) {\n return allParents;\n }\n\n return allParents.filter(predicate);\n }\n\n public getRow(predicate: (row: IOConnectWorkspaces.Row) => boolean): IOConnectWorkspaces.Row {\n checkThrowCallback(predicate);\n return this.getBox((parent) => parent.type === \"row\" && predicate(parent)) as IOConnectWorkspaces.Row;\n }\n\n public getAllRows(predicate?: (row: IOConnectWorkspaces.Row) => boolean): IOConnectWorkspaces.Row[] {\n checkThrowCallback(predicate, true);\n if (predicate) {\n return this.getAllBoxes((parent) => parent.type === \"row\" && predicate(parent)) as IOConnectWorkspaces.Row[];\n }\n return this.getAllBoxes((parent) => parent.type === \"row\") as IOConnectWorkspaces.Row[];\n }\n\n public getColumn(predicate: (column: IOConnectWorkspaces.Column) => boolean): IOConnectWorkspaces.Column {\n checkThrowCallback(predicate);\n return this.getBox((parent) => parent.type === \"column\" && predicate(parent)) as IOConnectWorkspaces.Column;\n }\n\n public getAllColumns(predicate?: (columns: IOConnectWorkspaces.Column) => boolean): IOConnectWorkspaces.Column[] {\n checkThrowCallback(predicate, true);\n if (predicate) {\n return this.getAllBoxes((parent) => parent.type === \"column\" && predicate(parent)) as IOConnectWorkspaces.Column[];\n }\n return this.getAllBoxes((parent) => parent.type === \"column\") as IOConnectWorkspaces.Column[];\n }\n\n public getGroup(predicate: (group: IOConnectWorkspaces.Group) => boolean): IOConnectWorkspaces.Group {\n checkThrowCallback(predicate);\n return this.getBox((parent) => parent.type === \"group\" && predicate(parent)) as IOConnectWorkspaces.Group;\n }\n\n public getAllGroups(predicate?: (group: IOConnectWorkspaces.Group) => boolean): IOConnectWorkspaces.Group[] {\n checkThrowCallback(predicate, true);\n if (predicate) {\n return this.getAllBoxes((parent) => parent.type === \"group\" && predicate(parent)) as IOConnectWorkspaces.Group[];\n }\n return this.getAllBoxes((parent) => parent.type === \"group\") as IOConnectWorkspaces.Group[];\n }\n\n public getWindow(predicate: (window: IOConnectWorkspaces.WorkspaceWindow) => boolean): IOConnectWorkspaces.WorkspaceWindow {\n checkThrowCallback(predicate);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n return controller.iterateFindChild(children, (child) => child.type === \"window\" && predicate(child)) as IOConnectWorkspaces.WorkspaceWindow;\n }\n\n public getAllWindows(predicate?: (window: IOConnectWorkspaces.WorkspaceWindow) => boolean): IOConnectWorkspaces.WorkspaceWindow[] {\n checkThrowCallback(predicate, true);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n const allWindows = controller.iterateFilterChildren(children, (child) => child.type === \"window\") as IOConnectWorkspaces.WorkspaceWindow[];\n\n if (!predicate) {\n return allWindows;\n }\n\n return allWindows.filter(predicate);\n }\n\n public addRow(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Row> {\n return getData(this).base.addParent<IOConnectWorkspaces.Row>(this, \"row\", \"workspace\", definition);\n }\n\n public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Column> {\n return getData(this).base.addParent<IOConnectWorkspaces.Column>(this, \"column\", \"workspace\", definition);\n }\n\n public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {\n return getData(this).base.addParent<IOConnectWorkspaces.Group>(this, \"group\", \"workspace\", definition);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getData(this).base.addWindow(this, definition, \"workspace\");\n }\n\n public async bundleToRow(): Promise<void> {\n await getData(this).controller.bundleWorkspaceTo(\"row\", this.id);\n await this.refreshReference();\n }\n\n public async bundleToColumn(): Promise<void> {\n await getData(this).controller.bundleWorkspaceTo(\"column\", this.id);\n await this.refreshReference();\n }\n\n public async hibernate(): Promise<void> {\n await getData(this).controller.hibernateWorkspace(this.id);\n await this.refreshReference();\n }\n\n public async resume(): Promise<void> {\n await getData(this).controller.resumeWorkspace(this.id);\n await this.refreshReference();\n }\n\n public async lock(config?: IOConnectWorkspaces.WorkspaceLockConfig | ((config: IOConnectWorkspaces.WorkspaceLockConfig) => IOConnectWorkspaces.WorkspaceLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowDropLeft: this.allowDropLeft,\n allowDropTop: this.allowDropTop,\n allowDropRight: this.allowDropRight,\n allowDropBottom: this.allowDropBottom,\n allowSystemHibernation: this.allowSystemHibernation,\n allowExtract: this.allowExtract,\n allowWindowReorder: this.allowWindowReorder,\n allowSplitters: this.allowSplitters,\n showCloseButton: this.showCloseButton,\n showSaveButton: this.showSaveButton,\n allowWorkspaceTabReorder: this.allowWorkspaceTabReorder,\n allowWorkspaceTabExtract: this.allowWorkspaceTabExtract,\n showAddWindowButtons: this.showAddWindowButtons,\n showEjectButtons: this.showEjectButtons,\n showWindowCloseButtons: this.showWindowCloseButtons\n };\n\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n\n const verifiedConfig = lockConfigResult === undefined ? undefined : workspaceLockConfigDecoder.runWithException(lockConfigResult);\n\n await getData(this).controller.lockWorkspace(this.id, verifiedConfig);\n await this.refreshReference();\n }\n\n public async pin(options: IOConnectWorkspaces.WorkspacePinOptions): Promise<void> {\n workspacePinOptionsDecoder.runWithException(options);\n await getData(this).controller.pinWorkspace(this.id, options?.icon);\n await this.refreshReference();\n }\n\n public async unpin(): Promise<void> {\n await getData(this).controller.unpinWorkspace(this.id);\n await this.refreshReference();\n }\n\n public async showLoadingAnimation(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"Not supported in IO Connect Browser\");\n }\n\n await getData(this).controller.showWorkspaceLoadingAnimation(this.id);\n }\n\n public async hideLoadingAnimation(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"Not supported in IO Connect Browser\");\n }\n\n await getData(this).controller.hideWorkspaceLoadingAnimation(this.id);\n }\n\n public async onClosed(callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n // await this.refreshReference();\n callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });\n };\n const config: SubscriptionConfig = {\n action: \"closed\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onHibernated(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (): Promise<void> => {\n await this.refreshReference();\n callback();\n };\n const config: SubscriptionConfig = {\n action: \"hibernated\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onResumed(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (): Promise<void> => {\n await this.refreshReference();\n callback();\n };\n const config: SubscriptionConfig = {\n action: \"resumed\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowAdded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"added\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowRemoved(callback: (removed: { windowId?: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const { windowId, workspaceId, frameId } = payload.windowSummary.config;\n callback({ windowId, workspaceId, frameId });\n };\n\n const config: SubscriptionConfig = {\n action: \"removed\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowLoaded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const foundWindow = this.getWindow((win) => {\n return win.id && win.id === payload.windowSummary.config.windowId;\n });\n callback(foundWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"loaded\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowMaximized(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"maximized\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowRestored(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"restored\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowSelected(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"selected\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onLockConfigurationChanged(callback: (config: WorkspaceLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n await this.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowDropLeft: this.allowDropLeft,\n allowDropTop: this.allowDropTop,\n allowDropRight: this.allowDropRight,\n allowDropBottom: this.allowDropBottom,\n allowSystemHibernation: this.allowSystemHibernation,\n allowExtract: this.allowExtract,\n allowSplitters: this.allowSplitters,\n allowWindowReorder: this.allowWindowReorder,\n allowWorkspaceTabExtract: this.allowWorkspaceTabExtract,\n allowWorkspaceTabReorder: this.allowWorkspaceTabReorder,\n showAddWindowButtons: this.showAddWindowButtons,\n showCloseButton: this.showCloseButton,\n showEjectButtons: this.showEjectButtons,\n showSaveButton: this.showSaveButton,\n showWindowCloseButtons: this.showWindowCloseButtons\n });\n };\n\n const config: SubscriptionConfig = {\n action: \"lock-configuration-changed\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n}\n","import { checkThrowCallback, nonEmptyStringDecoder, windowLockConfigDecoder, elementResizeConfigDecoder } from \"../shared//decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\nimport { WindowPrivateData } from \"../types/privateData\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { GDWindow } from \"../types/glue\";\nimport { Row } from \"./row\";\nimport { Column } from \"./column\";\nimport { Group } from \"./group\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Window, PrivateData>();\n\nconst getData = (model: Window): WindowPrivateData => {\n return data.get(model).manager.getWindowData(model);\n};\n\nexport class Window implements IOConnectWorkspaces.WorkspaceWindow {\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public get id(): string {\n return getData(this).config.windowId;\n }\n\n public get elementId(): string {\n return getData(this).id;\n }\n\n public get type(): \"window\" {\n return \"window\";\n }\n\n public get frameId(): string {\n return getData(this).frame.id;\n }\n\n public get workspaceId(): string {\n return getData(this).workspace.id;\n }\n\n public get positionIndex(): number {\n return getData(this).config.positionIndex;\n }\n\n public get isMaximized(): boolean {\n return getData(this).config.isMaximized;\n }\n\n public get isLoaded(): boolean {\n return getData(this).controller.checkIsWindowLoaded(this.id);\n }\n\n public get isSelected(): boolean {\n return getData(this).config.isSelected;\n }\n\n public get focused(): boolean {\n return this.getGdWindow().isFocused;\n }\n\n public get title(): string {\n return getData(this).config.title;\n }\n\n public get allowExtract(): boolean {\n return getData(this).config.allowExtract;\n }\n\n public get allowReorder(): boolean {\n return getData(this).config.allowReorder;\n }\n\n public get showCloseButton(): boolean {\n return getData(this).config.showCloseButton;\n }\n\n public get width(): number {\n return getData(this).config.widthInPx;\n }\n\n public get height(): number {\n return getData(this).config.heightInPx;\n }\n\n public get minWidth(): number {\n return getData(this).config.minWidth;\n }\n\n public get minHeight(): number {\n return getData(this).config.minHeight;\n }\n\n public get maxWidth(): number {\n return getData(this).config.maxWidth;\n }\n\n public get maxHeight(): number {\n return getData(this).config.maxHeight;\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getData(this).workspace;\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getData(this).frame;\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.Row | IOConnectWorkspaces.Column | IOConnectWorkspaces.Group {\n return getData(this).parent;\n }\n\n public get appName(): string {\n return getData(this).config.appName;\n }\n\n public async forceLoad(): Promise<void> {\n if (this.isLoaded) {\n return;\n }\n const controller = getData(this).controller;\n const itemId = getData(this).id;\n\n const windowId = await controller.forceLoadWindow(itemId);\n\n getData(this).config.windowId = windowId;\n\n await this.workspace.refreshReference();\n }\n\n public async focus(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.focusItem(id);\n\n await this.workspace.refreshReference();\n }\n\n public async close(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.closeItem(id);\n\n await getData(this)\n .parent\n .removeChild((child) => child.id === id);\n\n await this.workspace.refreshReference();\n }\n\n public async setTitle(title: string): Promise<void> {\n nonEmptyStringDecoder.runWithException(title);\n\n const itemId = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.setItemTitle(itemId, title);\n\n await this.workspace.refreshReference();\n }\n\n public async maximize(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.maximizeItem(id);\n\n await this.workspace.refreshReference();\n }\n\n public async restore(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.restoreItem(id);\n\n await this.workspace.refreshReference();\n }\n\n public async eject(): Promise<GDWindow> {\n if (!this.isLoaded) {\n throw new Error(\"Cannot eject this window, because it is not loaded yet\");\n }\n const itemId: string = getData(this).id;\n\n const newWindowId: string = await getData(this).controller.ejectWindow(itemId);\n\n getData(this).config.windowId = newWindowId;\n\n await this.workspace.refreshReference();\n\n return this.getGdWindow();\n }\n\n public getGdWindow(): GDWindow {\n if (!this.isLoaded) {\n throw new Error(\"Cannot fetch this GD window, because the window is not yet loaded\");\n }\n\n const myId = getData(this).config.windowId;\n const controller = getData(this).controller;\n\n return controller.getGDWindow(myId);\n }\n\n public async moveTo(parent: IOConnectWorkspaces.Row | IOConnectWorkspaces.Column | IOConnectWorkspaces.Group): Promise<void> {\n if (!(parent instanceof Row || parent instanceof Column || parent instanceof Group)) {\n throw new Error(\"Cannot add to the provided parent, because the provided parent is not an instance of Row, Column or Group\");\n }\n\n const myId = getData(this).id;\n const controller = getData(this).controller;\n\n const foundParent = await controller.getParent((p) => p.id === parent.id);\n\n if (!foundParent) {\n throw new Error(\"Cannot move the window to the selected parent, because this parent does not exist.\");\n }\n\n await controller.moveWindowTo(myId, parent.id);\n\n await this.workspace.refreshReference();\n }\n\n public async lock(config?: IOConnectWorkspaces.WorkspaceWindowLockConfig | ((config: IOConnectWorkspaces.WorkspaceWindowLockConfig) => IOConnectWorkspaces.WorkspaceWindowLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showCloseButton: this.showCloseButton\n };\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n\n const verifiedConfig = lockConfigResult === undefined ? undefined : windowLockConfigDecoder.runWithException(lockConfigResult);\n const windowPlacementId = getData(this).id;\n await getData(this).controller.lockWindow(windowPlacementId, verifiedConfig);\n await this.workspace.refreshReference();\n }\n\n public async setSize(config: IOConnectWorkspaces.ElementResizeConfig): Promise<void> {\n const verifiedConfig = elementResizeConfigDecoder.runWithException(config);\n\n if (!verifiedConfig.width && !verifiedConfig.height) {\n throw new Error(\"Expected either width or height to be passed.\");\n }\n\n const myId = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.resizeItem(myId, {\n height: verifiedConfig.height,\n width: verifiedConfig.width,\n relative: false\n });\n\n await this.workspace.refreshReference();\n }\n\n public async onRemoved(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback();\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"removed\",\n eventType: \"window\",\n scope: \"window\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onLockConfigurationChanged(callback:(config:IOConnectWorkspaces.WorkspaceWindowLockConfig)=>void): Promise<IOConnectWorkspaces.Unsubscribe>{\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showCloseButton: this.showCloseButton\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"window\",\n scope: \"window\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n}\n","import { checkThrowCallback, nonEmptyStringDecoder, restoreWorkspaceConfigDecoder, workspaceDefinitionDecoder, workspaceBuilderCreateConfigDecoder, resizeConfigDecoder, moveConfigDecoder, frameInitConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\nimport { FrameStreamData, WorkspaceStreamData, WindowStreamData } from \"../types/protocol\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { FramePrivateData } from \"../types/privateData\";\nimport { UnsubscribeFunction } from \"callback-registry\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Frame, PrivateData>();\n\nconst getData = (model: Frame): FramePrivateData => {\n return data.get(model).manager.getFrameData(model);\n};\n\nexport class Frame implements IOConnectWorkspaces.Frame {\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public async registerShortcut(shortcut: string, callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n nonEmptyStringDecoder.runWithException(shortcut);\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n const unsubscribe = await getData(this).controller.registerShortcut(shortcut, myId, callback);\n return unsubscribe;\n }\n\n public get id(): string {\n return getData(this).summary.id;\n }\n\n public get isInitialized(): boolean {\n return getData(this).summary.isInitialized;\n }\n\n public getBounds(): Promise<IOConnectWorkspaces.FrameBounds> {\n const myId = getData(this).summary.id;\n\n return getData(this).controller.getFrameBounds(myId);\n }\n\n public async resize(config: IOConnectWorkspaces.ResizeConfig): Promise<void> {\n const validatedConfig = resizeConfigDecoder.runWithException(config);\n const myId = getData(this).summary.id;\n\n return getData(this).controller.resizeItem(myId, validatedConfig);\n }\n\n public async move(config: IOConnectWorkspaces.MoveConfig): Promise<void> {\n const validatedConfig = moveConfigDecoder.runWithException(config);\n\n const myId = getData(this).summary.id;\n return getData(this).controller.moveFrame(myId, validatedConfig);\n }\n\n public focus(): Promise<void> {\n const myId = getData(this).summary.id;\n return getData(this).controller.focusItem(myId);\n }\n\n public async state(): Promise<IOConnectWorkspaces.FrameState> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.getFrameState(myId);\n }\n\n public async minimize(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.changeFrameState(myId, \"minimized\");\n }\n\n public async maximize(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.changeFrameState(myId, \"maximized\");\n }\n\n public async restore(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.changeFrameState(myId, \"normal\");\n }\n\n public close(): Promise<void> {\n const myId = getData(this).summary.id;\n return getData(this).controller.closeItem(myId);\n }\n\n public snapshot(): Promise<IOConnectWorkspaces.FrameSnapshot> {\n const myId = getData(this).summary.id;\n return getData(this).controller.getSnapshot(myId, \"frame\") as Promise<IOConnectWorkspaces.FrameSnapshot>;\n }\n\n public async workspaces(): Promise<IOConnectWorkspaces.Workspace[]> {\n const controller = getData(this).controller;\n return controller.getWorkspacesByFrameId(this.id);\n }\n\n public async getConstraints(): Promise<IOConnectWorkspaces.FrameConstraints> {\n const controller = getData(this).controller;\n const myId = getData(this).summary.id;\n\n return controller.getFrameConstraints(myId);\n }\n\n public async restoreWorkspace(name: string, options?: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<IOConnectWorkspaces.Workspace> {\n nonEmptyStringDecoder.runWithException(name);\n const validatedOptions = restoreWorkspaceConfigDecoder.runWithException(options);\n\n return getData(this).controller.restoreWorkspace(name, validatedOptions);\n }\n\n public createWorkspace(definition: IOConnectWorkspaces.WorkspaceDefinition, config?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<IOConnectWorkspaces.Workspace> {\n const validatedDefinition = workspaceDefinitionDecoder.runWithException(definition);\n const validatedConfig = workspaceBuilderCreateConfigDecoder.runWithException(config);\n\n return getData(this).controller.createWorkspace(validatedDefinition, validatedConfig);\n }\n\n public async init(config: IOConnectWorkspaces.FrameInitializationConfig): Promise<void> {\n frameInitConfigDecoder.runWithException(config);\n\n if (getData(this).summary.isInitialized) {\n throw new Error(\"The frame has already been initialized\");\n }\n return getData(this).controller.initFrame(this.id, config);\n }\n\n public async onClosed(callback: (closed: IOConnectWorkspaces.FrameClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (payload: FrameStreamData): void => {\n callback({ frameId: payload.frameSummary.id, frameBounds: payload.frameBounds });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"closed\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onMaximized(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (): void => {\n callback();\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"maximized\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onMinimized(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (): void => {\n callback();\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"minimized\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onNormal(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (): void => {\n callback();\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"normal\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWorkspaceOpened(callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await getData(this).controller.transformStreamPayloadToWorkspace(payload);\n callback(workspace);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"opened\",\n eventType: \"workspace\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWorkspaceSelected(callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await getData(this).controller.getWorkspaceById(payload.workspaceSummary.id);\n callback(workspace);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"selected\",\n eventType: \"workspace\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWorkspaceClosed(callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (payload: WorkspaceStreamData): void => {\n callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"closed\",\n eventType: \"workspace\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWindowAdded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const foundParent = await getData(this).controller.getParent((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = foundParent.children.find((child) => child.type === \"window\" && child.positionIndex === payload.windowSummary.config.positionIndex);\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"added\",\n eventType: \"window\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWindowRemoved(callback: (removed: { windowId?: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (payload: WindowStreamData): void => {\n const { windowId, workspaceId, frameId } = payload.windowSummary.config;\n callback({ windowId, workspaceId, frameId });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"removed\",\n eventType: \"window\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWindowLoaded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const foundParent = await getData(this).controller.getParent((parent) => {\n return parent.id === payload.windowSummary.parentId;\n });\n const foundWindow = foundParent.children.find((child) => child.type === \"window\" && child.positionIndex === payload.windowSummary.config.positionIndex);\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"loaded\",\n eventType: \"window\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onInitializationRequested(callback: (context?: IOConnectWorkspaces.FrameInitializationContext) => void): Promise<UnsubscribeFunction> {\n checkThrowCallback(callback);\n\n if (!this.isInitialized) {\n callback(getData(this).summary.initializationContext);\n }\n\n return () => {};\n }\n\n public async onFocusChanged(callback: (data: IOConnectWorkspaces.FrameFocusChangedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myData = getData(this);\n const { id } = myData.summary;\n\n const wrappedCallback = (args: FrameStreamData): void => {\n callback({ isFocused: args.frameSummary.isFocused });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"focus\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await myData.controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n}\n","import { Row } from \"../models/row\";\nimport { Column } from \"../models/column\";\nimport { Group } from \"../models/group\";\nimport { ParentPrivateData, WorkspacePrivateData, WindowPrivateData, FramePrivateData, RemapChildData, RemapWorkspaceData } from \"../types/privateData\";\nimport { Workspace } from \"../models/workspace\";\nimport { Window } from \"../models/window\";\nimport { Frame } from \"../models/frame\";\nimport { SwimlaneWindowSnapshotConfig, ParentSnapshotConfig, FrameSummaryResult } from \"../types/protocol\";\nimport { Child, SubParentTypes } from \"../types/builders\";\n\nexport class PrivateDataManager {\n private readonly parentsData = new WeakMap<SubParentTypes, ParentPrivateData>();\n private readonly workspacesData = new WeakMap<Workspace, WorkspacePrivateData>();\n private readonly windowsData = new WeakMap<Window, WindowPrivateData>();\n private readonly framesData = new WeakMap<Frame, FramePrivateData>();\n // Without this collection there is no way to get a window instance before its loaded\n // e.g addWindow returns a window however this window doesn't have a placement id needed for force load\n private readonly windowPlacementIdData: { [key: string]: Window } = {};\n\n public deleteData<T>(model: T): void {\n if (model instanceof Window) {\n const keyForDeleting =\n Object.keys(this.windowPlacementIdData)\n .find((k) => this.windowPlacementIdData[k] === model);\n\n if (keyForDeleting) {\n delete this.windowPlacementIdData[keyForDeleting];\n }\n\n this.windowsData.delete(model);\n }\n\n if (model instanceof Workspace) {\n this.workspacesData.delete(model);\n }\n\n if (model instanceof Row || model instanceof Column || model instanceof Group) {\n this.parentsData.delete(model);\n }\n\n if (model instanceof Frame) {\n this.framesData.delete(model);\n }\n }\n\n public setWindowData(model: Window, data: WindowPrivateData): void {\n\n this.windowPlacementIdData[data.id] = model;\n this.windowsData.set(model, data);\n }\n\n public setWorkspaceData(model: Workspace, data: WorkspacePrivateData): void {\n this.workspacesData.set(model, data);\n }\n\n public setParentData(model: SubParentTypes, data: ParentPrivateData): void {\n this.parentsData.set(model, data);\n }\n\n public setFrameData(model: Frame, data: FramePrivateData): void {\n this.framesData.set(model, data);\n }\n\n public getWindowData(model: Window): WindowPrivateData {\n return this.windowsData.get(model);\n }\n\n public getWindowByPlacementId(placementId: string): Window {\n return this.windowPlacementIdData[placementId];\n }\n\n public getWorkspaceData(model: Workspace): WorkspacePrivateData {\n return this.workspacesData.get(model);\n }\n\n public getParentData(model: SubParentTypes): ParentPrivateData {\n return this.parentsData.get(model);\n }\n\n public getFrameData(model: Frame): FramePrivateData {\n return this.framesData.get(model);\n }\n\n public remapChild(model: Child, newData: RemapChildData): void {\n if (model instanceof Window) {\n const data = this.windowsData.get(model);\n data.parent = newData.parent || data.parent;\n data.config = newData.config as SwimlaneWindowSnapshotConfig || data.config;\n }\n\n if (model instanceof Row || model instanceof Column || model instanceof Group) {\n const data = this.parentsData.get(model);\n data.parent = newData.parent || data.parent;\n data.config = newData.config as ParentSnapshotConfig || data.config;\n data.children = newData.children || data.children;\n }\n }\n\n public remapFrame(model: Frame, newData: FrameSummaryResult): void {\n const data = this.framesData.get(model);\n data.summary = newData;\n }\n\n public remapWorkspace(model: Workspace, newData: RemapWorkspaceData): void {\n const data = this.workspacesData.get(model);\n data.frame = newData.frame || data.frame;\n data.config = newData.config || data.config;\n data.children = newData.children || data.children;\n }\n}\n","import { Workspace } from \"../workspace\";\nimport { ParentBuilder } from \"../../builders/parentBuilder\";\nimport { strictParentDefinitionDecoder, swimlaneWindowDefinitionDecoder, checkThrowCallback } from \"../../shared/decoders\";\nimport { SubParent, AllParentTypes, Child, SubParentTypes, AllParent, ContainerLockConfig } from \"../../types/builders\";\nimport { PrivateDataManager } from \"../../shared/privateDataManager\";\nimport { ParentPrivateData, WorkspacePrivateData } from \"../../types/privateData\";\nimport { Window } from \"../../models/window\";\nimport { IOConnectWorkspaces } from \"../../../workspaces\";\nimport { Group } from \"../group\";\nimport { Row } from \"../row\";\nimport { Column } from \"../column\";\nimport { ColumnSnapshotConfig, GroupSnapshotConfig, RowSnapshotConfig } from \"../../types/protocol\";\nimport { SubscriptionConfig } from \"../../types/subscription\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Base, PrivateData>();\n\nconst getData = (base: Base, model: AllParentTypes): WorkspacePrivateData | ParentPrivateData => {\n const manager = data.get(base).manager;\n\n if (model instanceof Workspace) {\n return manager.getWorkspaceData(model);\n }\n\n return data.get(base).manager.getParentData(model as SubParentTypes);\n};\n\nconst getWindowFromPlacementId = (base: Base, placemenId: string): Window => {\n const manager = data.get(base).manager;\n\n return manager.getWindowByPlacementId(placemenId);\n};\n\nexport class Base {\n public frameId: string;\n public workspaceId: string;\n public positionIndex: number;\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public getId(model: AllParentTypes): string {\n return getData(this, model).id;\n }\n\n public getPositionIndex(model: AllParentTypes): number {\n return getData(this, model).config.positionIndex;\n }\n\n public getWorkspaceId(model: AllParentTypes): string {\n const privateData = getData(this, model) as ParentPrivateData;\n return privateData.config.workspaceId || privateData.workspace.id;\n }\n\n public getFrameId(model: AllParentTypes): string {\n return getData(this, model).frame.id;\n }\n\n public getAllChildren(model: AllParentTypes, predicate?: (child: Child) => boolean): Child[] {\n checkThrowCallback(predicate, true);\n const children = getData(this, model).children;\n\n if (typeof predicate === \"undefined\") {\n return children;\n }\n\n return children.filter(predicate);\n }\n\n public getMyParent(model: AllParentTypes): AllParentTypes {\n if (model instanceof Workspace) {\n return model;\n }\n return (getData(this, model) as ParentPrivateData).parent;\n }\n\n public getMyFrame(model: AllParentTypes): IOConnectWorkspaces.Frame {\n return getData(this, model).frame;\n }\n\n public getMyWorkspace(model: AllParentTypes): Workspace {\n if (model instanceof Workspace) {\n return model;\n }\n return (getData(this, model) as ParentPrivateData).workspace;\n }\n\n public async addWindow(model: AllParentTypes, definition: IOConnectWorkspaces.WorkspaceWindowDefinition, parentType: AllParent): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n if (!definition.appName && !definition.windowId) {\n throw new Error(\"The window definition should contain either an appName or a windowId\");\n }\n\n const validatedDefinition = swimlaneWindowDefinitionDecoder.runWithException(definition);\n const controller = getData(this, model).controller;\n\n const operationResult = await controller.add(\"window\", getData(this, model).id, parentType, validatedDefinition);\n\n if (model instanceof Workspace) {\n await model.refreshReference();\n return getWindowFromPlacementId(this, operationResult.itemId);\n }\n\n await this.getMyWorkspace(model).refreshReference();\n\n return getWindowFromPlacementId(this, operationResult.itemId);\n }\n\n public async addParent<T>(model: AllParentTypes, typeToAdd: SubParent, parentType: AllParent, definition?: IOConnectWorkspaces.BoxDefinition | ParentBuilder): Promise<T> {\n const parentDefinition = this.transformDefinition(typeToAdd, definition);\n const controller = getData(this, model).controller;\n\n const newParentId = (await controller.add(\"container\", getData(this, model).id, parentType, parentDefinition)).itemId;\n\n if (model instanceof Workspace) {\n await model.refreshReference();\n return model.getBox((parent) => parent.id === newParentId) as unknown as T;\n }\n\n const myWorkspace = this.getMyWorkspace(model);\n await myWorkspace.refreshReference();\n\n return myWorkspace.getBox((parent) => parent.id === newParentId) as unknown as T;\n }\n\n public async removeChild(model: AllParentTypes, predicate: (child: Child) => boolean): Promise<void> {\n checkThrowCallback(predicate);\n const child = this.getAllChildren(model).find(predicate);\n if (!child) {\n return;\n }\n\n await child.close();\n\n if (model instanceof Workspace) {\n\n await model.refreshReference();\n return;\n }\n\n await this.getMyWorkspace(model).refreshReference();\n }\n\n public async maximize(model: SubParentTypes): Promise<void> {\n const { controller, id } = getData(this, model);\n\n await controller.maximizeItem(id);\n\n await this.getMyWorkspace(model.parent).refreshReference();\n }\n\n public async restore(model: SubParentTypes): Promise<void> {\n const { controller, id } = getData(this, model);\n\n await controller.restoreItem(id);\n\n await this.getMyWorkspace(model.parent).refreshReference();\n }\n\n public async close(model: SubParentTypes): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n\n const controller = getData(this, model).controller;\n\n await controller.closeItem(modelData.id);\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async lockContainer(model: SubParentTypes, config?: ContainerLockConfig): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n\n const controller = getData(this, model).controller;\n\n await controller.lockContainer(modelData.id, model.type, config);\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public getAllowDrop(model: SubParentTypes): boolean {\n return getData(this, model).config.allowDrop;\n }\n\n public getAllowDropLeft(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropLeft is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropLeft;\n }\n\n public getAllowDropRight(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropRight is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropRight;\n }\n\n public getAllowDropTop(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropTop is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropTop;\n }\n\n public getAllowDropBottom(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropBottom is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropBottom;\n }\n\n public getAllowDropHeader(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropHeader is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropHeader;\n }\n\n public getAllowSplitters(model: Row | Column): boolean {\n const privateData = getData(this, model);\n\n if (privateData.type === \"group\") {\n throw new Error(`Cannot get allow splitters from private data ${privateData.type}`);\n }\n\n return privateData.config.allowSplitters;\n }\n\n public getAllowExtract(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get allow extract from private data ${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.allowExtract;\n }\n\n public getAllowReorder(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get allow extract from private data ${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.allowReorder;\n }\n\n public getShowMaximizeButton(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get show maximize button from private data${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.showMaximizeButton;\n }\n\n public getShowEjectButton(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get show eject button from private data${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.showEjectButton;\n }\n\n public getShowAddWindowButton(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get add window button from private data${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.showAddWindowButton;\n }\n\n public getMinWidth(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.minWidth;\n }\n\n public getMaxWidth(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.maxWidth;\n }\n\n public getMinHeight(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.minHeight;\n }\n\n public getMaxHeight(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.maxHeight;\n }\n\n public getWidthInPx(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.widthInPx;\n }\n\n public getHeightInPx(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.heightInPx;\n }\n\n public getIsPinned(model: Column | Row): boolean {\n const privateData = getData(this, model);\n\n return (privateData.config as RowSnapshotConfig | ColumnSnapshotConfig).isPinned;\n }\n\n public getIsMaximized(model: Column | Row | Group): boolean {\n const privateData = getData(this, model);\n\n return (privateData.config as RowSnapshotConfig | ColumnSnapshotConfig | GroupSnapshotConfig).isMaximized;\n }\n\n public getMaximizationBoundary(model: Column | Row): boolean {\n const privateData = getData(this, model);\n\n return (privateData.config as RowSnapshotConfig | ColumnSnapshotConfig).maximizationBoundary;\n }\n\n public async setHeight(model: Row, height: number): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.resizeItem(id, {\n height\n });\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async setWidth(model: Column, width: number): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.resizeItem(id, {\n width\n });\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async setSize(model: Group, width?: number, height?: number): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.resizeItem(id, {\n width,\n height\n });\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async setMaximizationBoundary(model: Row | Column, config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.setMaximizationBoundary(id, config);\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async bundleTo(model: Group, type: \"row\" | \"column\") {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.bundleItemTo(type, id);\n }\n\n public async processLocalSubscription(model: SubParentTypes, subscriptionConfig: SubscriptionConfig): Promise<IOConnectWorkspaces.Unsubscribe> {\n return getData(this, model).controller.processLocalSubscription(subscriptionConfig, this.getId(model))\n }\n\n private transformDefinition(type: \"group\" | \"row\" | \"column\", definition?: IOConnectWorkspaces.BoxDefinition | ParentBuilder): IOConnectWorkspaces.BoxDefinition {\n let parentDefinition: IOConnectWorkspaces.BoxDefinition;\n\n if (typeof definition === \"undefined\") {\n parentDefinition = { type, children: [] };\n } else if (definition instanceof ParentBuilder) {\n parentDefinition = definition.serialize();\n } else {\n if (typeof definition.type === \"undefined\") {\n definition.type = type;\n }\n parentDefinition = strictParentDefinitionDecoder.runWithException(definition);\n parentDefinition.children = parentDefinition.children || [];\n }\n\n return parentDefinition;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Workspace } from \"../models/workspace\";\r\nimport { WorkspaceSnapshotResult, WorkspaceCreateConfigProtocol, FrameSummaryResult, AddItemResult, WorkspaceSummariesResult, WorkspaceSummaryResult, SimpleWindowOperationSuccessResult, FrameSnapshotResult, WorkspaceStreamData, GetPlatformFrameIdResult, OperationCheckResult } from \"../types/protocol\";\r\nimport { OPERATIONS } from \"../communication/constants\";\r\nimport { FrameCreateConfig, WorkspaceIoCCreateConfig, WindowCreateConfig, ParentCreateConfig } from \"../types/ioc\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { Bridge } from \"../communication/bridge\";\r\nimport { GDWindow, WindowsAPI, ContextsAPI, LayoutsAPI } from \"../types/glue\";\r\nimport { IOConnectWorkspaces } from \"../../workspaces\";\r\nimport { Frame } from \"../models/frame\";\r\nimport { RefreshChildrenConfig } from \"../types/privateData\";\r\nimport { AllParentTypes, Child, ContainerLockConfig, SubParentTypes } from \"../types/builders\";\r\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\r\nimport { Window } from \"../models/window\";\r\nimport { UnsubscribeFunction } from \"callback-registry\";\r\n\r\nexport class BaseController {\r\n\r\n constructor(\r\n private readonly ioc: IoC,\r\n private readonly windows: WindowsAPI,\r\n private readonly contexts: ContextsAPI,\r\n private readonly layouts: LayoutsAPI,\r\n ) { }\r\n\r\n private get bridge(): Bridge {\r\n return this.ioc.bridge;\r\n }\r\n\r\n private get privateDataManager(): PrivateDataManager {\r\n return this.ioc.privateDataManager;\r\n }\r\n\r\n public checkIsWindowLoaded(windowId: string): boolean {\r\n return (!!windowId) && this.windows.list().some((win) => win.id === windowId);\r\n }\r\n\r\n public async createWorkspace(createConfig: WorkspaceCreateConfigProtocol): Promise<Workspace> {\r\n const snapshot = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.createWorkspace.name, createConfig);\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: snapshot.frameSummary\r\n };\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n return this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n }\r\n\r\n public async createEmptyFrame(definition: IOConnectWorkspaces.EmptyFrameDefinition): Promise<Frame> {\r\n const frameSummary = await this.bridge.send<FrameSummaryResult>(OPERATIONS.createFrame.name, definition);\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n\r\n return this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n }\r\n\r\n public async initFrame(frameId: string, config: IOConnectWorkspaces.FrameInitializationConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.initFrame.name, { frameId, ...config });\r\n }\r\n\r\n public async restoreWorkspace(name: string, options: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<Workspace> {\r\n const snapshot = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.openWorkspace.name, { name, restoreOptions: options });\r\n\r\n const frameSummary = await this.bridge.send<FrameSummaryResult>(OPERATIONS.getFrameSummary.name, { itemId: snapshot.config.frameId });\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n return this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n }\r\n\r\n public async add(type: \"container\" | \"window\", parentId: string, parentType: \"row\" | \"column\" | \"group\" | \"workspace\", definition: IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition): Promise<AddItemResult> {\r\n let operationName: string;\r\n const operationArgs = { definition, parentId, parentType };\r\n\r\n if (type === \"window\") {\r\n operationName = OPERATIONS.addWindow.name;\r\n } else if (type === \"container\") {\r\n operationName = OPERATIONS.addContainer.name;\r\n } else {\r\n throw new Error(`Unrecognized add type: ${type}`);\r\n }\r\n\r\n return await this.bridge.send<AddItemResult>(operationName, operationArgs);\r\n }\r\n\r\n public async getFrame(windowId: string): Promise<Frame> {\r\n const frameSummary = await this.bridge.send<FrameSummaryResult>(OPERATIONS.getFrameSummary.name, { itemId: windowId });\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n return this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n }\r\n\r\n public getFrames(allFrameSummaries: FrameSummaryResult[], predicate?: (frame: Frame) => boolean): Frame[] {\r\n\r\n return allFrameSummaries.reduce<Frame[]>((frames, frameSummary) => {\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n const frameToCheck = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n if (!predicate || predicate(frameToCheck)) {\r\n frames.push(frameToCheck);\r\n }\r\n\r\n return frames;\r\n }, []);\r\n }\r\n\r\n public getAllWorkspaceSummaries(...bridgeResults: WorkspaceSummariesResult[]): IOConnectWorkspaces.WorkspaceSummary[] {\r\n\r\n const allSummaries = bridgeResults.reduce<WorkspaceSummaryResult[]>((summaries, summaryResult) => {\r\n summaries.push(...summaryResult.summaries);\r\n return summaries;\r\n }, []);\r\n\r\n return allSummaries.map<IOConnectWorkspaces.WorkspaceSummary>((summary) => {\r\n\r\n return Object.assign(\r\n {},\r\n { id: summary.id, width: summary.config.widthInPx, height: summary.config.heightInPx },\r\n summary.config\r\n );\r\n });\r\n }\r\n\r\n public handleOnSaved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\r\n const wrappedCallback = (layout: IOConnectWorkspaces.WorkspaceLayout): void => {\r\n if (layout.type !== \"Workspace\") {\r\n return;\r\n }\r\n\r\n callback(layout);\r\n };\r\n\r\n const addedUnSub: UnsubscribeFunction = this.layouts.onAdded(wrappedCallback);\r\n const changedUnSub: UnsubscribeFunction = this.layouts.onChanged(wrappedCallback);\r\n\r\n return (): void => {\r\n addedUnSub();\r\n changedUnSub();\r\n };\r\n }\r\n\r\n public handleOnRemoved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\r\n const wrappedCallback = (layout: IOConnectWorkspaces.WorkspaceLayout): void => {\r\n if (layout.type !== \"Workspace\") {\r\n return;\r\n }\r\n\r\n callback(layout);\r\n };\r\n\r\n return this.layouts.onRemoved(wrappedCallback);\r\n }\r\n\r\n public async importLayouts(layouts: IOConnectWorkspaces.WorkspaceLayout[], mode: \"replace\" | \"merge\"): Promise<void> {\r\n await this.layouts.import(layouts, mode);\r\n }\r\n\r\n public async transformStreamPayloadToWorkspace(payload: WorkspaceStreamData): Promise<Workspace> {\r\n const frameConfig: FrameCreateConfig = {\r\n summary: payload.frameSummary\r\n };\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const snapshot = payload.workspaceSnapshot || (await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.getWorkspaceSnapshot.name, { itemId: payload.workspaceSummary.id }));\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n const workspace = this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n\r\n return workspace;\r\n }\r\n\r\n public async fetchWorkspace(itemId: string): Promise<Workspace> {\r\n\r\n const snapshot = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.getWorkspaceSnapshot.name, { itemId });\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: snapshot.frameSummary\r\n };\r\n\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n return this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n\r\n }\r\n\r\n public async bundleWorkspaceTo(type: \"row\" | \"column\", workspaceId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.bundleWorkspace.name, { type, workspaceId });\r\n }\r\n\r\n public async bundleItemTo(type: \"row\" | \"column\", itemId: string): Promise<void> {\r\n const isSupported = await this.isOperationSupported(OPERATIONS.bundleItem.name);\r\n\r\n if (!isSupported) {\r\n throw new Error(`Operation ${OPERATIONS.bundleItem.name} is not supported. Ensure that you are running the latest version of all packages`);\r\n }\r\n\r\n await this.bridge.send(OPERATIONS.bundleItem.name, { type, itemId });\r\n }\r\n\r\n public getWorkspaceContext(workspaceId: string): Promise<any> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.get(contextName);\r\n }\r\n\r\n public setWorkspaceContext(workspaceId: string, data: any): Promise<void> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.set(contextName, data);\r\n }\r\n\r\n public updateWorkspaceContext(workspaceId: string, data: any): Promise<void> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.update(contextName, data);\r\n }\r\n\r\n public subscribeWorkspaceContextUpdated(workspaceId: string, callback: (data: any) => void): Promise<UnsubscribeFunction> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.subscribe(contextName, callback);\r\n }\r\n\r\n public async restoreItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.restoreItem.name, { itemId });\r\n }\r\n\r\n public async maximizeItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.maximizeItem.name, { itemId });\r\n }\r\n\r\n public async focusItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.focusItem.name, { itemId });\r\n }\r\n\r\n public async closeItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.closeItem.name, { itemId });\r\n }\r\n\r\n public async resizeItem(itemId: string, config: IOConnectWorkspaces.ResizeConfig): Promise<void> {\r\n await this.bridge.send(OPERATIONS.resizeItem.name, Object.assign({}, { itemId }, config));\r\n }\r\n\r\n public async setMaximizationBoundary(itemId: string, config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\r\n await this.bridge.send(OPERATIONS.setMaximizationBoundary.name, Object.assign({}, { itemId }, config));\r\n }\r\n\r\n public async showWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.showLoadingAnimation.name, { itemId: workspaceId, type: \"workspace\" });\r\n }\r\n\r\n public async hideWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.hideLoadingAnimation.name, { itemId: workspaceId, type: \"workspace\" });\r\n }\r\n\r\n public async moveFrame(itemId: string, config: IOConnectWorkspaces.MoveConfig): Promise<void> {\r\n await this.bridge.send(OPERATIONS.moveFrame.name, Object.assign({}, { itemId }, config));\r\n }\r\n\r\n public getGDWindow(itemId: string): GDWindow {\r\n return this.windows.list().find((gdWindow) => gdWindow.id === itemId);\r\n }\r\n\r\n public async forceLoadWindow(itemId: string): Promise<string> {\r\n const controlResult = await this.bridge.send<SimpleWindowOperationSuccessResult>(OPERATIONS.forceLoadWindow.name, { itemId });\r\n\r\n return controlResult.windowId;\r\n }\r\n\r\n public async ejectWindow(itemId: string): Promise<SimpleWindowOperationSuccessResult> {\r\n return await this.bridge.send<SimpleWindowOperationSuccessResult>(OPERATIONS.ejectWindow.name, { itemId });\r\n }\r\n\r\n public async moveWindowTo(itemId: string, newParentId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.moveWindowTo.name, { itemId, containerId: newParentId });\r\n }\r\n\r\n public async getSnapshot(itemId: string, type: \"workspace\" | \"frame\"): Promise<WorkspaceSnapshotResult | FrameSnapshotResult> {\r\n let result: WorkspaceSnapshotResult | FrameSnapshotResult;\r\n\r\n if (type === \"workspace\") {\r\n result = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.getWorkspaceSnapshot.name, { itemId });\r\n } else if (type === \"frame\") {\r\n result = await this.bridge.send<FrameSnapshotResult>(OPERATIONS.getFrameSnapshot.name, { itemId });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public async setItemTitle(itemId: string, title: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.setItemTitle.name, { itemId, title });\r\n }\r\n\r\n public refreshChildren(config: RefreshChildrenConfig): Child[] {\r\n const { parent, children, existingChildren, workspace } = config;\r\n if (parent instanceof Window || (parent as IOConnectWorkspaces.WorkspaceWindow).type === \"window\") {\r\n return;\r\n }\r\n\r\n const newChildren = children.map((newChildSnapshot) => {\r\n let childToAdd = existingChildren.find((child) => {\r\n return child.type === \"window\" ? child.elementId === newChildSnapshot.id : child.id === newChildSnapshot.id;\r\n });\r\n\r\n if (childToAdd) {\r\n this.privateDataManager.remapChild(childToAdd, {\r\n parent: parent as AllParentTypes,\r\n children: [],\r\n config: newChildSnapshot.config\r\n });\r\n } else {\r\n let createConfig: WindowCreateConfig | ParentCreateConfig;\r\n if (newChildSnapshot.type === \"window\") {\r\n createConfig = {\r\n id: newChildSnapshot.id,\r\n parent: parent as AllParentTypes,\r\n frame: workspace.frame,\r\n workspace,\r\n config: newChildSnapshot.config,\r\n } as WindowCreateConfig;\r\n } else {\r\n createConfig = {\r\n id: newChildSnapshot.id,\r\n parent: parent as AllParentTypes,\r\n frame: workspace.frame,\r\n workspace,\r\n config: newChildSnapshot.config,\r\n children: []\r\n } as ParentCreateConfig;\r\n }\r\n\r\n childToAdd = this.ioc.getModel<\"child\">(newChildSnapshot.type, createConfig);\r\n }\r\n\r\n if (newChildSnapshot.type !== \"window\") {\r\n this.refreshChildren({\r\n workspace, existingChildren,\r\n children: newChildSnapshot.children,\r\n parent: childToAdd\r\n });\r\n }\r\n\r\n return childToAdd;\r\n });\r\n\r\n if (parent instanceof Workspace) {\r\n return newChildren;\r\n } else {\r\n this.privateDataManager.remapChild(parent as SubParentTypes, { children: newChildren });\r\n return newChildren;\r\n }\r\n }\r\n\r\n public iterateFindChild(children: Child[], predicate: (child: Child) => boolean): Child {\r\n let foundChild = children.find((child) => predicate(child));\r\n\r\n if (foundChild) {\r\n return foundChild;\r\n }\r\n\r\n children.some((child) => {\r\n if (child instanceof Window) {\r\n return false;\r\n }\r\n\r\n foundChild = this.iterateFindChild((child as SubParentTypes).children, predicate);\r\n\r\n if (foundChild) {\r\n return true;\r\n }\r\n });\r\n\r\n return foundChild;\r\n }\r\n\r\n public iterateFilterChildren(children: Child[], predicate: (child: Child) => boolean): Child[] {\r\n const foundChildren = children.filter((child) => predicate(child));\r\n\r\n const grandChildren = children.reduce<Child[]>((innerFound, child) => {\r\n if (child instanceof Window) {\r\n return innerFound;\r\n }\r\n\r\n innerFound.push(...this.iterateFilterChildren((child as SubParentTypes).children, predicate));\r\n\r\n return innerFound;\r\n }, []);\r\n\r\n foundChildren.push(...grandChildren);\r\n\r\n return foundChildren;\r\n }\r\n\r\n public notifyWindowAdded(windowId: string): Promise<void> {\r\n return new Promise((resolve) => {\r\n\r\n const alreadyPresent: boolean = this.windows.list().some((win) => win.id === windowId);\r\n\r\n if (alreadyPresent) {\r\n return resolve();\r\n }\r\n\r\n const unsubscribe: UnsubscribeFunction = this.windows.onWindowAdded((win) => {\r\n\r\n if (win.id !== windowId) {\r\n return;\r\n }\r\n\r\n if (unsubscribe) {\r\n unsubscribe();\r\n }\r\n\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n public async hibernateWorkspace(workspaceId: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.hibernateWorkspace.name, { workspaceId });\r\n }\r\n\r\n public async resumeWorkspace(workspaceId: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.resumeWorkspace.name, { workspaceId });\r\n }\r\n\r\n public async lockWorkspace(workspaceId: string, config?: IOConnectWorkspaces.WorkspaceLockConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.lockWorkspace.name, { workspaceId, config });\r\n }\r\n\r\n public async lockWindow(windowPlacementId: string, config?: IOConnectWorkspaces.WorkspaceWindowLockConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.lockWindow.name, { windowPlacementId, config });\r\n }\r\n\r\n public async lockContainer(itemId: string, type: SubParentTypes[\"type\"], config?: ContainerLockConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.lockContainer.name, { itemId, type, config });\r\n }\r\n\r\n public async pinWorkspace(workspaceId: string, icon?: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.pinWorkspace.name, { workspaceId, icon });\r\n }\r\n\r\n public async unpinWorkspace(workspaceId: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.unpinWorkspace.name, { workspaceId });\r\n }\r\n\r\n public async getWorkspaceIcon(workspaceId: string): Promise<string> {\r\n const result = await this.bridge.send<{ icon: string }>(OPERATIONS.getWorkspaceIcon.name, { workspaceId });\r\n return result.icon;\r\n }\r\n\r\n public setWorkspaceIcon(workspaceId: string, icon: string): Promise<void> {\r\n return this.bridge.send<void>(OPERATIONS.setWorkspaceIcon.name, { workspaceId, icon });\r\n }\r\n\r\n public async getPlatformFrameId(): Promise<GetPlatformFrameIdResult> {\r\n try {\r\n const result = await this.bridge.send<GetPlatformFrameIdResult>(OPERATIONS.getPlatformFrameId.name, {});\r\n\r\n return result;\r\n } catch (error) {\r\n return {}\r\n }\r\n }\r\n\r\n public async isOperationSupported(operation: string): Promise<OperationCheckResult> {\r\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\r\n\r\n if (desktopGlobal) {\r\n // operation check is not supported in Glue42Desktop\r\n return { isSupported: true };\r\n }\r\n return await this.bridge.send<OperationCheckResult>(OPERATIONS.operationCheck.name, { operation });\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Bridge } from \"../communication/bridge\";\nimport { IsWindowInSwimlaneResult, WorkspaceCreateConfigProtocol, WorkspaceSnapshotResult, FrameSummariesResult, WorkspaceSummariesResult, LayoutSummariesResult, ExportedLayoutsResult, FrameSnapshotResult, AddItemResult, WindowStreamData, FrameStateResult, FrameBoundsResult, WorkspaceStreamData } from \"../types/protocol\";\nimport { OPERATIONS } from \"../communication/constants\";\nimport { SubscriptionConfig, WorkspaceEventType, WorkspaceEventAction } from \"../types/subscription\";\nimport { Workspace } from \"../models/workspace\";\nimport { Frame } from \"../models/frame\";\nimport { Child, ContainerLockConfig, SubParentTypes } from \"../types/builders\";\nimport { RefreshChildrenConfig } from \"../types/privateData\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspacesController } from \"../types/controller\";\nimport { GDWindow } from \"../types/glue\";\nimport { BaseController } from \"./base\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { ShortcutsController } from \"./shortcuts\";\n\nexport class MainController implements WorkspacesController {\n\n constructor(\n private readonly bridge: Bridge,\n private readonly base: BaseController,\n private readonly shortcutsController: ShortcutsController\n ) { }\n\n public checkIsWindowLoaded(windowId: string): boolean {\n return this.base.checkIsWindowLoaded(windowId);\n }\n\n public async checkIsInSwimlane(windowId: string): Promise<boolean> {\n\n const controlResult = await this.bridge.send<IsWindowInSwimlaneResult>(OPERATIONS.isWindowInWorkspace.name, { itemId: windowId });\n\n return controlResult.inWorkspace;\n }\n\n public async createWorkspace(definition: IOConnectWorkspaces.WorkspaceDefinition, saveConfig?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<Workspace> {\n const createConfig: WorkspaceCreateConfigProtocol = Object.assign({}, definition, { saveConfig });\n\n return await this.base.createWorkspace(createConfig);\n }\n\n public async createEmptyFrame(definition: IOConnectWorkspaces.EmptyFrameDefinition): Promise<Frame> {\n return await this.base.createEmptyFrame(definition);\n }\n\n public async initFrame(frameId: string, config: IOConnectWorkspaces.FrameInitializationConfig): Promise<void> {\n return this.base.initFrame(frameId, config);\n }\n\n public async restoreWorkspace(name: string, options?: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<Workspace> {\n const allLayouts = await this.getLayoutSummaries();\n\n const layoutExists = allLayouts.some((summary) => summary.name === name);\n\n if (!layoutExists) {\n throw new Error(`This layout: ${name} cannot be restored, because it doesn't exist.`);\n }\n\n if (options?.frameId) {\n const allFrameSummaries = await this.bridge.send<FrameSummariesResult>(OPERATIONS.getAllFramesSummaries.name);\n\n const foundMatchingFrame = allFrameSummaries.summaries.some((summary) => summary.id === options.frameId);\n\n if (!foundMatchingFrame) {\n throw new Error(`Cannot reuse the frame with id: ${options.frameId}, because there is no frame with that ID found`);\n }\n }\n\n return await this.base.restoreWorkspace(name, options);\n }\n\n public async add(type: \"container\" | \"window\", parentId: string, parentType: \"row\" | \"column\" | \"group\" | \"workspace\", definition: IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition): Promise<AddItemResult> {\n return await this.base.add(type, parentId, parentType, definition);\n }\n\n public processLocalSubscription(config: SubscriptionConfig, levelId: string): Promise<IOConnectWorkspaces.Unsubscribe> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n return desktopGlobal ?\n this.handleEnterpriseLocalSubscription(config, levelId) :\n this.handleCoreLocalSubscription(config, levelId);\n }\n\n public processGlobalSubscription(callback: (callbackData: unknown) => void, eventType: WorkspaceEventType, action: WorkspaceEventAction): Promise<IOConnectWorkspaces.Unsubscribe> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n return desktopGlobal ?\n this.handleEnterpriseGlobalSubscription(callback, eventType, action) :\n this.handleCoreGlobalSubscription(callback, eventType, action);\n }\n\n public async getFrame(selector: { windowId?: string; predicate?: (frame: Frame) => boolean }): Promise<Frame> {\n\n if (selector.windowId) {\n return await this.base.getFrame(selector.windowId);\n }\n\n if (selector.predicate) {\n return (await this.getFrames(selector.predicate))[0];\n }\n\n throw new Error(`The provided selector is not valid: ${JSON.stringify(selector)}`);\n }\n\n public async getFrames(predicate?: (frame: Frame) => boolean): Promise<Frame[]> {\n\n const allFrameSummaries = await this.bridge.send<FrameSummariesResult>(OPERATIONS.getAllFramesSummaries.name);\n\n return this.base.getFrames(allFrameSummaries.summaries, predicate);\n }\n\n public getWorkspaceById(workspaceId: string): Promise<Workspace> {\n return this.base.fetchWorkspace(workspaceId);\n }\n\n public async getWorkspaceByWindowId(itemId: string): Promise<Workspace> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n // workspace-ui-core doesn't accept an itemId for getWorkspaceSnapshot, but GD does and getWorkspaceSnapshot is significantly faster\n return (await this.getWorkspaces((wsp) => !!wsp.getWindow((w) => w.id === itemId)))[0];\n }\n return this.base.fetchWorkspace(itemId);\n }\n\n public transformStreamPayloadToWorkspace(payload: WorkspaceStreamData): Promise<Workspace> {\n return this.base.transformStreamPayloadToWorkspace(payload);\n }\n\n public async getWorkspace(predicate: (workspace: Workspace) => boolean): Promise<Workspace> {\n let foundWorkspace: Workspace;\n\n await this.iterateWorkspaces((wsp, end) => {\n if (predicate(wsp)) {\n foundWorkspace = wsp;\n end();\n }\n });\n\n return foundWorkspace;\n }\n\n public async getWorkspaces(predicate?: (workspace: Workspace) => boolean): Promise<Workspace[]> {\n const matchingWorkspaces: Workspace[] = [] as Workspace[];\n\n await this.iterateWorkspaces((wsp) => {\n if (!predicate || predicate(wsp)) {\n matchingWorkspaces.push(wsp);\n }\n });\n\n return matchingWorkspaces;\n }\n\n public async getWorkspacesByFrameId(frameId: string): Promise<Workspace[]> {\n const workspaceSummaries = await this.getAllWorkspaceSummaries();\n const summariesForFrame = workspaceSummaries.filter((s) => s.frameId === frameId);\n\n const workspacesForFrame = await Promise.all(summariesForFrame.map((summary) => {\n return this.base.fetchWorkspace(summary.id);\n }));\n\n return workspacesForFrame;\n }\n\n public async getAllWorkspaceSummaries(): Promise<IOConnectWorkspaces.WorkspaceSummary[]> {\n\n const allSummariesResult = await this.bridge.send<WorkspaceSummariesResult>(OPERATIONS.getAllWorkspacesSummaries.name, {});\n\n return this.base.getAllWorkspaceSummaries(allSummariesResult);\n }\n\n public async getWindow(predicate: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => boolean): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n let resultWindow: IOConnectWorkspaces.WorkspaceWindow;\n\n await this.iterateWorkspaces((wsp, end) => {\n const foundWindow = wsp.getWindow(predicate);\n\n if (foundWindow) {\n resultWindow = foundWindow;\n end();\n }\n });\n\n return resultWindow;\n }\n\n public async getParent(predicate: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): Promise<IOConnectWorkspaces.WorkspaceBox> {\n let resultParent: IOConnectWorkspaces.WorkspaceBox;\n\n await this.iterateWorkspaces((wsp, end) => {\n\n const foundParent = wsp.getBox(predicate);\n\n if (foundParent) {\n resultParent = foundParent;\n end();\n }\n });\n\n return resultParent;\n }\n\n public async getLayoutSummaries(): Promise<IOConnectWorkspaces.WorkspaceLayoutSummary[]> {\n const allLayouts = await this.bridge.send<LayoutSummariesResult>(OPERATIONS.getAllLayoutsSummaries.name);\n return allLayouts.summaries;\n }\n\n public async deleteLayout(name: string): Promise<void> {\n await this.bridge.send(OPERATIONS.deleteLayout.name, { name });\n }\n\n public async exportLayout(predicate?: (layout: IOConnectWorkspaces.WorkspaceLayout) => boolean): Promise<IOConnectWorkspaces.WorkspaceLayout[]> {\n const allLayoutsResult = await this.bridge.send<ExportedLayoutsResult>(OPERATIONS.exportAllLayouts.name);\n return allLayoutsResult.layouts.reduce<IOConnectWorkspaces.WorkspaceLayout[]>((matchingLayouts, layout) => {\n\n if (!predicate || predicate(layout)) {\n matchingLayouts.push(layout);\n }\n\n return matchingLayouts;\n }, []);\n }\n\n public async saveLayout(config: IOConnectWorkspaces.WorkspaceLayoutSaveConfig): Promise<IOConnectWorkspaces.WorkspaceLayout> {\n return await this.bridge.send(OPERATIONS.saveLayout.name, config);\n }\n\n public async importLayouts(layouts: IOConnectWorkspaces.WorkspaceLayout[], mode: \"replace\" | \"merge\"): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (desktopGlobal) {\n try {\n // ensuring backwards compatibility\n await this.bridge.send(OPERATIONS.importLayouts.name, { layouts, mode });\n } catch (error) {\n // this is a soft-reversal to handle an import issue with GD\n await Promise.all(layouts.map((layout) => this.bridge.send(OPERATIONS.importLayout.name, { layout, mode })));\n }\n return;\n }\n\n await this.base.importLayouts(layouts, mode);\n }\n\n public handleOnSaved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\n return this.base.handleOnSaved(callback);\n }\n\n public handleOnRemoved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\n return this.base.handleOnRemoved(callback);\n }\n\n public async bundleWorkspaceTo(type: \"row\" | \"column\", workspaceId: string): Promise<void> {\n return await this.base.bundleWorkspaceTo(type, workspaceId);\n }\n\n public async bundleItemTo(type: \"row\" | \"column\", id: string): Promise<void> {\n return await this.base.bundleItemTo(type, id);\n }\n\n public getWorkspaceContext(workspaceId: string): Promise<any> {\n return this.base.getWorkspaceContext(workspaceId);\n }\n\n public setWorkspaceContext(workspaceId: string, data: any): Promise<void> {\n return this.base.setWorkspaceContext(workspaceId, data);\n }\n\n public updateWorkspaceContext(workspaceId: string, data: any): Promise<void> {\n return this.base.updateWorkspaceContext(workspaceId, data);\n }\n\n public subscribeWorkspaceContextUpdated(workspaceId: string, callback: (data: any) => void): Promise<import(\"callback-registry\").UnsubscribeFunction> {\n return this.base.subscribeWorkspaceContextUpdated(workspaceId, callback);\n }\n\n public async restoreItem(itemId: string): Promise<void> {\n return await this.base.restoreItem(itemId);\n }\n\n public async maximizeItem(itemId: string): Promise<void> {\n return await this.base.maximizeItem(itemId);\n }\n\n public async focusItem(itemId: string): Promise<void> {\n return await this.base.focusItem(itemId);\n }\n\n public async changeFrameState(frameId: string, state: IOConnectWorkspaces.FrameState): Promise<void> {\n await this.bridge.send<void>(OPERATIONS.changeFrameState.name, { frameId, requestedState: state });\n }\n\n public async getFrameBounds(frameId: string): Promise<IOConnectWorkspaces.FrameBounds> {\n const frameResult = await this.bridge.send<FrameBoundsResult>(OPERATIONS.getFrameBounds.name, { itemId: frameId });\n return frameResult.bounds;\n }\n\n public async getFrameState(frameId: string): Promise<IOConnectWorkspaces.FrameState> {\n const frameResult = await this.bridge.send<FrameStateResult>(OPERATIONS.getFrameState.name, { itemId: frameId });\n return frameResult.state;\n }\n\n public async closeItem(itemId: string): Promise<void> {\n return await this.base.closeItem(itemId);\n }\n\n public async resizeItem(itemId: string, config: IOConnectWorkspaces.ResizeConfig): Promise<void> {\n return await this.base.resizeItem(itemId, config);\n }\n\n public async setMaximizationBoundary(itemId: string, config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n return await this.base.setMaximizationBoundary(itemId, config);\n }\n\n public async showWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\n return await this.base.showWorkspaceLoadingAnimation(workspaceId);\n }\n\n public async hideWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\n return await this.base.hideWorkspaceLoadingAnimation(workspaceId);\n }\n\n public async moveFrame(itemId: string, config: IOConnectWorkspaces.MoveConfig): Promise<void> {\n return await this.base.moveFrame(itemId, config);\n }\n\n public getGDWindow(itemId: string): GDWindow {\n return this.base.getGDWindow(itemId);\n }\n\n public async forceLoadWindow(itemId: string): Promise<string> {\n const windowId = await this.base.forceLoadWindow(itemId);\n\n await this.base.notifyWindowAdded(windowId);\n\n return windowId;\n }\n\n public async ejectWindow(itemId: string): Promise<string> {\n const windowId: string = (await this.base.ejectWindow(itemId)).windowId;\n\n await this.base.notifyWindowAdded(windowId);\n\n return windowId;\n }\n\n public async moveWindowTo(itemId: string, newParentId: string): Promise<void> {\n return await this.base.moveWindowTo(itemId, newParentId);\n }\n\n public async getSnapshot(itemId: string, type: \"workspace\"): Promise<WorkspaceSnapshotResult>\n public async getSnapshot(itemId: string, type: \"frame\"): Promise<FrameSnapshotResult>\n public async getSnapshot(itemId: string, type: \"workspace\" | \"frame\"): Promise<WorkspaceSnapshotResult | FrameSnapshotResult> {\n return await this.base.getSnapshot(itemId, type);\n }\n\n public async setItemTitle(itemId: string, title: string): Promise<void> {\n return await this.base.setItemTitle(itemId, title);\n }\n\n public flatChildren(children: Child[]): Child[] {\n return children.reduce<Child[]>((soFar, child) => {\n\n soFar.push(child);\n\n if (child.type !== \"window\") {\n soFar.push(...this.flatChildren(child.children));\n }\n\n return soFar;\n }, []);\n }\n\n public refreshChildren(config: RefreshChildrenConfig): Child[] {\n return this.base.refreshChildren(config);\n }\n\n public iterateFindChild(children: Child[], predicate: (child: Child) => boolean): Child {\n return this.base.iterateFindChild(children, predicate);\n }\n\n public iterateFilterChildren(children: Child[], predicate: (child: Child) => boolean): Child[] {\n return this.base.iterateFilterChildren(children, predicate);\n }\n\n public hibernateWorkspace(workspaceId: string): Promise<void> {\n return this.base.hibernateWorkspace(workspaceId);\n }\n\n public resumeWorkspace(workspaceId: string): Promise<void> {\n return this.base.resumeWorkspace(workspaceId);\n }\n\n public lockWorkspace(workspaceId: string, config?: IOConnectWorkspaces.WorkspaceLockConfig): Promise<void> {\n return this.base.lockWorkspace(workspaceId, config);\n }\n\n public lockWindow(windowPlacementId: string, config?: IOConnectWorkspaces.WorkspaceWindowLockConfig): Promise<void> {\n return this.base.lockWindow(windowPlacementId, config);\n }\n\n public lockContainer(itemId: string, type: SubParentTypes[\"type\"], config?: ContainerLockConfig): Promise<void> {\n return this.base.lockContainer(itemId, type, config);\n }\n\n public pinWorkspace(workspaceId: string, icon?: string): Promise<void> {\n return this.base.pinWorkspace(workspaceId, icon);\n }\n\n public unpinWorkspace(workspaceId: string): Promise<void> {\n return this.base.unpinWorkspace(workspaceId);\n }\n\n public getWorkspaceIcon(workspaceId: string): Promise<string> {\n return this.base.getWorkspaceIcon(workspaceId);\n }\n\n public setWorkspaceIcon(workspaceId: string, icon: string): Promise<void> {\n return this.base.setWorkspaceIcon(workspaceId, icon);\n }\n\n public async getFrameConstraints(frameId: string): Promise<IOConnectWorkspaces.FrameConstraints> {\n const frameSnapshot = await this.getSnapshot(frameId, \"frame\");\n\n return {\n minWidth: frameSnapshot.config.minWidth,\n maxWidth: frameSnapshot.config.maxWidth,\n minHeight: frameSnapshot.config.minHeight,\n maxHeight: frameSnapshot.config.maxHeight,\n };\n }\n\n public registerShortcut(shortcut: string, frameId: string, callback: () => void): Promise<UnsubscribeFunction> {\n return this.shortcutsController.registerShortcut(shortcut, frameId, callback);\n }\n\n public getPlatformFrameId(): Promise<{id?: string}> {\n return this.base.getPlatformFrameId();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCoreLocalSubscription(config: SubscriptionConfig, levelId: string): Promise<IOConnectWorkspaces.Unsubscribe> {\n await this.bridge.createCoreEventSubscription();\n\n config.scopeId = config.scopeId || levelId;\n\n if (config.eventType === \"window\" && config.action === \"loaded\") {\n const originalCB = config.callback;\n\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n\n originalCB(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.handleCoreSubscription(config);\n }\n\n private handleEnterpriseLocalSubscription(config: SubscriptionConfig, levelId: string): Promise<IOConnectWorkspaces.Unsubscribe> {\n config.scopeId = config.scopeId || levelId;\n\n if (config.eventType === \"window\" && config.action === \"loaded\") {\n const originalCB = config.callback;\n\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n originalCB(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.subscribe(config);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCoreGlobalSubscription(callback: (callbackData: unknown) => void, eventType: WorkspaceEventType, action: WorkspaceEventAction): Promise<IOConnectWorkspaces.Unsubscribe> {\n await this.bridge.createCoreEventSubscription();\n\n const config: SubscriptionConfig = {\n eventType, callback, action,\n scope: \"global\",\n };\n\n if (eventType === \"window\" && action === \"loaded\") {\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n\n callback(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.handleCoreSubscription(config);\n }\n\n private handleEnterpriseGlobalSubscription(callback: (callbackData: unknown) => void, eventType: WorkspaceEventType, action: WorkspaceEventAction): Promise<IOConnectWorkspaces.Unsubscribe> {\n const config: SubscriptionConfig = {\n eventType, callback, action,\n scope: \"global\",\n };\n\n if (eventType === \"window\" && action === \"loaded\") {\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n\n callback(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.subscribe(config);\n }\n\n private async iterateWorkspaces(callback: (workspace: Workspace, end: () => void) => void): Promise<void> {\n let ended = false;\n\n const end = (): void => { ended = true; };\n\n const workspaceSummaries = await this.getAllWorkspaceSummaries();\n\n for (const summary of workspaceSummaries) {\n if (ended) {\n return;\n }\n\n const wsp = await this.base.fetchWorkspace(summary.id);\n\n callback(wsp, end);\n }\n }\n}\n","import { UnsubscribeFunction } from \"callback-registry\";\r\nimport { Bridge } from \"../communication/bridge\";\r\nimport { CLIENT_OPERATIONS, OPERATIONS } from \"../communication/constants\";\r\nimport CallbackRegistry from \"callback-registry\";\r\n\r\n\r\nexport class ShortcutsController {\r\n private _shortcuts = CallbackRegistry();\r\n constructor(\r\n private readonly bridge: Bridge,\r\n ) {\r\n this.bridge.onOperation((payload, caller) => {\r\n if (payload.operation === CLIENT_OPERATIONS.shortcutClicked.name) {\r\n const data = payload.data;\r\n this._shortcuts.execute(`${data.frameId}-${data.shortcut}`);\r\n }\r\n })\r\n }\r\n\r\n public async registerShortcut(shortcut: string, frameId: string, callback: () => void): Promise<UnsubscribeFunction> {\r\n await this.bridge.send<void>(OPERATIONS.registerShortcut.name, { shortcut, frameId });\r\n const un = this._shortcuts.add(`${frameId}-${shortcut}`, callback);\r\n return () => {\r\n un();\r\n this.bridge.send<void>(OPERATIONS.unregisterShortcut.name, { shortcut, frameId });\r\n }\r\n }\r\n}\r\n","/*eslint indent: [2, 4, {\"SwitchCase\": 1}]*/\nimport CallbackFactory from \"callback-registry\";\nimport { Bridge } from \"../communication/bridge\";\nimport { InteropTransport } from \"../communication/interop-transport\";\nimport { BaseBuilder } from \"../builders/baseBuilder\";\nimport { ParentBuilder } from \"../builders/parentBuilder\";\nimport { WorkspaceBuilder } from \"../builders/workspaceBuilder\";\nimport { ModelMaps, ModelTypes, FramePrivateData, WindowPrivateData, WorkspacePrivateData, ParentPrivateData } from \"../types/privateData\";\nimport { PrivateDataManager } from \"./privateDataManager\";\nimport { FrameCreateConfig, ModelCreateConfig, WindowCreateConfig, WorkspaceIoCCreateConfig, ParentCreateConfig } from \"../types/ioc\";\nimport { Frame } from \"../models/frame\";\nimport { Window } from \"../models/window\";\nimport { Workspace } from \"../models/workspace\";\nimport { ChildSnapshotResult } from \"../types/protocol\";\nimport { AllParentTypes, Child } from \"../types/builders\";\nimport { Row } from \"../models/row\";\nimport { Column } from \"../models/column\";\nimport { Group } from \"../models/group\";\nimport { Base } from \"../models/base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspacesController } from \"../types/controller\";\nimport { InteropAPI, WindowsAPI, LayoutsAPI, ContextsAPI } from \"../types/glue\";\nimport { BaseController } from \"../controllers/base\";\nimport { MainController } from \"../controllers/main\";\nimport { ShortcutsController } from \"../controllers/shortcuts\";\n\nexport class IoC {\n\n private _controllerInstance: WorkspacesController;\n private _bridgeInstance: Bridge;\n private _transportInstance: InteropTransport;\n private _privateDataManagerInstance: PrivateDataManager;\n private _parentBaseInstance: Base;\n private _baseController: BaseController;\n private _shortcutsController: ShortcutsController;\n\n constructor(\n private readonly agm: InteropAPI,\n private readonly windows: WindowsAPI,\n private readonly layouts: LayoutsAPI,\n private readonly contexts: ContextsAPI\n ) { }\n\n public get baseController(): BaseController {\n if (!this._baseController) {\n this._baseController = new BaseController(this, this.windows, this.contexts, this.layouts);\n }\n\n return this._baseController;\n }\n\n public get controller(): WorkspacesController {\n if (!this._controllerInstance) {\n this._controllerInstance = new MainController(this.bridge, this.baseController, this.shortcutsController);\n }\n return this._controllerInstance;\n }\n\n public get shortcutsController(): ShortcutsController {\n if (!this._shortcutsController) {\n this._shortcutsController = new ShortcutsController(this.bridge);\n }\n return this._shortcutsController;\n }\n\n public get bridge(): Bridge {\n if (!this._bridgeInstance) {\n this._bridgeInstance = new Bridge(this.transport, CallbackFactory());\n }\n return this._bridgeInstance;\n }\n\n public get transport(): InteropTransport {\n\n if (!this._transportInstance) {\n this._transportInstance = new InteropTransport(this.agm, CallbackFactory());\n }\n\n return this._transportInstance;\n }\n\n public get privateDataManager(): PrivateDataManager {\n if (!this._privateDataManagerInstance) {\n this._privateDataManagerInstance = new PrivateDataManager();\n }\n return this._privateDataManagerInstance;\n }\n\n public get parentBase(): Base {\n if (!this._parentBaseInstance) {\n this._parentBaseInstance = new Base(this.privateDataManager);\n }\n return this._parentBaseInstance;\n }\n\n public async initiate(actualWindowId: string): Promise<void> {\n await this.transport.initiate(actualWindowId);\n }\n\n public getModel<T extends ModelTypes>(type: ModelTypes, createConfig: ModelCreateConfig): ModelMaps[T] {\n switch (type) {\n case \"frame\": {\n const newFrame = new Frame(this.privateDataManager);\n\n const { summary } = createConfig as FrameCreateConfig;\n\n const frameData: FramePrivateData = { summary, controller: this.controller };\n\n this.privateDataManager.setFrameData(newFrame, frameData);\n\n return newFrame as ModelMaps[T];\n }\n case \"window\": {\n const { id, parent, frame, workspace, config } = createConfig as WindowCreateConfig;\n\n const windowPrivateData: WindowPrivateData = {\n type: \"window\",\n controller: this.controller,\n config, id, parent, frame, workspace\n };\n\n const newWindow = new Window(this.privateDataManager);\n\n this.privateDataManager.setWindowData(newWindow, windowPrivateData);\n\n return newWindow as ModelMaps[T];\n }\n case \"row\":\n case \"column\":\n case \"group\": {\n const { id, children, parent, frame, workspace, config } = createConfig as ParentCreateConfig;\n\n const newParent = type === \"column\" ? new Column(this.parentBase) :\n type === \"row\" ? new Row(this.parentBase) : new Group(this.parentBase);\n\n const builtChildren = this.buildChildren(children, frame, workspace, newParent);\n\n const parentPrivateData = {\n id, parent, frame, workspace,\n config,\n type,\n controller: this.controller,\n children: builtChildren,\n };\n\n this.privateDataManager.setParentData(newParent, parentPrivateData as ParentPrivateData);\n\n return newParent as ModelMaps[T];\n }\n case \"workspace\": {\n const { snapshot, frame } = createConfig as WorkspaceIoCCreateConfig;\n\n const newWorkspace = new Workspace(this.privateDataManager);\n\n const children = this.buildChildren(snapshot.children, frame, newWorkspace, newWorkspace);\n\n const workspacePrivateData: WorkspacePrivateData = {\n id: snapshot.id,\n type: \"workspace\",\n config: snapshot.config,\n base: this.parentBase,\n controller: this.controller,\n children, frame, ioc: this\n };\n\n this.privateDataManager.setWorkspaceData(newWorkspace, workspacePrivateData);\n return newWorkspace as ModelMaps[T];\n }\n default: throw new Error(`Unrecognized type: ${type}`);\n }\n }\n\n public getBuilder(config: IOConnectWorkspaces.BuilderConfig): WorkspaceBuilder | ParentBuilder {\n config.definition = config.definition || {};\n\n if (!Array.isArray(config.definition.children)) {\n config.definition.children = [];\n }\n\n const baseBuilder = new BaseBuilder(this.getBuilder.bind(this));\n\n switch (config.type) {\n case \"workspace\": {\n return new WorkspaceBuilder(config.definition as IOConnectWorkspaces.WorkspaceDefinition, baseBuilder, this.controller);\n }\n case \"row\":\n case \"column\":\n case \"group\": {\n (config.definition as IOConnectWorkspaces.BoxDefinition).type = config.type;\n return new ParentBuilder(config.definition as IOConnectWorkspaces.BoxDefinition, baseBuilder);\n }\n default: throw new Error(`Unexpected Builder creation error, provided config: ${JSON.stringify(config)}`);\n }\n }\n\n private buildChildren(children: ChildSnapshotResult[], frame: Frame, workspace: IOConnectWorkspaces.Workspace, parent: AllParentTypes): Child[] {\n return children.map<Child>((child) => {\n switch (child.type) {\n case \"window\": return this.getModel<\"window\">(\"window\", {\n id: child.id,\n config: child.config,\n frame, workspace, parent\n } as WindowCreateConfig);\n case \"column\": return this.getModel<\"column\">(child.type, {\n id: child.id,\n config: child.config,\n children: child.children,\n frame, workspace, parent\n } as ParentCreateConfig);\n case \"row\": return this.getModel<\"row\">(child.type, {\n id: child.id,\n config: child.config,\n children: child.children,\n frame, workspace, parent\n } as ParentCreateConfig);\n case \"group\": return this.getModel<\"group\">(child.type, {\n id: child.id,\n config: child.config,\n children: child.children,\n frame, workspace, parent\n } as ParentCreateConfig);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: throw new Error(`Unsupported child type: ${(child as any).type}`);\n }\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IoC } from \"./shared/ioc\";\nimport { checkThrowCallback, nonEmptyStringDecoder, workspaceLayoutDecoder, workspaceDefinitionDecoder, workspaceBuilderCreateConfigDecoder, builderConfigDecoder, restoreWorkspaceConfigDecoder, workspaceLayoutSaveConfigDecoder, emptyFrameDefinitionDecoder } from \"./shared/decoders\";\nimport { FrameStreamData, WorkspaceStreamData, WorkspaceSnapshotResult, WindowStreamData } from \"./types/protocol\";\nimport { FrameCreateConfig, WorkspaceIoCCreateConfig } from \"./types/ioc\";\nimport { IOConnectWorkspaces } from \"./../workspaces\";\nimport { WorkspacesController } from \"./types/controller\";\nimport { version } from \"../package.json\";\nimport { API } from \"../temp\";\n\nexport const composeAPI = (glue: any, ioc: IoC): API => {\n\n const controller: WorkspacesController = ioc.controller;\n\n const inWorkspace = (): Promise<boolean> => {\n const myId: string = glue.windows.my().id;\n\n if (!myId) {\n throw new Error(\"Cannot get my frame, because my id is undefined.\");\n }\n\n return controller.checkIsInSwimlane(myId);\n };\n\n const getBuilder = (config: IOConnectWorkspaces.BuilderConfig): IOConnectWorkspaces.WorkspaceBuilder | IOConnectWorkspaces.BoxBuilder => {\n const validatedConfig = builderConfigDecoder.runWithException(config);\n\n return ioc.getBuilder(validatedConfig);\n };\n\n const getMyFrame = async (): Promise<IOConnectWorkspaces.Frame> => {\n const windowId: string = glue.windows.my().id;\n\n if (!windowId) {\n throw new Error(\"Cannot get my frame, because my id is undefined.\");\n }\n\n const isInSwimlane = await controller.checkIsInSwimlane(windowId);\n\n if (!isInSwimlane) {\n throw new Error(\"Cannot fetch your frame, because this window is not in a workspace\");\n }\n\n return controller.getFrame({ windowId });\n };\n\n const getFrame = async (predicate: (frame: IOConnectWorkspaces.Frame) => boolean): Promise<IOConnectWorkspaces.Frame> => {\n checkThrowCallback(predicate);\n\n return controller.getFrame({ predicate });\n };\n\n const getAllFrames = async (predicate?: (frame: IOConnectWorkspaces.Frame) => boolean): Promise<IOConnectWorkspaces.Frame[]> => {\n checkThrowCallback(predicate, true);\n\n return controller.getFrames(predicate);\n };\n\n const getAllWorkspacesSummaries = (): Promise<IOConnectWorkspaces.WorkspaceSummary[]> => {\n return controller.getAllWorkspaceSummaries();\n };\n\n const getMyWorkspace = async (): Promise<IOConnectWorkspaces.Workspace> => {\n const myId: string = glue.windows.my().id;\n\n if (!myId) {\n throw new Error(\"Cannot get my workspace, because my id is undefined.\");\n }\n\n const isInSwimlane = await controller.checkIsInSwimlane(myId);\n\n if (!isInSwimlane) {\n throw new Error(\"Cannot fetch your workspace, because this window is not in a workspace\");\n }\n\n return await controller.getWorkspaceByWindowId(myId);\n };\n\n const getWorkspace = async (predicate: (workspace: IOConnectWorkspaces.Workspace) => boolean): Promise<IOConnectWorkspaces.Workspace> => {\n checkThrowCallback(predicate);\n return (await controller.getWorkspaces(predicate))[0];\n };\n\n const getWorkspaceById = async (workspaceId: string): Promise<IOConnectWorkspaces.Workspace> => {\n nonEmptyStringDecoder.runWithException(workspaceId);\n\n return controller.getWorkspaceById(workspaceId);\n };\n\n const getAllWorkspaces = (predicate?: (workspace: IOConnectWorkspaces.Workspace) => boolean): Promise<IOConnectWorkspaces.Workspace[]> => {\n checkThrowCallback(predicate, true);\n return controller.getWorkspaces(predicate);\n };\n\n const getWindow = async (predicate: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => boolean): Promise<IOConnectWorkspaces.WorkspaceWindow> => {\n checkThrowCallback(predicate);\n return controller.getWindow(predicate);\n };\n\n const getParent = async (predicate: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): Promise<IOConnectWorkspaces.WorkspaceBox> => {\n checkThrowCallback(predicate);\n return controller.getParent(predicate);\n };\n\n const restoreWorkspace = async (name: string, options?: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<IOConnectWorkspaces.Workspace> => {\n nonEmptyStringDecoder.runWithException(name);\n const validatedOptions = restoreWorkspaceConfigDecoder.runWithException(options);\n return controller.restoreWorkspace(name, validatedOptions);\n };\n\n const createWorkspace = async (definition: IOConnectWorkspaces.WorkspaceDefinition, saveConfig?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<IOConnectWorkspaces.Workspace> => {\n const validatedDefinition = workspaceDefinitionDecoder.runWithException(definition);\n const validatedConfig = workspaceBuilderCreateConfigDecoder.runWithException(saveConfig);\n\n return controller.createWorkspace(validatedDefinition, validatedConfig);\n };\n\n const createEmptyFrame = async (definition?: IOConnectWorkspaces.EmptyFrameDefinition): Promise<IOConnectWorkspaces.Frame> => {\n const validatedDefinition = emptyFrameDefinitionDecoder.runWithException(definition);\n\n return controller.createEmptyFrame(validatedDefinition ?? {});\n };\n\n const layouts = {\n getSummaries: (): Promise<IOConnectWorkspaces.WorkspaceLayoutSummary[]> => {\n return controller.getLayoutSummaries();\n },\n delete: async (name: string): Promise<void> => {\n nonEmptyStringDecoder.runWithException(name);\n return controller.deleteLayout(name);\n },\n export: async (predicate?: (layout: IOConnectWorkspaces.WorkspaceLayout) => boolean): Promise<IOConnectWorkspaces.WorkspaceLayout[]> => {\n checkThrowCallback(predicate, true);\n return controller.exportLayout(predicate);\n },\n import: async (layouts: IOConnectWorkspaces.WorkspaceLayout[], mode: \"replace\" | \"merge\" = \"replace\"): Promise<void> => {\n\n if (!Array.isArray(layouts)) {\n throw new Error(`The provided layouts argument is not an array: ${JSON.stringify(layouts)}`);\n }\n\n layouts.forEach((layout) => workspaceLayoutDecoder.runWithException(layout));\n return controller.importLayouts(layouts, mode);\n },\n save: async (config: IOConnectWorkspaces.WorkspaceLayoutSaveConfig): Promise<IOConnectWorkspaces.WorkspaceLayout> => {\n const verifiedConfig = workspaceLayoutSaveConfigDecoder.runWithException(config);\n return controller.saveLayout(verifiedConfig);\n },\n onSaved: async (callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n return controller.handleOnSaved(callback);\n },\n onRemoved: async (callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n return controller.handleOnRemoved(callback);\n }\n };\n\n const onFrameOpened = async (callback: (frame: IOConnectWorkspaces.Frame) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = (payload: FrameStreamData): void => {\n const frameConfig: FrameCreateConfig = {\n summary: payload.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n callback(frame);\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"frame\", \"opened\");\n return unsubscribe;\n };\n\n const onFrameClosed = async (callback: (closed: IOConnectWorkspaces.FrameClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = (payload: FrameStreamData): void => {\n callback({ frameId: payload.frameSummary.id, frameBounds: payload.frameBounds });\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"frame\", \"closed\");\n return unsubscribe;\n };\n\n const onWorkspaceOpened = async (callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await controller.transformStreamPayloadToWorkspace(payload);\n\n callback(workspace);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"opened\");\n return unsubscribe;\n };\n\n const onWorkspaceClosed = async (callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = (payload: WorkspaceStreamData): void => {\n callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"closed\");\n return unsubscribe;\n };\n\n const onWorkspaceHibernated = async (callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await controller.transformStreamPayloadToWorkspace(payload);\n\n callback(workspace);\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"hibernated\");\n return unsubscribe;\n };\n\n const onWorkspaceResumed = async (callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await controller.transformStreamPayloadToWorkspace(payload);\n\n callback(workspace);\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"resumed\");\n return unsubscribe;\n };\n\n const onWindowAdded = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"added\");\n return unsubscribe;\n };\n\n const onWindowLoaded = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const foundWindow = workspace.getWindow((win) => win.id && win.id === payload.windowSummary.config.windowId);\n\n callback(foundWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"loaded\");\n return unsubscribe;\n };\n\n const onWindowRemoved = async (callback: (removed: { windowId: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = (payload: WindowStreamData): void => {\n const { windowId, workspaceId, frameId } = payload.windowSummary.config;\n callback({ windowId, workspaceId, frameId });\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"removed\");\n return unsubscribe;\n };\n\n const onWindowMaximized = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"maximized\");\n return unsubscribe;\n };\n\n const onWindowRestored = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"restored\");\n return unsubscribe;\n };\n\n\n const onWindowSelected = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"selected\");\n return unsubscribe;\n };\n\n const waitForFrame = async (id: string): Promise<IOConnectWorkspaces.Frame> => {\n nonEmptyStringDecoder.runWithException(id);\n return new Promise<IOConnectWorkspaces.Frame>((res, rej) => {\n let unsub: IOConnectWorkspaces.Unsubscribe = () => {\n // do nothing\n };\n onFrameOpened((f) => {\n if (f.id === id) {\n res(f);\n unsub();\n }\n }).then((u) => {\n unsub = u;\n return getAllFrames();\n }).then((frames) => {\n const myFrame = frames.find((f) => f.id === id);\n if (myFrame) {\n res(myFrame);\n unsub();\n }\n }).catch(rej);\n });\n };\n\n return {\n inWorkspace,\n getBuilder,\n getMyFrame,\n getFrame,\n getAllFrames,\n getAllWorkspacesSummaries,\n getMyWorkspace,\n getWorkspace,\n getWorkspaceById,\n getAllWorkspaces,\n getWindow,\n getBox: getParent,\n restoreWorkspace,\n createWorkspace,\n createEmptyFrame,\n waitForFrame,\n layouts,\n onFrameOpened,\n onFrameClosed,\n onWorkspaceOpened,\n onWorkspaceClosed,\n onWorkspaceHibernated,\n onWorkspaceResumed,\n onWindowAdded,\n onWindowLoaded,\n onWindowRemoved,\n onWindowMaximized,\n onWindowRestored,\n onWindowSelected,\n version\n };\n};\n","import { IoC } from \"./shared/ioc\";\r\nimport { composeAPI } from \"./main\";\r\nimport { WorkspacesFactoryFunction } from \"../workspaces\";\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nconst factoryFunction: WorkspacesFactoryFunction = async (io: any): Promise<void> => {\r\n\r\n const ioc = new IoC(io.agm, io.windows, io.layouts, io.contexts);\r\n\r\n const actualWindowId = io.interop.instance.windowId;\r\n\r\n await ioc.initiate(actualWindowId);\r\n\r\n io.workspaces = composeAPI(io, ioc);\r\n};\r\n\r\n// attach to window object\r\nif (typeof window !== \"undefined\") {\r\n /* eslint-disable @typescript-eslint/no-explicit-any */\r\n (window as any).IOWorkspaces = factoryFunction;\r\n}\r\n\r\nexport default factoryFunction;\r\n"],"names":["privateData","getBase","data","getData","CallbackRegistry","CallbackFactory"],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.es.js","sources":["../node_modules/callback-registry/lib/index.js","../node_modules/decoder-validate/dist/index.es5.js","../src/shared/decoders.ts","../src/communication/constants.ts","../src/shared/promiseWrapper.ts","../src/communication/bridge.ts","../src/shared/promisePlus.ts","../src/communication/interop-transport.ts","../src/builders/parentBuilder.ts","../src/builders/baseBuilder.ts","../src/builders/workspaceBuilder.ts","../src/models/row.ts","../src/models/column.ts","../src/models/group.ts","../src/models/workspace.ts","../src/models/window.ts","../src/models/frame.ts","../src/shared/privateDataManager.ts","../src/models/base/base.ts","../src/controllers/base.ts","../src/controllers/main.ts","../src/controllers/shortcuts.ts","../src/shared/ioc.ts","../src/main.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder<A> {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder<A>` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result<A, DecoderError>`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial<DecoderError>` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial<DecoderError>`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray<T> = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = <T>(values: Decoder<T>): Decoder<NonEmptyArray<T>> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder<string> =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder<User> = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder<User> = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder<Comment> = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { Decoder, object, boolean, string, optional, array, oneOf, constant, lazy, number, anyJson, intersection } from \"decoder-validate\";\nimport {\n IsWindowInSwimlaneResult,\n WorkspaceSnapshotResult,\n ChildSnapshotResult,\n WorkspaceConfigResult,\n FrameSummaryResult,\n WorkspaceCreateConfigProtocol,\n GetFrameSummaryConfig,\n WorkspaceSummaryResult,\n LayoutSummariesResult,\n LayoutSummary,\n OpenWorkspaceConfig,\n FrameSummariesResult,\n WorkspaceSummariesResult,\n ExportedLayoutsResult,\n DeleteLayoutConfig,\n SimpleItemConfig,\n ResizeItemConfig,\n MoveFrameConfig,\n FrameSnapshotResult,\n BaseChildSnapshotConfig,\n ParentSnapshotConfig,\n SwimlaneWindowSnapshotConfig,\n SimpleWindowOperationSuccessResult,\n SetItemTitleConfig,\n MoveWindowConfig,\n AddWindowConfig,\n AddContainerConfig,\n AddItemResult,\n BundleWorkspaceConfig,\n WorkspaceStreamData,\n FrameStreamData,\n ContainerStreamData,\n ContainerSummaryResult,\n WindowStreamData,\n PingResult,\n FrameStateConfig,\n FrameStateResult,\n LockWorkspaceConfig,\n LockWindowConfig,\n LockContainerConfig,\n SubParentSnapshotResult,\n WindowSnapshotResult,\n LockRowConfig,\n LockColumnConfig,\n LockGroupConfig,\n FrameBoundsResult,\n GetWorkspaceIconResult,\n PinWorkspaceConfig,\n SetWorkspaceIconConfig,\n FrameInitializationConfigProtocol,\n WorkspaceSelector,\n ShortcutClickedData,\n ShortcutConfig,\n FrameSnapshotConfig,\n FrameBounds,\n SetMaximizationBoundaryConfig,\n LoadingAnimationConfig,\n GetPlatformFrameIdResult,\n ItemBundleConfig,\n OperationCheckConfig,\n OperationCheckResult\n} from \"../types/protocol\";\nimport { WorkspaceEventType, WorkspaceEventAction } from \"../types/subscription\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\n\nexport const nonEmptyStringDecoder: Decoder<string> = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nexport const nonNegativeNumberDecoder: Decoder<number> = number().where((num) => num >= 0, \"Expected a non-negative number\");\nexport const positiveNumberDecoder: Decoder<number> = number().where((num) => num > 0, \"Expected a positive number\");\n\n\nexport const isWindowInSwimlaneResultDecoder: Decoder<IsWindowInSwimlaneResult> = object({\n inWorkspace: boolean()\n});\n\nexport const allParentDecoder: Decoder<\"workspace\" | \"row\" | \"column\" | \"group\"> = oneOf<\"workspace\" | \"row\" | \"column\" | \"group\">(\n constant(\"workspace\"),\n constant(\"row\"),\n constant(\"column\"),\n constant(\"group\")\n);\n\nexport const subParentDecoder: Decoder<\"row\" | \"column\" | \"group\"> = oneOf<\"row\" | \"column\" | \"group\">(\n constant(\"row\"),\n constant(\"column\"),\n constant(\"group\")\n);\n\nexport const frameStateDecoder: Decoder<\"maximized\" | \"minimized\" | \"normal\"> = oneOf<\"maximized\" | \"minimized\" | \"normal\">(\n constant(\"maximized\"),\n constant(\"minimized\"),\n constant(\"normal\")\n);\n\nexport const loadingAnimationTypeDecoder: Decoder<\"workspace\"> = oneOf<\"workspace\">(\n constant(\"workspace\")\n);\n\nexport const checkThrowCallback = (callback: unknown, allowUndefined?: boolean): void => {\n const argumentType = typeof callback;\n\n if (allowUndefined && argumentType !== \"function\" && argumentType !== \"undefined\") {\n throw new Error(`Provided argument must be either undefined or of type function, provided: ${argumentType}`);\n }\n\n if (!allowUndefined && argumentType !== \"function\") {\n throw new Error(`Provided argument must be of type function, provided: ${argumentType}`);\n }\n};\n\nexport const workspaceBuilderCreateConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceCreateConfig> = optional(object({\n saveLayout: optional(boolean())\n}));\n\nexport const deleteLayoutConfigDecoder: Decoder<DeleteLayoutConfig> = object({\n name: nonEmptyStringDecoder\n});\n\nexport const windowDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowDefinitionConfig> = object({\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean())\n});\n\nexport const groupDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.GroupDefinitionConfig> = object({\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n allowDrop: optional(boolean()),\n allowDropHeader: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropBottom: optional(boolean()),\n showMaximizeButton: optional(boolean()),\n showEjectButton: optional(boolean()),\n showAddWindowButton: optional(boolean())\n});\n\nexport const rowDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.RowDefinitionConfig> = object({\n minHeight: optional(number()),\n maxHeight: optional(number()),\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n isPinned: optional(boolean()),\n maximizationBoundary: optional(boolean())\n});\n\nexport const columnDefinitionConfigDecoder: Decoder<IOConnectWorkspaces.ColumnDefinitionConfig> = object({\n minWidth: optional(number()),\n maxWidth: optional(number()),\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n isPinned: optional(boolean()),\n maximizationBoundary: optional(boolean())\n});\n\nexport const swimlaneWindowDefinitionDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowDefinition> = object({\n type: optional(constant(\"window\")),\n appName: optional(nonEmptyStringDecoder),\n windowId: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n config: optional(windowDefinitionConfigDecoder)\n});\n\nexport const strictSwimlaneWindowDefinitionDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowDefinition> = object({\n type: constant(\"window\"),\n appName: optional(nonEmptyStringDecoder),\n windowId: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n config: optional(windowDefinitionConfigDecoder)\n});\n\nexport const parentDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = optional(object({\n type: optional(subParentDecoder),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n swimlaneWindowDefinitionDecoder,\n parentDefinitionDecoder\n )\n ))\n ),\n config: optional(anyJson())\n}));\n\n\nexport const strictColumnDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = object({\n type: constant(\"column\"),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n strictSwimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n )\n ))\n ),\n config: optional(columnDefinitionConfigDecoder)\n});\n\nexport const strictRowDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = object({\n type: constant(\"row\"),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n strictSwimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n )\n ))\n ),\n config: optional(rowDefinitionConfigDecoder)\n});\n\nexport const strictGroupDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = object({\n type: constant(\"group\"),\n children: optional(\n lazy(() => array(\n oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n strictSwimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n )\n ))\n ),\n config: optional(groupDefinitionConfigDecoder)\n});\n\nexport const strictParentDefinitionDecoder: Decoder<IOConnectWorkspaces.BoxDefinition> = oneOf(strictGroupDefinitionDecoder, strictColumnDefinitionDecoder, strictRowDefinitionDecoder);\n\nexport const stateDecoder: Decoder<\"maximized\" | \"normal\"> = oneOf<\"maximized\" | \"normal\">(\n (string().where((s) => s.toLowerCase() === \"maximized\", \"Expected a case insensitive variation of 'maximized'\") as Decoder<\"maximized\">),\n (string().where((s) => s.toLowerCase() === \"normal\", \"Expected a case insensitive variation of 'normal'\") as Decoder<\"normal\">)\n);\n\nexport const newFrameConfigDecoder: Decoder<IOConnectWorkspaces.NewFrameConfig> = object({\n bounds: optional(object({\n left: optional(number()),\n top: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n })),\n frameId: optional(nonEmptyStringDecoder)\n});\n\nexport const loadingStrategyDecoder: Decoder<IOConnectWorkspaces.LoadingStrategy> = oneOf<\"direct\" | \"delayed\" | \"lazy\">(\n constant(\"direct\"),\n constant(\"delayed\"),\n constant(\"lazy\")\n);\n\nexport const restoreWorkspaceConfigDecoder: Decoder<IOConnectWorkspaces.RestoreWorkspaceConfig> = optional(object({\n app: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n loadingStrategy: optional(loadingStrategyDecoder),\n title: optional(nonEmptyStringDecoder),\n reuseWorkspaceId: optional(nonEmptyStringDecoder),\n frameId: optional(nonEmptyStringDecoder),\n applicationName: optional(nonEmptyStringDecoder),\n lockdown: optional(boolean()),\n activateFrame: optional(boolean()),\n newFrame: optional(oneOf<IOConnectWorkspaces.NewFrameConfig | boolean>(\n newFrameConfigDecoder,\n boolean()\n )),\n noTabHeader: optional(boolean()),\n inMemoryLayout: optional(boolean()),\n icon: optional(nonEmptyStringDecoder),\n isPinned: optional(boolean()),\n isSelected: optional(boolean()),\n positionIndex: optional(nonNegativeNumberDecoder),\n allowSystemHibernation: optional(boolean())\n}));\n\nexport const openWorkspaceConfigDecoder: Decoder<OpenWorkspaceConfig> = object({\n name: nonEmptyStringDecoder,\n restoreOptions: optional(restoreWorkspaceConfigDecoder)\n});\n\nexport const workspaceDefinitionDecoder: Decoder<IOConnectWorkspaces.WorkspaceDefinition> = object({\n children: optional(array(oneOf<IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition>(\n swimlaneWindowDefinitionDecoder,\n strictParentDefinitionDecoder\n ))),\n context: optional(anyJson()),\n config: optional(object({\n title: optional(nonEmptyStringDecoder),\n position: optional(nonNegativeNumberDecoder),\n isFocused: optional(boolean()),\n noTabHeader: optional(boolean()),\n reuseWorkspaceId: optional(nonEmptyStringDecoder),\n loadingStrategy: optional(loadingStrategyDecoder),\n allowDrop: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropBottom: optional(boolean()),\n allowSystemHibernation: optional(boolean()),\n allowExtract: optional(boolean()),\n allowWindowReorder: optional(boolean()),\n showSaveButton: optional(boolean()),\n allowWorkspaceTabReorder: optional(boolean()),\n allowWorkspaceTabExtract: optional(boolean()),\n showCloseButton: optional(boolean()),\n allowSplitters: optional(boolean()),\n showWindowCloseButtons: optional(boolean()),\n showEjectButtons: optional(boolean()),\n showAddWindowButtons: optional(boolean()),\n icon: optional(nonEmptyStringDecoder),\n isPinned: optional(boolean()),\n isSelected: optional(boolean()),\n positionIndex: optional(nonNegativeNumberDecoder)\n })),\n frame: optional(object({\n reuseFrameId: optional(nonEmptyStringDecoder),\n applicationName: optional(nonEmptyStringDecoder),\n newFrame: optional(oneOf<boolean | IOConnectWorkspaces.NewFrameConfig>(\n boolean(),\n newFrameConfigDecoder\n ))\n }))\n});\n\nexport const workspaceSelectorDecoder: Decoder<WorkspaceSelector> = object({\n workspaceId: nonEmptyStringDecoder\n});\n\nexport const restoreWorkspaceDefinitionDecoder: Decoder<IOConnectWorkspaces.RestoreWorkspaceDefinition> = object({\n name: nonEmptyStringDecoder,\n restoreOptions: optional(restoreWorkspaceConfigDecoder)\n});\n\nexport const emptyFrameDefinitionDecoder: Decoder<IOConnectWorkspaces.EmptyFrameDefinition> = optional(object({\n applicationName: optional(string()),\n frameConfig: optional(newFrameConfigDecoder),\n context: optional(object()),\n layoutComponentId: optional(nonEmptyStringDecoder)\n}));\n\nexport const frameInitConfigDecoder: Decoder<IOConnectWorkspaces.FrameInitializationConfig> = object({\n workspaces: array(oneOf<IOConnectWorkspaces.WorkspaceDefinition | IOConnectWorkspaces.RestoreWorkspaceDefinition>(\n optional(workspaceDefinitionDecoder),\n optional(restoreWorkspaceDefinitionDecoder)\n ))\n});\n\nexport const frameInitProtocolConfigDecoder: Decoder<FrameInitializationConfigProtocol> = object({\n frameId: nonEmptyStringDecoder,\n workspaces: array(oneOf<IOConnectWorkspaces.WorkspaceDefinition | IOConnectWorkspaces.RestoreWorkspaceDefinition>(\n workspaceDefinitionDecoder,\n restoreWorkspaceDefinitionDecoder\n ))\n});\n\nexport const builderConfigDecoder: Decoder<IOConnectWorkspaces.BuilderConfig> = object({\n type: allParentDecoder,\n definition: optional(oneOf<IOConnectWorkspaces.WorkspaceDefinition | IOConnectWorkspaces.BoxDefinition>(\n workspaceDefinitionDecoder,\n parentDefinitionDecoder\n ))\n});\n\nexport const workspaceCreateConfigDecoder: Decoder<WorkspaceCreateConfigProtocol> = intersection(\n workspaceDefinitionDecoder,\n object({\n saveConfig: optional(object({\n saveLayout: optional(boolean())\n }))\n })\n);\n\nexport const getFrameSummaryConfigDecoder: Decoder<GetFrameSummaryConfig> = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const frameInitializationContextDecoder: Decoder<IOConnectWorkspaces.FrameInitializationContext> = object({\n context: optional(object())\n});\n\nexport const frameSummaryDecoder: Decoder<FrameSummaryResult> = object({\n id: nonEmptyStringDecoder,\n isFocused: optional(boolean()),\n isInitialized: optional(boolean()),\n initializationContext: optional(frameInitializationContextDecoder)\n});\n\nexport const containerSummaryDecoder: Decoder<IOConnectWorkspaces.BoxSummary> = object({\n type: subParentDecoder,\n id: nonEmptyStringDecoder,\n frameId: nonEmptyStringDecoder,\n workspaceId: nonEmptyStringDecoder,\n positionIndex: number()\n});\n\nexport const eventTypeDecoder: Decoder<WorkspaceEventType> = oneOf<\"frame\" | \"workspace\" | \"container\" | \"window\">(\n constant(\"frame\"),\n constant(\"workspace\"),\n constant(\"container\"),\n constant(\"window\")\n);\n\nexport const streamRequestArgumentsDecoder: Decoder<{ type: WorkspaceEventType; branch: string }> = object({\n type: eventTypeDecoder,\n branch: nonEmptyStringDecoder\n});\n\nexport const workspaceEventActionDecoder: Decoder<WorkspaceEventAction> = oneOf<\"opened\" | \"closing\" | \"closed\" | \"focus\" | \"added\" | \"loaded\" | \"removed\" | \"childrenUpdate\" | \"containerChange\" | \"maximized\" | \"restored\" | \"minimized\" | \"normal\" | \"selected\" | \"lock-configuration-changed\" | \"hibernated\" | \"resumed\">(\n constant(\"opened\"),\n constant(\"closing\"),\n constant(\"closed\"),\n constant(\"focus\"),\n constant(\"added\"),\n constant(\"loaded\"),\n constant(\"removed\"),\n constant(\"childrenUpdate\"),\n constant(\"containerChange\"),\n constant(\"maximized\"),\n constant(\"restored\"),\n constant(\"minimized\"),\n constant(\"normal\"),\n constant(\"selected\"),\n constant(\"lock-configuration-changed\"),\n constant(\"hibernated\"),\n constant(\"resumed\")\n);\n\nexport const workspaceConfigResultDecoder: Decoder<WorkspaceConfigResult> = object({\n frameId: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder,\n positionIndex: nonNegativeNumberDecoder,\n name: nonEmptyStringDecoder,\n layoutName: optional(nonEmptyStringDecoder),\n isHibernated: optional(boolean()),\n isSelected: optional(boolean()),\n allowDrop: optional(boolean()),\n allowSystemHibernation: optional(boolean()),\n allowExtract: optional(boolean()),\n allowWindowReorder: optional(boolean()),\n allowSplitters: optional(boolean()),\n showCloseButton: optional(boolean()),\n showSaveButton: optional(boolean()),\n allowWorkspaceTabReorder: optional(boolean()),\n allowWorkspaceTabExtract: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropBottom: optional(boolean()),\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number()),\n showAddWindowButtons: optional(boolean()),\n showEjectButtons: optional(boolean()),\n showWindowCloseButtons: optional(boolean()),\n widthInPx: optional(number()),\n heightInPx: optional(number()),\n isPinned: optional(boolean()),\n});\n\n// todo: remove number positionIndex when fixed\nexport const baseChildSnapshotConfigDecoder: Decoder<BaseChildSnapshotConfig> = object({\n frameId: nonEmptyStringDecoder,\n workspaceId: nonEmptyStringDecoder,\n positionIndex: number(),\n minWidth: optional(number()),\n maxWidth: optional(number()),\n minHeight: optional(number()),\n maxHeight: optional(number())\n});\n\nexport const parentSnapshotConfigDecoder: Decoder<ParentSnapshotConfig> = anyJson();\n\nexport const swimlaneWindowSnapshotConfigDecoder: Decoder<SwimlaneWindowSnapshotConfig> = intersection(\n baseChildSnapshotConfigDecoder,\n object({\n windowId: optional(nonEmptyStringDecoder),\n isMaximized: optional(boolean()),\n isFocused: boolean(),\n isSelected: optional(boolean()),\n title: optional(string()),\n appName: optional(nonEmptyStringDecoder),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n minWidth: optional(number()),\n minHeight: optional(number()),\n maxWidth: optional(number()),\n maxHeight: optional(number()),\n widthInPx: optional(number()),\n heightInPx: optional(number()),\n context: optional(anyJson())\n })\n) as any;\n\nexport const customWorkspaceSubParentSnapshotDecoder: Decoder<SubParentSnapshotResult> = object({\n id: optional(nonEmptyStringDecoder),\n config: parentSnapshotConfigDecoder,\n children: optional(lazy(() => array(customWorkspaceChildSnapshotDecoder))),\n type: oneOf<\"row\" | \"column\" | \"group\">(\n constant(\"row\"),\n constant(\"column\"),\n constant(\"group\")\n )\n});\n\nexport const customWorkspaceWindowSnapshotDecoder: Decoder<WindowSnapshotResult> = object({\n id: optional(nonEmptyStringDecoder),\n config: swimlaneWindowSnapshotConfigDecoder,\n type: constant(\"window\")\n});\n\nexport const customWorkspaceChildSnapshotDecoder: Decoder<ChildSnapshotResult> = oneOf<WindowSnapshotResult | SubParentSnapshotResult>(\n customWorkspaceWindowSnapshotDecoder,\n customWorkspaceSubParentSnapshotDecoder);\n\nexport const childSnapshotResultDecoder: Decoder<ChildSnapshotResult> = customWorkspaceChildSnapshotDecoder;\n\nexport const workspaceSnapshotResultDecoder: Decoder<WorkspaceSnapshotResult> = object({\n id: nonEmptyStringDecoder,\n config: workspaceConfigResultDecoder,\n children: array(childSnapshotResultDecoder),\n frameSummary: frameSummaryDecoder,\n context: optional(anyJson())\n});\n\nexport const windowLayoutItemDecoder: Decoder<IOConnectWorkspaces.WindowLayoutItem> = object({\n type: constant(\"window\"),\n config: object({\n appName: nonEmptyStringDecoder,\n windowId: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n url: optional(nonEmptyStringDecoder),\n title: optional(string()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n minWidth: optional(number()),\n minHeight: optional(number()),\n maxWidth: optional(number()),\n maxHeight: optional(number()),\n isMaximized: optional(boolean())\n })\n});\n\nexport const groupLayoutItemDecoder: Decoder<IOConnectWorkspaces.GroupLayoutItem> = object({\n type: constant(\"group\"),\n config: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.WindowLayoutItem>(\n windowLayoutItemDecoder\n ))\n});\n\nexport const columnLayoutItemDecoder: Decoder<IOConnectWorkspaces.ColumnLayoutItem> = object({\n type: constant(\"column\"),\n config: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.RowLayoutItem | IOConnectWorkspaces.ColumnLayoutItem | IOConnectWorkspaces.GroupLayoutItem | IOConnectWorkspaces.WindowLayoutItem>(\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => columnLayoutItemDecoder),\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const rowLayoutItemDecoder: Decoder<IOConnectWorkspaces.RowLayoutItem> = object({\n type: constant(\"row\"),\n config: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.RowLayoutItem | IOConnectWorkspaces.ColumnLayoutItem | IOConnectWorkspaces.GroupLayoutItem | IOConnectWorkspaces.WindowLayoutItem>(\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const workspaceLayoutDecoder: Decoder<IOConnectWorkspaces.WorkspaceLayout> = object({\n name: nonEmptyStringDecoder,\n type: constant(\"Workspace\"),\n metadata: optional(anyJson()),\n components: array(object({\n type: constant(\"Workspace\"),\n application: optional(string()),\n state: object({\n config: anyJson(),\n context: anyJson(),\n children: array(oneOf<IOConnectWorkspaces.RowLayoutItem | IOConnectWorkspaces.ColumnLayoutItem | IOConnectWorkspaces.GroupLayoutItem | IOConnectWorkspaces.WindowLayoutItem>(\n rowLayoutItemDecoder,\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder\n ))\n })\n }))\n});\n\nexport const workspacesImportLayoutDecoder: Decoder<{ layout: IOConnectWorkspaces.WorkspaceLayout; mode: \"replace\" | \"merge\" }> = object({\n layout: workspaceLayoutDecoder,\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const workspacesImportLayoutsDecoder: Decoder<{ layouts: IOConnectWorkspaces.WorkspaceLayout[]; mode: \"replace\" | \"merge\" }> = object({\n layouts: array(workspaceLayoutDecoder),\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const exportedLayoutsResultDecoder: Decoder<ExportedLayoutsResult> = object({\n layouts: array(workspaceLayoutDecoder)\n});\n\nexport const frameSummaryResultDecoder: Decoder<FrameSummaryResult> = object({\n id: nonEmptyStringDecoder,\n isFocused: optional(boolean()),\n isInitialized: optional(boolean()),\n initializationContext: optional(frameInitializationContextDecoder)\n});\n\nexport const frameSummariesResultDecoder: Decoder<FrameSummariesResult> = object({\n summaries: array(frameSummaryResultDecoder)\n});\n\nexport const workspaceSummaryResultDecoder: Decoder<WorkspaceSummaryResult> = object({\n id: nonEmptyStringDecoder,\n config: workspaceConfigResultDecoder\n});\n\nexport const workspaceSummariesResultDecoder: Decoder<WorkspaceSummariesResult> = object({\n summaries: array(workspaceSummaryResultDecoder)\n});\n\nexport const frameSnapshotResultDecoder: Decoder<FrameSnapshotResult> = object({\n id: nonEmptyStringDecoder,\n config: anyJson(),\n workspaces: array(workspaceSnapshotResultDecoder)\n});\n\nexport const layoutSummaryDecoder: Decoder<LayoutSummary> = object({\n name: nonEmptyStringDecoder,\n applicationName: optional(string())\n});\n\nexport const layoutSummariesDecoder: Decoder<LayoutSummariesResult> = object({\n summaries: array(layoutSummaryDecoder)\n});\n\nexport const simpleWindowOperationSuccessResultDecoder: Decoder<SimpleWindowOperationSuccessResult> = object({\n windowId: nonEmptyStringDecoder\n});\n\nexport const voidResultDecoder: Decoder<{}> = anyJson();\n\nexport const frameStateResultDecoder: Decoder<FrameStateResult> = object({\n state: frameStateDecoder\n});\n\nexport const frameBoundsDecoder: Decoder<FrameBounds> = object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n});\n\nexport const frameBoundsResultDecoder: Decoder<FrameBoundsResult> = object({\n bounds: frameBoundsDecoder\n});\n\nexport const getWorkspaceIconResultDecoder: Decoder<GetWorkspaceIconResult> = object({\n icon: optional(nonEmptyStringDecoder)\n});\n\nexport const getPlatformFrameIdResultDecoder: Decoder<GetPlatformFrameIdResult> = object({\n id: optional(nonEmptyStringDecoder)\n});\n\nexport const operationCheckResultDecoder: Decoder<OperationCheckResult> = object({\n isSupported: boolean()\n});\n\nexport const resizeConfigDecoder: Decoder<IOConnectWorkspaces.ResizeConfig> = object({\n width: optional(positiveNumberDecoder),\n height: optional(positiveNumberDecoder),\n relative: optional(boolean())\n});\n\nexport const moveConfigDecoder: Decoder<IOConnectWorkspaces.MoveConfig> = object({\n top: optional(number()),\n left: optional(number()),\n relative: optional(boolean())\n});\n\nexport const simpleItemConfigDecoder: Decoder<SimpleItemConfig> = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const frameSnapshotConfigDecoder: Decoder<FrameSnapshotConfig> = object({\n itemId: nonEmptyStringDecoder,\n excludeIds: optional(boolean())\n});\n\nexport const frameStateConfigDecoder: Decoder<FrameStateConfig> = object({\n frameId: nonEmptyStringDecoder,\n requestedState: frameStateDecoder\n});\n\nexport const setItemTitleConfigDecoder: Decoder<SetItemTitleConfig> = object({\n itemId: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder\n});\n\nexport const moveWindowConfigDecoder: Decoder<MoveWindowConfig> = object({\n itemId: nonEmptyStringDecoder,\n containerId: nonEmptyStringDecoder\n});\n\nexport const resizeItemConfigDecoder: Decoder<ResizeItemConfig> = intersection(\n simpleItemConfigDecoder,\n resizeConfigDecoder\n);\n\nexport const setMaximizationBoundaryConfigDecoder: Decoder<SetMaximizationBoundaryConfig> = object({\n itemId: nonEmptyStringDecoder,\n enabled: boolean()\n});\n\nexport const moveFrameConfigDecoder: Decoder<MoveFrameConfig> = intersection(\n simpleItemConfigDecoder,\n moveConfigDecoder\n);\n\nexport const simpleParentDecoder: Decoder<{ id: string; type: \"row\" | \"column\" | \"group\" }> = object({\n id: nonEmptyStringDecoder,\n type: subParentDecoder\n});\n\nexport const addWindowConfigDecoder: Decoder<AddWindowConfig> = object({\n definition: swimlaneWindowDefinitionDecoder,\n parentId: nonEmptyStringDecoder,\n parentType: allParentDecoder\n});\n\nexport const addContainerConfigDecoder: Decoder<AddContainerConfig> = object({\n definition: strictParentDefinitionDecoder,\n parentId: nonEmptyStringDecoder,\n parentType: allParentDecoder\n});\n\nexport const addItemResultDecoder: Decoder<AddItemResult> = object({\n itemId: nonEmptyStringDecoder,\n windowId: optional(nonEmptyStringDecoder)\n});\n\nexport const pingResultDecoder: Decoder<PingResult> = object({\n live: boolean()\n});\n\nexport const bundleWorkspaceConfigDecoder: Decoder<BundleWorkspaceConfig> = object({\n type: oneOf<\"row\" | \"column\">(\n constant(\"row\"),\n constant(\"column\")\n ),\n workspaceId: nonEmptyStringDecoder\n});\n\nexport const bundleItemConfigDecoder: Decoder<ItemBundleConfig> = object({\n type: oneOf<\"row\" | \"column\">(\n constant(\"row\"),\n constant(\"column\")\n ),\n itemId: nonEmptyStringDecoder\n});\n\nexport const containerSummaryResultDecoder: Decoder<ContainerSummaryResult> = object({\n itemId: nonEmptyStringDecoder,\n config: parentSnapshotConfigDecoder\n});\n\nexport const frameStreamDataDecoder: Decoder<FrameStreamData> = object({\n frameSummary: frameSummaryDecoder,\n frameBounds: optional(frameBoundsDecoder)\n});\n\nexport const workspaceStreamDataDecoder: Decoder<WorkspaceStreamData> = object({\n workspaceSummary: workspaceSummaryResultDecoder,\n frameSummary: frameSummaryDecoder,\n workspaceSnapshot: optional(workspaceSnapshotResultDecoder),\n frameBounds: optional(frameBoundsDecoder)\n});\n\nexport const containerStreamDataDecoder: Decoder<ContainerStreamData> = object({\n containerSummary: containerSummaryResultDecoder\n});\n\nexport const windowStreamDataDecoder: Decoder<WindowStreamData> = object({\n windowSummary: object({\n itemId: nonEmptyStringDecoder,\n parentId: nonEmptyStringDecoder,\n config: swimlaneWindowSnapshotConfigDecoder\n })\n});\n\nexport const workspaceLayoutSaveConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceLayoutSaveConfig> = object({\n name: nonEmptyStringDecoder,\n workspaceId: nonEmptyStringDecoder,\n saveContext: optional(boolean()),\n metadata: optional(object())\n});\n\nexport const workspaceLockConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceLockConfig> = object({\n allowDrop: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropBottom: optional(boolean()),\n allowSystemHibernation: optional(boolean()),\n allowExtract: optional(boolean()),\n allowWindowReorder: optional(boolean()),\n allowSplitters: optional(boolean()),\n showCloseButton: optional(boolean()),\n showSaveButton: optional(boolean()),\n allowWorkspaceTabReorder: optional(boolean()),\n allowWorkspaceTabExtract: optional(boolean()),\n showWindowCloseButtons: optional(boolean()),\n showAddWindowButtons: optional(boolean()),\n showEjectButtons: optional(boolean()),\n});\n\nexport const lockWorkspaceDecoder: Decoder<LockWorkspaceConfig> = object({\n workspaceId: nonEmptyStringDecoder,\n config: optional(workspaceLockConfigDecoder)\n});\n\nexport const windowLockConfigDecoder: Decoder<IOConnectWorkspaces.WorkspaceWindowLockConfig> = object({\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean())\n});\n\nexport const elementResizeConfigDecoder: Decoder<IOConnectWorkspaces.ElementResizeConfig> = object({\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const lockWindowDecoder: Decoder<LockWindowConfig> = object({\n windowPlacementId: nonEmptyStringDecoder,\n config: optional(windowLockConfigDecoder)\n});\n\nexport const rowLockConfigDecoder: Decoder<IOConnectWorkspaces.RowLockConfig> = object({\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n});\n\nexport const columnLockConfigDecoder: Decoder<IOConnectWorkspaces.ColumnLockConfig> = object({\n allowDrop: optional(boolean()),\n allowSplitters: optional(boolean()),\n});\n\nexport const groupLockConfigDecoder: Decoder<IOConnectWorkspaces.GroupLockConfig> = object({\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n allowDrop: optional(boolean()),\n allowDropLeft: optional(boolean()),\n allowDropRight: optional(boolean()),\n allowDropTop: optional(boolean()),\n allowDropBottom: optional(boolean()),\n allowDropHeader: optional(boolean()),\n showMaximizeButton: optional(boolean()),\n showEjectButton: optional(boolean()),\n showAddWindowButton: optional(boolean()),\n});\n\nexport const lockRowDecoder: Decoder<LockRowConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: constant(\"row\"),\n config: optional(rowLockConfigDecoder)\n});\n\nexport const lockColumnDecoder: Decoder<LockColumnConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: constant(\"column\"),\n config: optional(columnLockConfigDecoder)\n});\n\nexport const lockGroupDecoder: Decoder<LockGroupConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: constant(\"group\"),\n config: optional(groupLockConfigDecoder)\n});\n\nexport const lockContainerDecoder: Decoder<LockContainerConfig> = oneOf<LockGroupConfig | LockColumnConfig | LockRowConfig>(lockRowDecoder, lockColumnDecoder, lockGroupDecoder);\n\nexport const pinWorkspaceDecoder: Decoder<PinWorkspaceConfig> = object({\n workspaceId: nonEmptyStringDecoder,\n icon: optional(nonEmptyStringDecoder)\n});\n\nexport const setWorkspaceIconDecoder: Decoder<SetWorkspaceIconConfig> = object({\n workspaceId: nonEmptyStringDecoder,\n icon: optional(nonEmptyStringDecoder) // to enable the user to remove the icon from the workspace altogether\n});\n\nexport const workspacePinOptionsDecoder: Decoder<IOConnectWorkspaces.WorkspacePinOptions> = optional(object({\n icon: optional(nonEmptyStringDecoder)\n}));\n\nexport const shortcutConfigDecoder: Decoder<ShortcutConfig> = object({\n shortcut: nonEmptyStringDecoder,\n frameId: nonEmptyStringDecoder\n});\n\nexport const shortcutClickedDataDecoder: Decoder<ShortcutClickedData> = object({\n shortcut: nonEmptyStringDecoder,\n frameId: nonEmptyStringDecoder\n});\n\nexport const setMaximizationBoundaryAPIConfigDecoder: Decoder<IOConnectWorkspaces.SetMaximizationBoundaryConfig> = object({\n enabled: boolean()\n});\n\nexport const loadingAnimationConfigDecoder: Decoder<LoadingAnimationConfig> = object({\n itemId: nonEmptyStringDecoder,\n type: loadingAnimationTypeDecoder\n});\n\nexport const operationCheckConfigDecoder: Decoder<OperationCheckConfig> = object({\n operation: nonEmptyStringDecoder\n});\n","import {\n isWindowInSwimlaneResultDecoder,\n frameSummaryDecoder,\n workspaceSnapshotResultDecoder,\n frameSummariesResultDecoder,\n workspaceCreateConfigDecoder,\n getFrameSummaryConfigDecoder,\n layoutSummariesDecoder,\n openWorkspaceConfigDecoder,\n workspaceSummariesResultDecoder,\n voidResultDecoder,\n exportedLayoutsResultDecoder,\n workspaceLayoutDecoder,\n deleteLayoutConfigDecoder,\n simpleItemConfigDecoder,\n resizeItemConfigDecoder,\n moveFrameConfigDecoder,\n frameSnapshotResultDecoder,\n simpleWindowOperationSuccessResultDecoder,\n setItemTitleConfigDecoder,\n moveWindowConfigDecoder,\n addWindowConfigDecoder,\n addContainerConfigDecoder,\n addItemResultDecoder,\n bundleWorkspaceConfigDecoder,\n workspaceStreamDataDecoder,\n frameStreamDataDecoder,\n containerStreamDataDecoder,\n windowStreamDataDecoder,\n workspaceLayoutSaveConfigDecoder,\n pingResultDecoder,\n frameStateConfigDecoder,\n frameStateResultDecoder,\n workspacesImportLayoutDecoder,\n workspaceSelectorDecoder,\n lockWorkspaceDecoder,\n lockWindowDecoder,\n lockContainerDecoder,\n frameBoundsResultDecoder,\n getWorkspaceIconResultDecoder,\n pinWorkspaceDecoder,\n setWorkspaceIconDecoder,\n frameSummaryResultDecoder,\n emptyFrameDefinitionDecoder,\n frameInitProtocolConfigDecoder,\n shortcutClickedDataDecoder,\n shortcutConfigDecoder,\n frameSnapshotConfigDecoder,\n setMaximizationBoundaryConfigDecoder,\n loadingAnimationConfigDecoder,\n getPlatformFrameIdResultDecoder,\n workspacesImportLayoutsDecoder,\n bundleItemConfigDecoder,\n operationCheckConfigDecoder,\n operationCheckResultDecoder\n} from \"../shared/decoders\";\nimport { ControlOperation, StreamOperation } from \"../types/protocol\";\nimport { WorkspaceEventType } from \"../types/subscription\";\n\ntype OperationsTypes = \"isWindowInWorkspace\" |\n \"createWorkspace\" |\n \"getAllFramesSummaries\" |\n \"getFrameSummary\" |\n \"getAllWorkspacesSummaries\" |\n \"getWorkspaceSnapshot\" |\n \"getAllLayoutsSummaries\" |\n \"openWorkspace\" |\n \"deleteLayout\" |\n \"saveLayout\" |\n \"importLayout\" |\n \"importLayouts\" |\n \"exportAllLayouts\" |\n \"restoreItem\" |\n \"maximizeItem\" |\n \"focusItem\" |\n \"closeItem\" |\n \"resizeItem\" |\n \"setMaximizationBoundary\" |\n \"moveFrame\" |\n \"getFrameSnapshot\" |\n \"forceLoadWindow\" |\n \"ejectWindow\" |\n \"setItemTitle\" |\n \"moveWindowTo\" |\n \"addWindow\" |\n \"addContainer\" |\n \"bundleWorkspace\" |\n \"bundleItem\" |\n \"ping\" |\n \"changeFrameState\" |\n \"getFrameState\" |\n \"getFrameBounds\" |\n \"hibernateWorkspace\" |\n \"resumeWorkspace\" |\n \"lockWorkspace\" |\n \"lockWindow\" |\n \"lockContainer\" |\n \"pinWorkspace\" |\n \"unpinWorkspace\" |\n \"getWorkspaceIcon\" |\n \"setWorkspaceIcon\" |\n \"createFrame\" |\n \"registerShortcut\" |\n \"unregisterShortcut\" |\n \"initFrame\" |\n \"showLoadingAnimation\" |\n \"hideLoadingAnimation\" |\n \"getPlatformFrameId\" |\n \"operationCheck\";\ntype OutgoingMethodTypes = \"control\" | \"frameStream\" | \"workspaceStream\" | \"containerStream\" | \"windowStream\";\nexport type IncomingMethodTypes = \"control\";\n\nexport const webPlatformMethodName = \"T42.Web.Platform.Control\";\nexport const webPlatformWspStreamName = \"T42.Web.Platform.WSP.Stream\";\n\nexport const OUTGOING_METHODS: { [key in OutgoingMethodTypes]: { name: string; isStream: boolean } } = {\n control: { name: \"T42.Workspaces.Control\", isStream: false },\n frameStream: { name: \"T42.Workspaces.Stream.Frame\", isStream: true },\n workspaceStream: { name: \"T42.Workspaces.Stream.Workspace\", isStream: true },\n containerStream: { name: \"T42.Workspaces.Stream.Container\", isStream: true },\n windowStream: { name: \"T42.Workspaces.Stream.Window\", isStream: true }\n};\n\nexport const INCOMING_METHODS: { [key in IncomingMethodTypes]: { name: string; isStream: boolean } } = {\n control: { name: \"T42.Workspaces.Client.Control\", isStream: false },\n};\n\nexport const STREAMS: { [key in WorkspaceEventType]: StreamOperation } = {\n frame: { name: \"T42.Workspaces.Stream.Frame\", payloadDecoder: frameStreamDataDecoder },\n workspace: { name: \"T42.Workspaces.Stream.Workspace\", payloadDecoder: workspaceStreamDataDecoder },\n container: { name: \"T42.Workspaces.Stream.Container\", payloadDecoder: containerStreamDataDecoder },\n window: { name: \"T42.Workspaces.Stream.Window\", payloadDecoder: windowStreamDataDecoder }\n};\n\ninterface ShortcutClicked {\n operation: \"shortcutClicked\",\n data: {\n shortcut: string;\n frameId: string;\n }\n}\n\nexport type ClientOperations = ShortcutClicked;\n\nexport type OnOperationsTypes = \"shortcutClicked\";\n\nexport const CLIENT_OPERATIONS: { [key in OnOperationsTypes]: ControlOperation } = {\n shortcutClicked: { name: \"shortcutClicked\", argsDecoder: shortcutClickedDataDecoder, resultDecoder: voidResultDecoder },\n};\n\nexport const OPERATIONS: { [key in OperationsTypes]: ControlOperation } = {\n ping: { name: \"ping\", resultDecoder: pingResultDecoder },\n isWindowInWorkspace: { name: \"isWindowInWorkspace\", argsDecoder: simpleItemConfigDecoder, resultDecoder: isWindowInSwimlaneResultDecoder },\n createWorkspace: { name: \"createWorkspace\", resultDecoder: workspaceSnapshotResultDecoder, argsDecoder: workspaceCreateConfigDecoder },\n createFrame: { name: \"createFrame\", resultDecoder: frameSummaryResultDecoder, argsDecoder: emptyFrameDefinitionDecoder },\n initFrame: { name: \"initFrame\", resultDecoder: voidResultDecoder, argsDecoder: frameInitProtocolConfigDecoder },\n getAllFramesSummaries: { name: \"getAllFramesSummaries\", resultDecoder: frameSummariesResultDecoder },\n getFrameSummary: { name: \"getFrameSummary\", resultDecoder: frameSummaryDecoder, argsDecoder: getFrameSummaryConfigDecoder },\n getAllWorkspacesSummaries: { name: \"getAllWorkspacesSummaries\", resultDecoder: workspaceSummariesResultDecoder },\n getWorkspaceSnapshot: { name: \"getWorkspaceSnapshot\", resultDecoder: workspaceSnapshotResultDecoder, argsDecoder: simpleItemConfigDecoder },\n getAllLayoutsSummaries: { name: \"getAllLayoutsSummaries\", resultDecoder: layoutSummariesDecoder },\n openWorkspace: { name: \"openWorkspace\", argsDecoder: openWorkspaceConfigDecoder, resultDecoder: workspaceSnapshotResultDecoder },\n deleteLayout: { name: \"deleteLayout\", resultDecoder: voidResultDecoder, argsDecoder: deleteLayoutConfigDecoder },\n saveLayout: { name: \"saveLayout\", resultDecoder: workspaceLayoutDecoder, argsDecoder: workspaceLayoutSaveConfigDecoder },\n importLayout: { name: \"importLayout\", resultDecoder: voidResultDecoder, argsDecoder: workspacesImportLayoutDecoder },\n importLayouts: { name: \"importLayouts\", resultDecoder: voidResultDecoder, argsDecoder: workspacesImportLayoutsDecoder },\n exportAllLayouts: { name: \"exportAllLayouts\", resultDecoder: exportedLayoutsResultDecoder },\n restoreItem: { name: \"restoreItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n maximizeItem: { name: \"maximizeItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n focusItem: { name: \"focusItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n closeItem: { name: \"closeItem\", argsDecoder: simpleItemConfigDecoder, resultDecoder: voidResultDecoder },\n resizeItem: { name: \"resizeItem\", argsDecoder: resizeItemConfigDecoder, resultDecoder: voidResultDecoder },\n setMaximizationBoundary: { name: \"setMaximizationBoundary\", argsDecoder: setMaximizationBoundaryConfigDecoder, resultDecoder: voidResultDecoder },\n changeFrameState: { name: \"changeFrameState\", argsDecoder: frameStateConfigDecoder, resultDecoder: voidResultDecoder },\n getFrameState: { name: \"getFrameState\", argsDecoder: simpleItemConfigDecoder, resultDecoder: frameStateResultDecoder },\n getFrameBounds: { name: \"getFrameBounds\", argsDecoder: simpleItemConfigDecoder, resultDecoder: frameBoundsResultDecoder },\n moveFrame: { name: \"moveFrame\", argsDecoder: moveFrameConfigDecoder, resultDecoder: voidResultDecoder },\n getFrameSnapshot: { name: \"getFrameSnapshot\", argsDecoder: frameSnapshotConfigDecoder, resultDecoder: frameSnapshotResultDecoder },\n forceLoadWindow: { name: \"forceLoadWindow\", argsDecoder: simpleItemConfigDecoder, resultDecoder: simpleWindowOperationSuccessResultDecoder },\n ejectWindow: { name: \"ejectWindow\", argsDecoder: simpleItemConfigDecoder, resultDecoder: simpleWindowOperationSuccessResultDecoder },\n setItemTitle: { name: \"setItemTitle\", argsDecoder: setItemTitleConfigDecoder, resultDecoder: voidResultDecoder },\n moveWindowTo: { name: \"moveWindowTo\", argsDecoder: moveWindowConfigDecoder, resultDecoder: voidResultDecoder },\n addWindow: { name: \"addWindow\", argsDecoder: addWindowConfigDecoder, resultDecoder: addItemResultDecoder },\n addContainer: { name: \"addContainer\", argsDecoder: addContainerConfigDecoder, resultDecoder: addItemResultDecoder },\n bundleWorkspace: { name: \"bundleWorkspace\", argsDecoder: bundleWorkspaceConfigDecoder, resultDecoder: voidResultDecoder },\n bundleItem: { name: \"bundleItem\", argsDecoder: bundleItemConfigDecoder, resultDecoder: voidResultDecoder },\n hibernateWorkspace: { name: \"hibernateWorkspace\", argsDecoder: workspaceSelectorDecoder, resultDecoder: voidResultDecoder },\n resumeWorkspace: { name: \"resumeWorkspace\", argsDecoder: workspaceSelectorDecoder, resultDecoder: voidResultDecoder },\n lockWorkspace: { name: \"lockWorkspace\", argsDecoder: lockWorkspaceDecoder, resultDecoder: voidResultDecoder },\n lockWindow: { name: \"lockWindow\", argsDecoder: lockWindowDecoder, resultDecoder: voidResultDecoder },\n lockContainer: { name: \"lockContainer\", argsDecoder: lockContainerDecoder, resultDecoder: voidResultDecoder },\n pinWorkspace: { name: \"pinWorkspace\", argsDecoder: pinWorkspaceDecoder, resultDecoder: voidResultDecoder },\n unpinWorkspace: { name: \"unpinWorkspace\", argsDecoder: workspaceSelectorDecoder, resultDecoder: voidResultDecoder },\n getWorkspaceIcon: { name: \"getWorkspaceIcon\", argsDecoder: workspaceSelectorDecoder, resultDecoder: getWorkspaceIconResultDecoder },\n setWorkspaceIcon: { name: \"setWorkspaceIcon\", argsDecoder: setWorkspaceIconDecoder, resultDecoder: voidResultDecoder },\n registerShortcut: { name: \"registerShortcut\", argsDecoder: shortcutConfigDecoder, resultDecoder: voidResultDecoder },\n unregisterShortcut: { name: \"unregisterShortcut\", argsDecoder: shortcutConfigDecoder, resultDecoder: voidResultDecoder },\n showLoadingAnimation: { name: \"showLoadingAnimation\", argsDecoder: loadingAnimationConfigDecoder, resultDecoder: voidResultDecoder },\n hideLoadingAnimation: { name: \"hideLoadingAnimation\", argsDecoder: loadingAnimationConfigDecoder, resultDecoder: voidResultDecoder },\n getPlatformFrameId: { name: \"getPlatformFrameId\", resultDecoder: getPlatformFrameIdResultDecoder },\n operationCheck: { name: \"operationCheck\", argsDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\n};\n","export class PromiseWrapper<T> {\r\n public resolve: (value: T | PromiseLike<T>) => void;\r\n public reject: (err: string) => void;\r\n public readonly promise: Promise<T>;\r\n constructor() {\r\n this.promise = new Promise<T>((res, rej) => {\r\n this.resolve = res;\r\n this.reject = rej;\r\n });\r\n }\r\n}","import { CallbackRegistry, UnsubscribeFunction } from \"callback-registry\";\nimport { SubscriptionConfig, ActiveSubscription, WorkspaceEventType, WorkspaceEventAction, WorkspacePayload, WorkspaceEventScope, PendingSubscription } from \"../types/subscription\";\nimport { ClientOperations, CLIENT_OPERATIONS, STREAMS } from \"./constants\";\nimport { OPERATIONS } from \"./constants\";\nimport { eventTypeDecoder, streamRequestArgumentsDecoder, workspaceEventActionDecoder } from \"../shared/decoders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { InteropTransport } from \"./interop-transport\";\nimport { PromiseWrapper } from \"../shared/promiseWrapper\";\nimport { Instance } from \"../types/glue\";\n\nexport class Bridge {\n\n private readonly activeSubscriptions: ActiveSubscription[] = [];\n private readonly pendingSubScriptions: PendingSubscription[] = [];\n\n constructor(\n private readonly transport: InteropTransport,\n private readonly registry: CallbackRegistry\n ) { }\n\n public async createCoreEventSubscription(): Promise<void> {\n await this.transport.coreSubscriptionReady(this.handleCoreEvent.bind(this));\n }\n\n public handleCoreSubscription(config: SubscriptionConfig): UnsubscribeFunction {\n const registryKey = `${config.eventType}-${config.action}`;\n const scope = config.scope;\n const scopeId = config.scopeId;\n\n return this.registry.add(registryKey, (args) => {\n const scopeConfig = {\n type: scope,\n id: scopeId\n };\n\n const receivedIds = {\n frame: args.frameSummary?.id || args.windowSummary?.config.frameId,\n workspace: args.workspaceSummary?.id || args.windowSummary?.config.workspaceId,\n container: args.containerSummary?.itemId,\n window: args.windowSummary?.itemId\n };\n\n const shouldInvokeCallback = this.checkScopeMatch(scopeConfig, receivedIds);\n\n if (!shouldInvokeCallback) {\n return;\n }\n\n config.callback(args);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async send<T>(operationName: string, operationArgs?: any): Promise<T> {\n\n const operationDefinition = Object.values(OPERATIONS).find((operation) => operation.name === operationName);\n\n if (!operationDefinition) {\n throw new Error(`Cannot find definition for operation name: ${operationName}`);\n }\n\n if (operationDefinition.argsDecoder) {\n try {\n operationDefinition.argsDecoder.runWithException(operationArgs);\n } catch (error) {\n throw new Error(`Unexpected internal outgoing validation error: ${error.message}, for input: ${JSON.stringify(error.input)}, for operation ${operationName}`);\n }\n }\n\n try {\n const operationResult = await this.transport.transmitControl(operationDefinition.name, operationArgs);\n\n operationDefinition.resultDecoder.runWithException(operationResult);\n\n return operationResult;\n } catch (error) {\n if (error.kind) {\n throw new Error(`Unexpected internal incoming validation error: ${error.message}, for input: ${JSON.stringify(error.input)}, for operation ${operationName}`);\n }\n throw new Error(error.message);\n }\n }\n\n public async subscribe(config: SubscriptionConfig): Promise<IOConnectWorkspaces.Unsubscribe> {\n const pendingSub = this.getPendingSubscription(config);\n if (pendingSub) {\n await pendingSub.promise;\n }\n\n let activeSub = this.getActiveSubscription(config);\n const registryKey = this.getRegistryKey(config);\n\n if (!activeSub) {\n const pendingPromise = new PromiseWrapper<void>();\n const pendingSubscription = {\n streamType: config.eventType,\n level: config.scope,\n levelId: config.scopeId,\n promise: pendingPromise.promise\n };\n this.pendingSubScriptions.push(pendingSubscription);\n try {\n const stream = STREAMS[config.eventType];\n const gdSub = await this.transport.subscribe(stream.name, this.getBranchKey(config), config.eventType);\n\n gdSub.onData((streamData) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = streamData.data as { action: string; payload: any };\n\n // important to decode without exception, because we do not want to throw an exception here\n const requestedArgumentsResult = streamRequestArgumentsDecoder.run(streamData.requestArguments);\n const actionResult = workspaceEventActionDecoder.run(data.action);\n\n if (!requestedArgumentsResult.ok || !actionResult.ok) {\n return;\n }\n\n const streamType = requestedArgumentsResult.result.type;\n const branch = requestedArgumentsResult.result.branch;\n\n const keyToExecute = `${streamType}-${branch}-${actionResult.result}`;\n const validatedPayload = STREAMS[streamType].payloadDecoder.run(data.payload);\n if (!validatedPayload.ok) {\n return;\n }\n\n this.registry.execute(keyToExecute, validatedPayload.result);\n });\n\n activeSub = {\n streamType: config.eventType,\n level: config.scope,\n levelId: config.scopeId,\n callbacksCount: 0,\n gdSub\n };\n\n this.activeSubscriptions.push(activeSub);\n\n pendingPromise.resolve();\n } catch (error) {\n pendingPromise.reject(error);\n\n throw error;\n } finally {\n this.removePendingSubscription(pendingSubscription);\n }\n\n }\n\n const unsubscribe = this.registry.add(registryKey, config.callback);\n\n ++activeSub.callbacksCount;\n\n return (): void => {\n unsubscribe();\n --activeSub.callbacksCount;\n\n if (activeSub.callbacksCount === 0) {\n activeSub.gdSub.close();\n this.activeSubscriptions.splice(this.activeSubscriptions.indexOf(activeSub), 1);\n }\n };\n }\n\n public onOperation(callback: (operation: ClientOperations, caller: Instance) => void) {\n\n const wrappedCallback = (payload: ClientOperations, caller: Instance) => {\n const operationName = payload.operation;\n const operationArgs = payload.data;\n const operationDefinition = Object.values(CLIENT_OPERATIONS).find((operation) => operation.name === operationName);\n\n if (!operationDefinition) {\n throw new Error(`Cannot find definition for operation name: ${operationName}`);\n }\n\n if (operationDefinition.argsDecoder) {\n try {\n operationDefinition.argsDecoder.runWithException(operationArgs);\n } catch (error) {\n throw new Error(`Unexpected internal outgoing validation error: ${error.message}, for input: ${JSON.stringify(error.input)}, for operation ${operationName}`);\n }\n }\n\n callback(payload, caller);\n };\n\n return this.transport.onInternalMethodInvoked(\"control\", wrappedCallback);\n }\n\n private checkScopeMatch(scope: { type: WorkspaceEventScope; id?: string }, receivedIds: { frame: string; workspace: string; container: string; window: string }): boolean {\n\n if (scope.type === \"global\") {\n return true;\n }\n\n if (scope.type === \"frame\" && scope.id === receivedIds.frame) {\n return true;\n }\n\n if (scope.type === \"workspace\" && scope.id === receivedIds.workspace) {\n return true;\n }\n\n if (scope.type === \"container\" && scope.id === receivedIds.container) {\n return true;\n }\n\n if (scope.type === \"window\" && scope.id === receivedIds.window) {\n return true;\n }\n\n return false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleCoreEvent(args: any): void {\n const data = args.data;\n try {\n const verifiedAction: WorkspaceEventAction = workspaceEventActionDecoder.runWithException(data.action);\n const verifiedType: WorkspaceEventType = eventTypeDecoder.runWithException(data.type);\n const verifiedPayload: WorkspacePayload = STREAMS[verifiedType].payloadDecoder.runWithException(data.payload);\n\n const registryKey = `${verifiedType}-${verifiedAction}`;\n\n this.registry.execute(registryKey, verifiedPayload);\n } catch (error) {\n console.warn(`Cannot handle event with data ${JSON.stringify(data)}, because of validation error: ${error.message}`);\n }\n }\n\n private getBranchKey(config: SubscriptionConfig): string {\n return config.scope === \"global\" ? config.scope : `${config.scope}_${config.scopeId}`;\n }\n\n private getRegistryKey(config: SubscriptionConfig): string {\n return `${config.eventType}-${this.getBranchKey(config)}-${config.action}`;\n }\n\n private getActiveSubscription(config: SubscriptionConfig): ActiveSubscription {\n return this.activeSubscriptions\n .find((activeSub) => activeSub.streamType === config.eventType &&\n activeSub.level === config.scope &&\n activeSub.levelId === config.scopeId\n );\n }\n\n private getPendingSubscription(config: SubscriptionConfig): PendingSubscription {\n return this.pendingSubScriptions\n .find((activeSub) => activeSub.streamType === config.eventType &&\n activeSub.level === config.scope &&\n activeSub.levelId === config.scopeId\n );\n }\n\n private removePendingSubscription(pendingSubscription: PendingSubscription): void {\n const index = this.pendingSubScriptions.indexOf(pendingSubscription);\n\n if (index >= 0) {\n this.pendingSubScriptions.splice(index, 1);\n }\n }\n}\n","export const promisePlus = <T>(promise: () => Promise<T>, timeoutMilliseconds: number, timeoutMessage?: string): Promise<T> => {\n return new Promise<T>((resolve, reject) => {\n\n let promiseActive = true;\n\n const timeout = setTimeout(() => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n\n reject(message);\n }, timeoutMilliseconds);\n\n promise()\n .then((result) => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ClientOperations, IncomingMethodTypes, INCOMING_METHODS, OUTGOING_METHODS, webPlatformMethodName, webPlatformWspStreamName } from \"./constants\";\nimport { promisePlus } from \"../shared/promisePlus\";\nimport { WorkspaceEventType } from \"../types/subscription\";\nimport { InteropAPI, Subscription, InvocationResult, Instance } from \"../types/glue\";\nimport { CallbackRegistry } from \"callback-registry\";\n\nexport class InteropTransport {\n\n private readonly defaultTransportTimeout: number = 30000;\n private coreEventMethodInitiated = false;\n private corePlatformSubPromise: Promise<Subscription>;\n\n constructor(private readonly agm: InteropAPI,\n private readonly registry: CallbackRegistry) { }\n\n public async initiate(actualWindowId: string): Promise<void> {\n\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (desktopGlobal) {\n await Promise.all(\n Object.values(OUTGOING_METHODS).map((method) => {\n return this.verifyMethodLive(method.name);\n })\n );\n\n await Promise.all(\n Object.keys(INCOMING_METHODS).map((method: IncomingMethodTypes) => {\n return this.registerMethod(method);\n })\n );\n\n return;\n }\n\n const browserGlobal = (window as any).glue42core || (window as any).iobrowser;\n\n const systemId = browserGlobal.communicationId;\n\n await Promise.all([\n this.verifyMethodLive(webPlatformMethodName, systemId),\n this.verifyMethodLive(webPlatformWspStreamName, systemId)\n ]);\n\n await this.transmitControl(\"frameHello\", { windowId: actualWindowId });\n }\n\n public coreSubscriptionReady(eventCallback: (args?: any) => void): Promise<Subscription> {\n if (!this.coreEventMethodInitiated) {\n this.subscribePlatform(eventCallback);\n }\n return this.corePlatformSubPromise;\n }\n\n public subscribePlatform(eventCallback: (args?: any) => void): void {\n this.coreEventMethodInitiated = true;\n\n const browserGlobal = (window as any).glue42core || (window as any).iobrowser;\n\n const systemId = browserGlobal.communicationId;\n\n this.corePlatformSubPromise = this.agm.subscribe(webPlatformWspStreamName, systemId ? { target: { instance: systemId } } : undefined);\n\n this.corePlatformSubPromise\n .then((sub) => {\n sub.onData((data) => eventCallback(data.data));\n });\n }\n\n public async subscribe(streamName: string, streamBranch: string, streamType: WorkspaceEventType): Promise<Subscription> {\n\n const subscriptionArgs = {\n branch: streamBranch,\n type: streamType\n };\n\n let subscription: Subscription;\n\n try {\n subscription = await this.agm.subscribe(streamName, { arguments: subscriptionArgs });\n } catch (error) {\n const message = `Internal subscription error! Error details: stream - ${streamName}, branch: ${streamBranch}. Internal message: ${error.message}`;\n throw new Error(message);\n }\n\n return subscription;\n }\n\n public async transmitControl(operation: string, operationArguments: any): Promise<any> {\n\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n const browserGlobal = (window as any).glue42core || (window as any).iobrowser;\n \n const invocationArguments = desktopGlobal ? { operation, operationArguments } : { operation, domain: \"workspaces\", data: operationArguments };\n const methodName = desktopGlobal ? OUTGOING_METHODS.control.name : webPlatformMethodName;\n\n const platformTarget = desktopGlobal ? undefined : browserGlobal.communicationId;\n\n let invocationResult: InvocationResult<any>;\n const baseErrorMessage = `Internal Workspaces Communication Error. Attempted operation: ${JSON.stringify(invocationArguments)}. `;\n\n // using the 0 index of the errors and values collections, because we expect only one server and\n // this is to safeguard in case in future we decide to deprecate the default returned/message properties in favor of using only collections\n try {\n invocationResult = await this.agm.invoke(methodName, invocationArguments, platformTarget ? { instance: platformTarget } : \"best\", { methodResponseTimeoutMs: this.defaultTransportTimeout });\n\n if (!invocationResult) {\n throw new Error(\"Received unsupported result from GD - empty result\");\n }\n\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\n throw new Error(\"Received unsupported result from GD - empty values collection\");\n }\n\n } catch (error) {\n if (error && error.all_errors && error.all_errors.length) {\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n const invocationErrorMessage = error.all_errors[0].message;\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\n\n }\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\n }\n\n return invocationResult.all_return_values[0].returned;\n }\n\n public onInternalMethodInvoked(key: IncomingMethodTypes, callback: (operation: ClientOperations, caller: Instance) => void) {\n return this.registry.add(key, callback);\n }\n\n private verifyMethodLive(name: string, systemId?: string): Promise<void> {\n return promisePlus(() => {\n return new Promise((resolve) => {\n const hasMethod = this.agm.methods().some((method) => {\n const nameMatch = method.name === name;\n \n const serverMatch = systemId ?\n method.getServers().some((server) => server.instance === systemId) :\n true;\n \n return nameMatch && serverMatch;\n });\n\n if (hasMethod) {\n resolve();\n return;\n }\n\n const unSub = this.agm.serverMethodAdded((data) => {\n const method = data.method;\n const server = data.server;\n \n const serverMatch = systemId ?\n server.instance === systemId :\n true;\n \n if (method.name === name && serverMatch) {\n unSub();\n resolve();\n }\n });\n });\n }, 15000, \"Timeout waiting for the Workspaces communication channels\");\n }\n\n private registerMethod(key: IncomingMethodTypes) {\n const method = INCOMING_METHODS[key];\n return this.agm.register(method.name, (args, caller) => {\n this.registry.execute(key, args, caller);\n });\n }\n}\n","import { BaseBuilder } from \"./baseBuilder\";\nimport { ChildBuilder } from \"../types/builders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\n\ninterface PrivateData {\n definition: IOConnectWorkspaces.BoxDefinition;\n base: BaseBuilder;\n children: ChildBuilder[];\n}\n\nconst privateData = new WeakMap<ParentBuilder, PrivateData>();\n\nexport class ParentBuilder implements ParentBuilder {\n\n constructor(\n definition: IOConnectWorkspaces.BoxDefinition,\n base: BaseBuilder\n ) {\n const children = base.wrapChildren(definition.children);\n\n delete definition.children;\n\n privateData.set(this, { base, children, definition });\n }\n\n public get type(): \"column\" | \"row\" | \"group\" {\n return privateData.get(this).definition.type;\n }\n\n public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n return base.add(\"column\", privateData.get(this).children, definition);\n }\n\n public addRow(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n return base.add(\"row\", privateData.get(this).children, definition);\n }\n\n public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n return base.add(\"group\", privateData.get(this).children, definition);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): ParentBuilder {\n const base = privateData.get(this).base;\n\n base.addWindow(privateData.get(this).children, definition);\n\n return this;\n }\n\n public serialize(): IOConnectWorkspaces.BoxDefinition {\n const definition = privateData.get(this).definition;\n definition.children = privateData.get(this).base.serializeChildren(privateData.get(this).children);\n return definition;\n }\n\n}\n","import { ParentBuilder } from \"./parentBuilder\";\nimport { ChildDefinition, ChildBuilder } from \"../types/builders\";\nimport { parentDefinitionDecoder, swimlaneWindowDefinitionDecoder } from \"../shared/decoders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspaceBuilder } from \"./workspaceBuilder\";\n\nexport class BaseBuilder {\n\n constructor(\n private readonly getBuilder: (config: IOConnectWorkspaces.BuilderConfig) => ParentBuilder | WorkspaceBuilder,\n ) { }\n\n public wrapChildren(children: ChildDefinition[]): ChildBuilder[] {\n return children.map((child) => {\n if (child.type === \"window\") {\n return child;\n }\n\n return this.getBuilder({ type: child.type, definition: child }) as ParentBuilder;\n });\n }\n\n public add(type: \"row\" | \"column\" | \"group\", children: ChildBuilder[], definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const validatedDefinition = parentDefinitionDecoder.runWithException(definition);\n\n const childBuilder = this.getBuilder({ type, definition: validatedDefinition }) as ParentBuilder;\n\n children.push(childBuilder);\n\n return childBuilder;\n }\n\n public addWindow(children: ChildBuilder[], definition: IOConnectWorkspaces.WorkspaceWindowDefinition): void {\n const validatedDefinition = swimlaneWindowDefinitionDecoder.runWithException(definition);\n\n validatedDefinition.type = \"window\";\n\n children.push(validatedDefinition);\n }\n\n public serializeChildren(children: ChildBuilder[]): ChildDefinition[] {\n return children.map((child) => {\n if (child instanceof ParentBuilder) {\n return child.serialize();\n } else {\n return child as IOConnectWorkspaces.WorkspaceWindowDefinition;\n }\n });\n }\n}\n","import { BaseBuilder } from \"./baseBuilder\";\nimport { ChildBuilder } from \"../types/builders\";\nimport { ParentBuilder } from \"./parentBuilder\";\nimport { workspaceBuilderCreateConfigDecoder, nonNegativeNumberDecoder } from \"../shared/decoders\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspacesController } from \"../types/controller\";\n\ninterface PrivateData {\n definition: IOConnectWorkspaces.WorkspaceDefinition;\n children: ChildBuilder[];\n base: BaseBuilder;\n controller: WorkspacesController;\n}\n\nconst privateData = new WeakMap<WorkspaceBuilder, PrivateData>();\n\nexport class WorkspaceBuilder implements WorkspaceBuilder {\n\n constructor(\n definition: IOConnectWorkspaces.WorkspaceDefinition,\n base: BaseBuilder,\n controller: WorkspacesController\n ) {\n const children = base.wrapChildren(definition.children);\n\n delete definition.children;\n\n privateData.set(this, { base, children, definition, controller });\n }\n\n public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const children = privateData.get(this).children;\n\n const areAllColumns = children.every((child) => child instanceof ParentBuilder && child.type === \"column\");\n\n if (!areAllColumns) {\n throw new Error(\"Cannot add a column to this workspace, because there are already children of another type\");\n }\n\n const base = privateData.get(this).base;\n\n return base.add(\"column\", children, definition);\n }\n\n public addRow(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const children = privateData.get(this).children;\n\n const areAllRows = children.every((child) => child instanceof ParentBuilder && child.type === \"row\");\n\n if (!areAllRows) {\n throw new Error(\"Cannot add a row to this workspace, because there are already children of another type\");\n }\n\n const base = privateData.get(this).base;\n\n return base.add(\"row\", children, definition);\n }\n\n public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): ParentBuilder {\n const children = privateData.get(this).children;\n\n if (children.length !== 0) {\n throw new Error(\"Cannot add a group to this workspace, because there are already defined children.\");\n }\n\n const base = privateData.get(this).base;\n\n return base.add(\"group\", children, definition);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): WorkspaceBuilder {\n const children = privateData.get(this).children;\n\n if (children.length !== 0) {\n throw new Error(\"Cannot add a window to this workspace, because there are already defined children.\");\n }\n\n const base = privateData.get(this).base;\n\n base.addWindow(children, definition);\n\n return this;\n }\n\n public getChildAt(index: number): ChildBuilder {\n nonNegativeNumberDecoder.runWithException(index);\n const data = privateData.get(this).children;\n\n return data[index];\n }\n\n public async create(config?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<IOConnectWorkspaces.Workspace> {\n const saveConfig = workspaceBuilderCreateConfigDecoder.runWithException(config);\n\n const definition = privateData.get(this).definition;\n definition.children = privateData.get(this).base.serializeChildren(privateData.get(this).children);\n\n const controller = privateData.get(this).controller;\n\n return controller.createWorkspace(definition, saveConfig);\n }\n}\n","import { Base } from \"./base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { checkThrowCallback, nonNegativeNumberDecoder, rowLockConfigDecoder, setMaximizationBoundaryAPIConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\n\ninterface PrivateData {\n base: Base;\n}\n\nconst privateData = new WeakMap<Row, PrivateData>();\n\nconst getBase = (model: Row): Base => {\n return privateData.get(model).base;\n};\n\nexport class Row implements IOConnectWorkspaces.Row {\n\n constructor(base: Base) {\n privateData.set(this, { base });\n }\n\n public get type(): \"row\" {\n return \"row\";\n }\n\n public get id(): string {\n return getBase(this).getId(this);\n }\n\n public get frameId(): string {\n return getBase(this).getFrameId(this);\n }\n\n public get workspaceId(): string {\n return getBase(this).getWorkspaceId(this);\n }\n\n public get positionIndex(): number {\n return getBase(this).getPositionIndex(this);\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getBase(this).getAllChildren(this);\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.WorkspaceBox {\n return getBase(this).getMyParent(this);\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getBase(this).getMyFrame(this);\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getBase(this).getMyWorkspace(this);\n }\n\n public get allowDrop(): boolean {\n return getBase(this).getAllowDrop(this);\n }\n\n public get allowSplitters(): boolean {\n return getBase(this).getAllowSplitters(this);\n }\n\n public get minWidth(): number {\n return getBase(this).getMinWidth(this);\n }\n\n public get minHeight(): number {\n return getBase(this).getMinHeight(this);\n }\n\n public get maxWidth(): number {\n return getBase(this).getMaxWidth(this);\n }\n\n public get maxHeight(): number {\n return getBase(this).getMaxHeight(this);\n }\n\n public get width(): number {\n return getBase(this).getWidthInPx(this);\n }\n\n public get height(): number {\n return getBase(this).getHeightInPx(this);\n }\n\n public get isPinned(): boolean {\n return getBase(this).getIsPinned(this);\n }\n\n public get isMaximized(): boolean {\n return getBase(this).getIsMaximized(this);\n }\n\n public get maximizationBoundary(): boolean {\n return getBase(this).getMaximizationBoundary(this);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getBase(this).addWindow(this, definition, \"row\");\n }\n\n public async addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {\n if (definition?.type && definition.type !== \"group\") {\n throw new Error(`Expected a group definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Group>(this, \"group\", \"row\", definition);\n }\n\n public async addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Column> {\n if (definition?.type && definition.type !== \"column\") {\n throw new Error(`Expected a column definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Column>(this, \"column\", \"row\", definition);\n }\n\n public async addRow(): Promise<Row> {\n throw new Error(\"Adding rows as row children is not supported\");\n }\n\n public removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n return getBase(this).removeChild(this, predicate);\n }\n\n public maximize(): Promise<void> {\n return getBase(this).maximize(this);\n }\n\n public restore(): Promise<void> {\n return getBase(this).restore(this);\n }\n\n public close(): Promise<void> {\n return getBase(this).close(this);\n }\n\n public lock(config?: IOConnectWorkspaces.RowLockConfig | ((config: IOConnectWorkspaces.RowLockConfig) => IOConnectWorkspaces.RowLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n };\n\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n\n const verifiedConfig = lockConfigResult === undefined ? undefined : rowLockConfigDecoder.runWithException(lockConfigResult);\n\n return getBase(this).lockContainer(this, verifiedConfig);\n }\n\n public async setHeight(height: number): Promise<void> {\n nonNegativeNumberDecoder.runWithException(height);\n return getBase(this).setHeight(this, height);\n }\n\n\n public async onLockConfigurationChanged(callback: (config: IOConnectWorkspaces.RowLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getBase(this).getId(this);\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"container\",\n scope: \"container\"\n };\n const unsubscribe = await getBase(this).processLocalSubscription(this, config);\n return unsubscribe;\n }\n public async setMaximizationBoundary(config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n const validatedConfig = setMaximizationBoundaryAPIConfigDecoder.runWithException(config);\n return getBase(this).setMaximizationBoundary(this, validatedConfig);\n }\n\n}\n","import { Base } from \"./base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { checkThrowCallback, columnLockConfigDecoder, nonNegativeNumberDecoder, setMaximizationBoundaryAPIConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\n\ninterface PrivateData {\n base: Base;\n}\n\nconst privateData = new WeakMap<Column, PrivateData>();\n\nconst getBase = (model: Column): Base => {\n return privateData.get(model).base;\n};\n\nexport class Column implements IOConnectWorkspaces.Column {\n\n constructor(base: Base) {\n privateData.set(this, { base });\n }\n\n public get type(): \"column\" {\n return \"column\";\n }\n\n public get id(): string {\n return getBase(this).getId(this);\n }\n\n public get frameId(): string {\n return getBase(this).getFrameId(this);\n }\n\n public get workspaceId(): string {\n return getBase(this).getWorkspaceId(this);\n }\n\n public get positionIndex(): number {\n return getBase(this).getPositionIndex(this);\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getBase(this).getAllChildren(this);\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.WorkspaceBox {\n return getBase(this).getMyParent(this);\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getBase(this).getMyFrame(this);\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getBase(this).getMyWorkspace(this);\n }\n\n public get allowDrop(): boolean {\n return getBase(this).getAllowDrop(this);\n }\n\n public get allowSplitters(): boolean {\n return getBase(this).getAllowSplitters(this);\n }\n\n public get minWidth(): number {\n return getBase(this).getMinWidth(this);\n }\n\n public get minHeight(): number {\n return getBase(this).getMinHeight(this);\n }\n\n public get maxWidth(): number {\n return getBase(this).getMaxWidth(this);\n }\n\n public get maxHeight(): number {\n return getBase(this).getMaxHeight(this);\n }\n\n public get width(): number {\n return getBase(this).getWidthInPx(this);\n }\n\n public get height(): number {\n return getBase(this).getHeightInPx(this);\n }\n\n public get isPinned(): boolean {\n return getBase(this).getIsPinned(this);\n }\n\n public get isMaximized(): boolean {\n return getBase(this).getIsMaximized(this);\n }\n\n public get maximizationBoundary(): boolean {\n return getBase(this).getMaximizationBoundary(this);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getBase(this).addWindow(this, definition, \"column\");\n }\n\n public async addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {\n if (definition?.type && definition.type !== \"group\") {\n throw new Error(`Expected a group definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Group>(this, \"group\", \"column\", definition);\n }\n\n public async addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<Column> {\n throw new Error(\"Adding columns as column children is not supported\");\n return getBase(this).addParent<Column>(this, \"column\", \"column\", definition);\n }\n\n public async addRow(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Row> {\n if (definition?.type && definition.type !== \"row\") {\n throw new Error(`Expected a row definition, but received ${definition.type}`);\n }\n return getBase(this).addParent<IOConnectWorkspaces.Row>(this, \"row\", \"column\", definition);\n }\n\n public removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n return getBase(this).removeChild(this, predicate);\n }\n\n public maximize(): Promise<void> {\n return getBase(this).maximize(this);\n }\n\n public restore(): Promise<void> {\n return getBase(this).restore(this);\n }\n\n public close(): Promise<void> {\n return getBase(this).close(this);\n }\n\n public lock(config?: IOConnectWorkspaces.ColumnLockConfig | ((config: IOConnectWorkspaces.ColumnLockConfig) => IOConnectWorkspaces.ColumnLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n };\n\n lockConfigResult = config(currentLockConfig);\n\n } else {\n lockConfigResult = config;\n }\n const verifiedConfig = lockConfigResult === undefined ? undefined : columnLockConfigDecoder.runWithException(lockConfigResult);\n return getBase(this).lockContainer(this, verifiedConfig);\n }\n\n public async setWidth(width: number): Promise<void> {\n nonNegativeNumberDecoder.runWithException(width);\n return getBase(this).setWidth(this, width);\n }\n\n\n public async onLockConfigurationChanged(callback: (config: IOConnectWorkspaces.ColumnLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getBase(this).getId(this);\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowSplitters: this.allowSplitters\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"container\",\n scope: \"container\"\n };\n const unsubscribe = await getBase(this).processLocalSubscription(this, config);\n return unsubscribe;\n }\n public async setMaximizationBoundary(config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n const validatedConfig = setMaximizationBoundaryAPIConfigDecoder.runWithException(config);\n return getBase(this).setMaximizationBoundary(this, validatedConfig);\n\n }\n}\n","import { Base } from \"./base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { checkThrowCallback, elementResizeConfigDecoder, groupLockConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\n\ninterface PrivateData {\n base: Base;\n}\n\nconst privateData = new WeakMap<Group, PrivateData>();\n\nconst getBase = (model: Group): Base => {\n return privateData.get(model).base;\n};\n\nexport class Group implements IOConnectWorkspaces.Group {\n\n constructor(base: Base) {\n privateData.set(this, { base });\n }\n\n public get type(): \"group\" {\n return \"group\";\n }\n\n public get id(): string {\n return getBase(this).getId(this);\n }\n\n public get frameId(): string {\n return getBase(this).getFrameId(this);\n }\n\n public get workspaceId(): string {\n return getBase(this).getWorkspaceId(this);\n }\n\n public get positionIndex(): number {\n return getBase(this).getPositionIndex(this);\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getBase(this).getAllChildren(this);\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.WorkspaceBox {\n return getBase(this).getMyParent(this);\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getBase(this).getMyFrame(this);\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getBase(this).getMyWorkspace(this);\n }\n\n public get allowExtract(): boolean {\n return getBase(this).getAllowExtract(this);\n }\n\n public get allowReorder(): boolean {\n return getBase(this).getAllowReorder(this);\n }\n\n public get allowDropLeft(): boolean {\n return getBase(this).getAllowDropLeft(this);\n }\n\n public get allowDropRight(): boolean {\n return getBase(this).getAllowDropRight(this);\n }\n\n public get allowDropTop(): boolean {\n return getBase(this).getAllowDropTop(this);\n }\n\n public get allowDropBottom(): boolean {\n return getBase(this).getAllowDropBottom(this);\n }\n\n public get allowDropHeader(): boolean {\n return getBase(this).getAllowDropHeader(this);\n }\n\n public get allowDrop(): boolean {\n return getBase(this).getAllowDrop(this);\n }\n\n public get showMaximizeButton(): boolean {\n return getBase(this).getShowMaximizeButton(this);\n }\n\n public get showEjectButton(): boolean {\n return getBase(this).getShowEjectButton(this);\n }\n\n public get showAddWindowButton(): boolean {\n return getBase(this).getShowAddWindowButton(this);\n }\n\n public get minWidth(): number {\n return getBase(this).getMinWidth(this);\n }\n\n public get minHeight(): number {\n return getBase(this).getMinHeight(this);\n }\n\n public get maxWidth(): number {\n return getBase(this).getMaxWidth(this);\n }\n\n public get maxHeight(): number {\n return getBase(this).getMaxHeight(this);\n }\n\n public get width(): number {\n return getBase(this).getWidthInPx(this);\n }\n\n public get height(): number {\n return getBase(this).getHeightInPx(this);\n }\n\n public get isMaximized(): boolean {\n return getBase(this).getIsMaximized(this);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getBase(this).addWindow(this, definition, \"group\");\n }\n\n public async addGroup(): Promise<Group> {\n throw new Error(\"Adding groups as group child is not supported\");\n }\n\n public async addColumn(): Promise<IOConnectWorkspaces.Column> {\n throw new Error(\"Adding columns as group child is not supported\");\n }\n\n public async addRow(): Promise<IOConnectWorkspaces.Row> {\n throw new Error(\"Adding rows as group child is not supported\");\n }\n\n public removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n return getBase(this).removeChild(this, predicate);\n }\n\n public maximize(): Promise<void> {\n return getBase(this).maximize(this);\n }\n\n public restore(): Promise<void> {\n return getBase(this).restore(this);\n }\n\n public close(): Promise<void> {\n return getBase(this).close(this);\n }\n\n public lock(config?: IOConnectWorkspaces.GroupLockConfig | ((config: IOConnectWorkspaces.GroupLockConfig) => IOConnectWorkspaces.GroupLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowDropHeader: this.allowDropHeader,\n allowDropLeft: this.allowDropLeft,\n allowDropRight: this.allowDropRight,\n allowDropTop: this.allowDropTop,\n allowDropBottom: this.allowDropBottom,\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showAddWindowButton: this.showAddWindowButton,\n showEjectButton: this.showEjectButton,\n showMaximizeButton: this.showMaximizeButton\n };\n\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n const verifiedConfig = lockConfigResult === undefined ? undefined : groupLockConfigDecoder.runWithException(lockConfigResult);\n return getBase(this).lockContainer(this, verifiedConfig);\n }\n\n public async setSize(config: IOConnectWorkspaces.ElementResizeConfig): Promise<void> {\n const verifiedConfig = elementResizeConfigDecoder.runWithException(config);\n\n if (!verifiedConfig.width && !verifiedConfig.height) {\n throw new Error(\"Expected either width or height to be passed.\");\n }\n\n\n return getBase(this).setSize(this, config.width, config.height);\n }\n\n public async bundleToRow(): Promise<void> {\n await getBase(this).bundleTo(this, \"row\");\n await this.workspace.refreshReference();\n }\n\n public async bundleToColumn(): Promise<void> {\n await getBase(this).bundleTo(this, \"column\");\n await this.workspace.refreshReference();\n }\n\n public async onLockConfigurationChanged(callback: (config: IOConnectWorkspaces.GroupLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowDropHeader: this.allowDropHeader,\n allowDropLeft: this.allowDropLeft,\n allowDropTop: this.allowDropTop,\n allowDropRight: this.allowDropRight,\n allowDropBottom: this.allowDropBottom,\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showAddWindowButton: this.showAddWindowButton,\n showEjectButton: this.showEjectButton,\n showMaximizeButton: this.showMaximizeButton\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"container\",\n scope: \"container\"\n };\n const unsubscribe = await getBase(this).processLocalSubscription(this, config);\n return unsubscribe;\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WorkspaceSnapshotResult, WindowStreamData, WorkspaceStreamData } from \"../types/protocol\";\nimport { checkThrowCallback, nonEmptyStringDecoder, workspaceLockConfigDecoder, workspacePinOptionsDecoder } from \"../shared/decoders\";\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\nimport { FrameCreateConfig } from \"../types/ioc\";\nimport { Frame } from \"./frame\";\nimport { SubscriptionConfig } from \"../types/subscription\";\nimport { WorkspacePrivateData } from \"../types/privateData\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { Workspace as WorkspaceTemp, WorkspaceLockConfig } from \"../../temp\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Workspace, PrivateData>();\n\nconst getData = (model: Workspace): WorkspacePrivateData => {\n return data.get(model).manager.getWorkspaceData(model);\n};\n\nconst getDataManager = (model: Workspace): PrivateDataManager => {\n return data.get(model).manager;\n};\n\ntype SaveLayoutConfig = Omit<Omit<IOConnectWorkspaces.WorkspaceLayoutSaveConfig, \"name\">, \"workspaceId\">;\n\nexport class Workspace implements WorkspaceTemp {\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public get id(): string {\n return getData(this).id;\n }\n\n public get frameId(): string {\n return getData(this).config.frameId;\n }\n\n public get positionIndex(): number {\n return getData(this).config.positionIndex;\n }\n\n public get title(): string {\n return getData(this).config.title;\n }\n\n public get layoutName(): string {\n return getData(this).config.layoutName;\n }\n\n public get isHibernated(): boolean | undefined {\n return getData(this).config.isHibernated;\n }\n\n public get isSelected(): boolean {\n return getData(this).config.isSelected;\n }\n\n public get children(): IOConnectWorkspaces.WorkspaceElement[] {\n return getData(this).children;\n }\n\n public get frame(): Frame {\n return getData(this).frame;\n }\n\n public get allowSplitters(): boolean {\n return getData(this).config.allowSplitters;\n }\n\n public get allowSystemHibernation(): boolean {\n return getData(this).config.allowSystemHibernation;\n }\n\n public get allowDrop(): boolean {\n return getData(this).config.allowDrop;\n }\n\n public get allowDropLeft(): boolean {\n return getData(this).config.allowDropLeft;\n }\n\n public get allowDropTop(): boolean {\n return getData(this).config.allowDropTop;\n }\n\n public get allowDropRight(): boolean {\n return getData(this).config.allowDropRight;\n }\n\n public get allowDropBottom(): boolean {\n return getData(this).config.allowDropBottom;\n }\n\n public get allowExtract(): boolean {\n return getData(this).config.allowExtract;\n }\n\n public get allowWindowReorder(): boolean {\n return getData(this).config.allowWindowReorder;\n }\n\n public get showCloseButton(): boolean {\n return getData(this).config.showCloseButton;\n }\n\n public get showSaveButton(): boolean {\n return getData(this).config.showSaveButton;\n }\n\n public get allowWorkspaceTabReorder(): boolean {\n return getData(this).config.allowWorkspaceTabReorder;\n }\n\n public get allowWorkspaceTabExtract(): boolean {\n return getData(this).config.allowWorkspaceTabExtract;\n }\n\n public get minWidth(): number {\n return getData(this).config.minWidth;\n }\n\n public get minHeight(): number {\n return getData(this).config.minHeight;\n }\n\n public get maxWidth(): number {\n return getData(this).config.maxWidth;\n }\n\n public get maxHeight(): number {\n return getData(this).config.maxHeight;\n }\n\n public get width(): number {\n return getData(this).config.widthInPx;\n }\n\n public get height(): number {\n return getData(this).config.heightInPx;\n }\n\n public get showWindowCloseButtons(): boolean {\n return getData(this).config.showWindowCloseButtons;\n }\n\n public get showEjectButtons(): boolean {\n return getData(this).config.showEjectButtons;\n }\n\n public get showAddWindowButtons(): boolean {\n return getData(this).config.showAddWindowButtons;\n }\n\n public get isPinned(): boolean {\n return getData(this).config.isPinned;\n }\n\n public async removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n checkThrowCallback(predicate);\n const child = this.children.find(predicate);\n if (!child) {\n return;\n }\n await child.close();\n await this.refreshReference();\n }\n\n public async remove(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {\n checkThrowCallback(predicate);\n const controller = getData(this).controller;\n\n const child = controller.iterateFindChild(this.children, predicate);\n\n await child.close();\n\n await this.refreshReference();\n }\n\n public async focus(): Promise<void> {\n await getData(this).controller.focusItem(this.id);\n await this.refreshReference();\n }\n\n public async close(): Promise<void> {\n const controller = getData(this).controller;\n\n const workspaces = await getData(this).frame.workspaces();\n\n // should close the frame only if the frame is NOT a platform\n const platformFrameId = (await controller.getPlatformFrameId()).id;\n\n const shouldCloseFrame = workspaces.length === 1 &&\n workspaces.every((wsp) => wsp.id === this.id) &&\n platformFrameId !== this.frame.id;\n\n if (shouldCloseFrame) {\n return this.frame.close();\n }\n\n await controller.closeItem(this.id);\n }\n\n public snapshot(): Promise<IOConnectWorkspaces.WorkspaceSnapshot> {\n return getData(this).controller.getSnapshot(this.id, \"workspace\") as Promise<IOConnectWorkspaces.WorkspaceSnapshot>;\n }\n\n public async saveLayout(name: string, config?: SaveLayoutConfig): Promise<void> {\n nonEmptyStringDecoder.runWithException(name);\n await getData(this).controller.saveLayout({ name, workspaceId: this.id, saveContext: config?.saveContext, metadata: config?.metadata });\n }\n\n public async setTitle(title: string): Promise<void> {\n nonEmptyStringDecoder.runWithException(title);\n const controller = getData(this).controller;\n\n await controller.setItemTitle(this.id, title);\n await this.refreshReference();\n }\n\n public getContext(): Promise<any> {\n const controller = getData(this).controller;\n return controller.getWorkspaceContext(this.id);\n }\n\n public setContext(data: any): Promise<void> {\n const controller = getData(this).controller;\n return controller.setWorkspaceContext(this.id, data);\n }\n\n public updateContext(data: any): Promise<void> {\n const controller = getData(this).controller;\n return controller.updateWorkspaceContext(this.id, data);\n }\n\n public onContextUpdated(callback: (data: any) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n const controller = getData(this).controller;\n return controller.subscribeWorkspaceContextUpdated(this.id, callback);\n }\n\n public async refreshReference(): Promise<void> {\n const newSnapshot = (await getData(this).controller.getSnapshot(this.id, \"workspace\")) as WorkspaceSnapshotResult;\n\n const currentChildrenFlat = getData(this).controller.flatChildren(getData(this).children);\n\n const newChildren = getData(this).controller.refreshChildren({\n existingChildren: currentChildrenFlat,\n workspace: this,\n parent: this,\n children: newSnapshot.children\n });\n\n const currentFrame = this.frame;\n let actualFrame: Frame;\n\n if (currentFrame.id === newSnapshot.config.frameId) {\n getDataManager(this).remapFrame(currentFrame, newSnapshot.frameSummary);\n actualFrame = currentFrame;\n } else {\n const frameCreateConfig: FrameCreateConfig = {\n summary: newSnapshot.frameSummary\n };\n const newFrame = getData(this).ioc.getModel<\"frame\">(\"frame\", frameCreateConfig);\n actualFrame = newFrame;\n }\n\n getDataManager(this).remapWorkspace(this, {\n config: newSnapshot.config,\n children: newChildren,\n frame: actualFrame\n });\n }\n\n public async getIcon(): Promise<string> {\n const controller = getData(this).controller;\n return controller.getWorkspaceIcon(this.id);\n }\n\n public async setIcon(icon: string): Promise<void> {\n const controller = getData(this).controller;\n return controller.setWorkspaceIcon(this.id, icon);\n }\n\n public getBox(predicate: (box: IOConnectWorkspaces.WorkspaceBox) => boolean): IOConnectWorkspaces.WorkspaceBox {\n checkThrowCallback(predicate);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n return controller.iterateFindChild(children, (child) => child.type !== \"window\" && predicate(child)) as IOConnectWorkspaces.WorkspaceBox;\n }\n\n public getAllBoxes(predicate?: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): IOConnectWorkspaces.WorkspaceBox[] {\n checkThrowCallback(predicate, true);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n const allParents = controller.iterateFilterChildren(children, (child) => child.type !== \"window\") as IOConnectWorkspaces.WorkspaceBox[];\n\n if (!predicate) {\n return allParents;\n }\n\n return allParents.filter(predicate);\n }\n\n public getRow(predicate: (row: IOConnectWorkspaces.Row) => boolean): IOConnectWorkspaces.Row {\n checkThrowCallback(predicate);\n return this.getBox((parent) => parent.type === \"row\" && predicate(parent)) as IOConnectWorkspaces.Row;\n }\n\n public getAllRows(predicate?: (row: IOConnectWorkspaces.Row) => boolean): IOConnectWorkspaces.Row[] {\n checkThrowCallback(predicate, true);\n if (predicate) {\n return this.getAllBoxes((parent) => parent.type === \"row\" && predicate(parent)) as IOConnectWorkspaces.Row[];\n }\n return this.getAllBoxes((parent) => parent.type === \"row\") as IOConnectWorkspaces.Row[];\n }\n\n public getColumn(predicate: (column: IOConnectWorkspaces.Column) => boolean): IOConnectWorkspaces.Column {\n checkThrowCallback(predicate);\n return this.getBox((parent) => parent.type === \"column\" && predicate(parent)) as IOConnectWorkspaces.Column;\n }\n\n public getAllColumns(predicate?: (columns: IOConnectWorkspaces.Column) => boolean): IOConnectWorkspaces.Column[] {\n checkThrowCallback(predicate, true);\n if (predicate) {\n return this.getAllBoxes((parent) => parent.type === \"column\" && predicate(parent)) as IOConnectWorkspaces.Column[];\n }\n return this.getAllBoxes((parent) => parent.type === \"column\") as IOConnectWorkspaces.Column[];\n }\n\n public getGroup(predicate: (group: IOConnectWorkspaces.Group) => boolean): IOConnectWorkspaces.Group {\n checkThrowCallback(predicate);\n return this.getBox((parent) => parent.type === \"group\" && predicate(parent)) as IOConnectWorkspaces.Group;\n }\n\n public getAllGroups(predicate?: (group: IOConnectWorkspaces.Group) => boolean): IOConnectWorkspaces.Group[] {\n checkThrowCallback(predicate, true);\n if (predicate) {\n return this.getAllBoxes((parent) => parent.type === \"group\" && predicate(parent)) as IOConnectWorkspaces.Group[];\n }\n return this.getAllBoxes((parent) => parent.type === \"group\") as IOConnectWorkspaces.Group[];\n }\n\n public getWindow(predicate: (window: IOConnectWorkspaces.WorkspaceWindow) => boolean): IOConnectWorkspaces.WorkspaceWindow {\n checkThrowCallback(predicate);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n return controller.iterateFindChild(children, (child) => child.type === \"window\" && predicate(child)) as IOConnectWorkspaces.WorkspaceWindow;\n }\n\n public getAllWindows(predicate?: (window: IOConnectWorkspaces.WorkspaceWindow) => boolean): IOConnectWorkspaces.WorkspaceWindow[] {\n checkThrowCallback(predicate, true);\n const children = getData(this).children;\n const controller = getData(this).controller;\n\n const allWindows = controller.iterateFilterChildren(children, (child) => child.type === \"window\") as IOConnectWorkspaces.WorkspaceWindow[];\n\n if (!predicate) {\n return allWindows;\n }\n\n return allWindows.filter(predicate);\n }\n\n public addRow(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Row> {\n return getData(this).base.addParent<IOConnectWorkspaces.Row>(this, \"row\", \"workspace\", definition);\n }\n\n public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Column> {\n return getData(this).base.addParent<IOConnectWorkspaces.Column>(this, \"column\", \"workspace\", definition);\n }\n\n public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {\n return getData(this).base.addParent<IOConnectWorkspaces.Group>(this, \"group\", \"workspace\", definition);\n }\n\n public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n return getData(this).base.addWindow(this, definition, \"workspace\");\n }\n\n public async bundleToRow(): Promise<void> {\n await getData(this).controller.bundleWorkspaceTo(\"row\", this.id);\n await this.refreshReference();\n }\n\n public async bundleToColumn(): Promise<void> {\n await getData(this).controller.bundleWorkspaceTo(\"column\", this.id);\n await this.refreshReference();\n }\n\n public async hibernate(): Promise<void> {\n await getData(this).controller.hibernateWorkspace(this.id);\n await this.refreshReference();\n }\n\n public async resume(): Promise<void> {\n await getData(this).controller.resumeWorkspace(this.id);\n await this.refreshReference();\n }\n\n public async lock(config?: IOConnectWorkspaces.WorkspaceLockConfig | ((config: IOConnectWorkspaces.WorkspaceLockConfig) => IOConnectWorkspaces.WorkspaceLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowDrop: this.allowDrop,\n allowDropLeft: this.allowDropLeft,\n allowDropTop: this.allowDropTop,\n allowDropRight: this.allowDropRight,\n allowDropBottom: this.allowDropBottom,\n allowSystemHibernation: this.allowSystemHibernation,\n allowExtract: this.allowExtract,\n allowWindowReorder: this.allowWindowReorder,\n allowSplitters: this.allowSplitters,\n showCloseButton: this.showCloseButton,\n showSaveButton: this.showSaveButton,\n allowWorkspaceTabReorder: this.allowWorkspaceTabReorder,\n allowWorkspaceTabExtract: this.allowWorkspaceTabExtract,\n showAddWindowButtons: this.showAddWindowButtons,\n showEjectButtons: this.showEjectButtons,\n showWindowCloseButtons: this.showWindowCloseButtons\n };\n\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n\n const verifiedConfig = lockConfigResult === undefined ? undefined : workspaceLockConfigDecoder.runWithException(lockConfigResult);\n\n await getData(this).controller.lockWorkspace(this.id, verifiedConfig);\n await this.refreshReference();\n }\n\n public async pin(options: IOConnectWorkspaces.WorkspacePinOptions): Promise<void> {\n workspacePinOptionsDecoder.runWithException(options);\n await getData(this).controller.pinWorkspace(this.id, options?.icon);\n await this.refreshReference();\n }\n\n public async unpin(): Promise<void> {\n await getData(this).controller.unpinWorkspace(this.id);\n await this.refreshReference();\n }\n\n public async showLoadingAnimation(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"Not supported in IO Connect Browser\");\n }\n\n await getData(this).controller.showWorkspaceLoadingAnimation(this.id);\n }\n\n public async hideLoadingAnimation(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"Not supported in IO Connect Browser\");\n }\n\n await getData(this).controller.hideWorkspaceLoadingAnimation(this.id);\n }\n\n public async onClosed(callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n // await this.refreshReference();\n callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });\n };\n const config: SubscriptionConfig = {\n action: \"closed\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onHibernated(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (): Promise<void> => {\n await this.refreshReference();\n callback();\n };\n const config: SubscriptionConfig = {\n action: \"hibernated\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onResumed(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (): Promise<void> => {\n await this.refreshReference();\n callback();\n };\n const config: SubscriptionConfig = {\n action: \"resumed\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowAdded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"added\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowRemoved(callback: (removed: { windowId?: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const { windowId, workspaceId, frameId } = payload.windowSummary.config;\n callback({ windowId, workspaceId, frameId });\n };\n\n const config: SubscriptionConfig = {\n action: \"removed\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowLoaded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const foundWindow = this.getWindow((win) => {\n return win.id && win.id === payload.windowSummary.config.windowId;\n });\n callback(foundWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"loaded\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowMaximized(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"maximized\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowRestored(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"restored\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onWindowSelected(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n await this.refreshReference();\n const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);\n\n const foundWindow = windowParent.children.find((child) => {\n\n return child.type === \"window\" && child.elementId === payload.windowSummary.itemId;\n });\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n action: \"selected\",\n eventType: \"window\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onLockConfigurationChanged(callback: (config: WorkspaceLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n await this.refreshReference();\n callback({\n allowDrop: this.allowDrop,\n allowDropLeft: this.allowDropLeft,\n allowDropTop: this.allowDropTop,\n allowDropRight: this.allowDropRight,\n allowDropBottom: this.allowDropBottom,\n allowSystemHibernation: this.allowSystemHibernation,\n allowExtract: this.allowExtract,\n allowSplitters: this.allowSplitters,\n allowWindowReorder: this.allowWindowReorder,\n allowWorkspaceTabExtract: this.allowWorkspaceTabExtract,\n allowWorkspaceTabReorder: this.allowWorkspaceTabReorder,\n showAddWindowButtons: this.showAddWindowButtons,\n showCloseButton: this.showCloseButton,\n showEjectButtons: this.showEjectButtons,\n showSaveButton: this.showSaveButton,\n showWindowCloseButtons: this.showWindowCloseButtons\n });\n };\n\n const config: SubscriptionConfig = {\n action: \"lock-configuration-changed\",\n eventType: \"workspace\",\n scope: \"workspace\",\n scopeId: id,\n callback: wrappedCallback\n };\n\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n}\n","import { checkThrowCallback, nonEmptyStringDecoder, windowLockConfigDecoder, elementResizeConfigDecoder } from \"../shared//decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\nimport { WindowPrivateData } from \"../types/privateData\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { GDWindow } from \"../types/glue\";\nimport { Row } from \"./row\";\nimport { Column } from \"./column\";\nimport { Group } from \"./group\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Window, PrivateData>();\n\nconst getData = (model: Window): WindowPrivateData => {\n return data.get(model).manager.getWindowData(model);\n};\n\nexport class Window implements IOConnectWorkspaces.WorkspaceWindow {\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public get id(): string {\n return getData(this).config.windowId;\n }\n\n public get elementId(): string {\n return getData(this).id;\n }\n\n public get type(): \"window\" {\n return \"window\";\n }\n\n public get frameId(): string {\n return getData(this).frame.id;\n }\n\n public get workspaceId(): string {\n return getData(this).workspace.id;\n }\n\n public get positionIndex(): number {\n return getData(this).config.positionIndex;\n }\n\n public get isMaximized(): boolean {\n return getData(this).config.isMaximized;\n }\n\n public get isLoaded(): boolean {\n return getData(this).controller.checkIsWindowLoaded(this.id);\n }\n\n public get isSelected(): boolean {\n return getData(this).config.isSelected;\n }\n\n public get focused(): boolean {\n return this.getGdWindow().isFocused;\n }\n\n public get title(): string {\n return getData(this).config.title;\n }\n\n public get allowExtract(): boolean {\n return getData(this).config.allowExtract;\n }\n\n public get allowReorder(): boolean {\n return getData(this).config.allowReorder;\n }\n\n public get showCloseButton(): boolean {\n return getData(this).config.showCloseButton;\n }\n\n public get width(): number {\n return getData(this).config.widthInPx;\n }\n\n public get height(): number {\n return getData(this).config.heightInPx;\n }\n\n public get minWidth(): number {\n return getData(this).config.minWidth;\n }\n\n public get minHeight(): number {\n return getData(this).config.minHeight;\n }\n\n public get maxWidth(): number {\n return getData(this).config.maxWidth;\n }\n\n public get maxHeight(): number {\n return getData(this).config.maxHeight;\n }\n\n public get workspace(): IOConnectWorkspaces.Workspace {\n return getData(this).workspace;\n }\n\n public get frame(): IOConnectWorkspaces.Frame {\n return getData(this).frame;\n }\n\n public get parent(): IOConnectWorkspaces.Workspace | IOConnectWorkspaces.Row | IOConnectWorkspaces.Column | IOConnectWorkspaces.Group {\n return getData(this).parent;\n }\n\n public get appName(): string {\n return getData(this).config.appName;\n }\n\n public async forceLoad(): Promise<void> {\n if (this.isLoaded) {\n return;\n }\n const controller = getData(this).controller;\n const itemId = getData(this).id;\n\n const windowId = await controller.forceLoadWindow(itemId);\n\n getData(this).config.windowId = windowId;\n\n await this.workspace.refreshReference();\n }\n\n public async focus(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.focusItem(id);\n\n await this.workspace.refreshReference();\n }\n\n public async close(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.closeItem(id);\n\n await getData(this)\n .parent\n .removeChild((child) => child.id === id);\n\n await this.workspace.refreshReference();\n }\n\n public async setTitle(title: string): Promise<void> {\n nonEmptyStringDecoder.runWithException(title);\n\n const itemId = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.setItemTitle(itemId, title);\n\n await this.workspace.refreshReference();\n }\n\n public async maximize(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.maximizeItem(id);\n\n await this.workspace.refreshReference();\n }\n\n public async restore(): Promise<void> {\n const id = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.restoreItem(id);\n\n await this.workspace.refreshReference();\n }\n\n public async eject(): Promise<GDWindow> {\n if (!this.isLoaded) {\n throw new Error(\"Cannot eject this window, because it is not loaded yet\");\n }\n const itemId: string = getData(this).id;\n\n const newWindowId: string = await getData(this).controller.ejectWindow(itemId);\n\n getData(this).config.windowId = newWindowId;\n\n await this.workspace.refreshReference();\n\n return this.getGdWindow();\n }\n\n public getGdWindow(): GDWindow {\n if (!this.isLoaded) {\n throw new Error(\"Cannot fetch this GD window, because the window is not yet loaded\");\n }\n\n const myId = getData(this).config.windowId;\n const controller = getData(this).controller;\n\n return controller.getGDWindow(myId);\n }\n\n public async moveTo(parent: IOConnectWorkspaces.Row | IOConnectWorkspaces.Column | IOConnectWorkspaces.Group): Promise<void> {\n if (!(parent instanceof Row || parent instanceof Column || parent instanceof Group)) {\n throw new Error(\"Cannot add to the provided parent, because the provided parent is not an instance of Row, Column or Group\");\n }\n\n const myId = getData(this).id;\n const controller = getData(this).controller;\n\n const foundParent = await controller.getParent((p) => p.id === parent.id);\n\n if (!foundParent) {\n throw new Error(\"Cannot move the window to the selected parent, because this parent does not exist.\");\n }\n\n await controller.moveWindowTo(myId, parent.id);\n\n await this.workspace.refreshReference();\n }\n\n public async lock(config?: IOConnectWorkspaces.WorkspaceWindowLockConfig | ((config: IOConnectWorkspaces.WorkspaceWindowLockConfig) => IOConnectWorkspaces.WorkspaceWindowLockConfig)): Promise<void> {\n let lockConfigResult = undefined;\n\n if (typeof config === \"function\") {\n const currentLockConfig = {\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showCloseButton: this.showCloseButton\n };\n lockConfigResult = config(currentLockConfig);\n } else {\n lockConfigResult = config;\n }\n\n const verifiedConfig = lockConfigResult === undefined ? undefined : windowLockConfigDecoder.runWithException(lockConfigResult);\n const windowPlacementId = getData(this).id;\n await getData(this).controller.lockWindow(windowPlacementId, verifiedConfig);\n await this.workspace.refreshReference();\n }\n\n public async setSize(config: IOConnectWorkspaces.ElementResizeConfig): Promise<void> {\n const verifiedConfig = elementResizeConfigDecoder.runWithException(config);\n\n if (!verifiedConfig.width && !verifiedConfig.height) {\n throw new Error(\"Expected either width or height to be passed.\");\n }\n\n const myId = getData(this).id;\n const controller = getData(this).controller;\n\n await controller.resizeItem(myId, {\n height: verifiedConfig.height,\n width: verifiedConfig.width,\n relative: false\n });\n\n await this.workspace.refreshReference();\n }\n\n public async onRemoved(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback();\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"removed\",\n eventType: \"window\",\n scope: \"window\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n\n public async onLockConfigurationChanged(callback:(config:IOConnectWorkspaces.WorkspaceWindowLockConfig)=>void): Promise<IOConnectWorkspaces.Unsubscribe>{\n checkThrowCallback(callback);\n const id = getData(this).id;\n const wrappedCallback = async (): Promise<void> => {\n await this.workspace.refreshReference();\n callback({\n allowExtract: this.allowExtract,\n allowReorder: this.allowReorder,\n showCloseButton: this.showCloseButton\n });\n };\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"lock-configuration-changed\",\n eventType: \"window\",\n scope: \"window\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n}\n","import { checkThrowCallback, nonEmptyStringDecoder, restoreWorkspaceConfigDecoder, workspaceDefinitionDecoder, workspaceBuilderCreateConfigDecoder, resizeConfigDecoder, moveConfigDecoder, frameInitConfigDecoder } from \"../shared/decoders\";\nimport { SubscriptionConfig } from \"../types/subscription\";\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\nimport { FrameStreamData, WorkspaceStreamData, WindowStreamData } from \"../types/protocol\";\nimport { IOConnectWorkspaces } from \"../../workspaces.d\";\nimport { FramePrivateData } from \"../types/privateData\";\nimport { UnsubscribeFunction } from \"callback-registry\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Frame, PrivateData>();\n\nconst getData = (model: Frame): FramePrivateData => {\n return data.get(model).manager.getFrameData(model);\n};\n\nexport class Frame implements IOConnectWorkspaces.Frame {\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public async registerShortcut(shortcut: string, callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n nonEmptyStringDecoder.runWithException(shortcut);\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n const unsubscribe = await getData(this).controller.registerShortcut(shortcut, myId, callback);\n return unsubscribe;\n }\n\n public get id(): string {\n return getData(this).summary.id;\n }\n\n public get isInitialized(): boolean {\n return getData(this).summary.isInitialized;\n }\n\n public getBounds(): Promise<IOConnectWorkspaces.FrameBounds> {\n const myId = getData(this).summary.id;\n\n return getData(this).controller.getFrameBounds(myId);\n }\n\n public async resize(config: IOConnectWorkspaces.ResizeConfig): Promise<void> {\n const validatedConfig = resizeConfigDecoder.runWithException(config);\n const myId = getData(this).summary.id;\n\n return getData(this).controller.resizeItem(myId, validatedConfig);\n }\n\n public async move(config: IOConnectWorkspaces.MoveConfig): Promise<void> {\n const validatedConfig = moveConfigDecoder.runWithException(config);\n\n const myId = getData(this).summary.id;\n return getData(this).controller.moveFrame(myId, validatedConfig);\n }\n\n public focus(): Promise<void> {\n const myId = getData(this).summary.id;\n return getData(this).controller.focusItem(myId);\n }\n\n public async state(): Promise<IOConnectWorkspaces.FrameState> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.getFrameState(myId);\n }\n\n public async minimize(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.changeFrameState(myId, \"minimized\");\n }\n\n public async maximize(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.changeFrameState(myId, \"maximized\");\n }\n\n public async restore(): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n throw new Error(\"State operations are not supported in IO Connect Browser\");\n }\n const myId = getData(this).summary.id;\n return getData(this).controller.changeFrameState(myId, \"normal\");\n }\n\n public close(): Promise<void> {\n const myId = getData(this).summary.id;\n return getData(this).controller.closeItem(myId);\n }\n\n public snapshot(): Promise<IOConnectWorkspaces.FrameSnapshot> {\n const myId = getData(this).summary.id;\n return getData(this).controller.getSnapshot(myId, \"frame\") as Promise<IOConnectWorkspaces.FrameSnapshot>;\n }\n\n public async workspaces(): Promise<IOConnectWorkspaces.Workspace[]> {\n const controller = getData(this).controller;\n return controller.getWorkspacesByFrameId(this.id);\n }\n\n public async getConstraints(): Promise<IOConnectWorkspaces.FrameConstraints> {\n const controller = getData(this).controller;\n const myId = getData(this).summary.id;\n\n return controller.getFrameConstraints(myId);\n }\n\n public async restoreWorkspace(name: string, options?: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<IOConnectWorkspaces.Workspace> {\n nonEmptyStringDecoder.runWithException(name);\n const validatedOptions = restoreWorkspaceConfigDecoder.runWithException(options);\n\n return getData(this).controller.restoreWorkspace(name, validatedOptions);\n }\n\n public createWorkspace(definition: IOConnectWorkspaces.WorkspaceDefinition, config?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<IOConnectWorkspaces.Workspace> {\n const validatedDefinition = workspaceDefinitionDecoder.runWithException(definition);\n const validatedConfig = workspaceBuilderCreateConfigDecoder.runWithException(config);\n\n return getData(this).controller.createWorkspace(validatedDefinition, validatedConfig);\n }\n\n public async init(config: IOConnectWorkspaces.FrameInitializationConfig): Promise<void> {\n frameInitConfigDecoder.runWithException(config);\n\n if (getData(this).summary.isInitialized) {\n throw new Error(\"The frame has already been initialized\");\n }\n return getData(this).controller.initFrame(this.id, config);\n }\n\n public async onClosed(callback: (closed: IOConnectWorkspaces.FrameClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (payload: FrameStreamData): void => {\n callback({ frameId: payload.frameSummary.id, frameBounds: payload.frameBounds });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"closed\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onMaximized(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (): void => {\n callback();\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"maximized\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onMinimized(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (): void => {\n callback();\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"minimized\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onNormal(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (): void => {\n callback();\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"normal\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWorkspaceOpened(callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await getData(this).controller.transformStreamPayloadToWorkspace(payload);\n callback(workspace);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"opened\",\n eventType: \"workspace\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWorkspaceSelected(callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await getData(this).controller.getWorkspaceById(payload.workspaceSummary.id);\n callback(workspace);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"selected\",\n eventType: \"workspace\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWorkspaceClosed(callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (payload: WorkspaceStreamData): void => {\n callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"closed\",\n eventType: \"workspace\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWindowAdded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const foundParent = await getData(this).controller.getParent((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = foundParent.children.find((child) => child.type === \"window\" && child.positionIndex === payload.windowSummary.config.positionIndex);\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"added\",\n eventType: \"window\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWindowRemoved(callback: (removed: { windowId?: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = (payload: WindowStreamData): void => {\n const { windowId, workspaceId, frameId } = payload.windowSummary.config;\n callback({ windowId, workspaceId, frameId });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"removed\",\n eventType: \"window\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onWindowLoaded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myId = getData(this).summary.id;\n\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const foundParent = await getData(this).controller.getParent((parent) => {\n return parent.id === payload.windowSummary.parentId;\n });\n const foundWindow = foundParent.children.find((child) => child.type === \"window\" && child.positionIndex === payload.windowSummary.config.positionIndex);\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"loaded\",\n eventType: \"window\",\n scope: \"frame\"\n };\n const unsubscribe = await getData(this).controller.processLocalSubscription(config, myId);\n return unsubscribe;\n }\n\n public async onInitializationRequested(callback: (context?: IOConnectWorkspaces.FrameInitializationContext) => void): Promise<UnsubscribeFunction> {\n checkThrowCallback(callback);\n\n if (!this.isInitialized) {\n callback(getData(this).summary.initializationContext);\n }\n\n return () => {};\n }\n\n public async onFocusChanged(callback: (data: IOConnectWorkspaces.FrameFocusChangedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {\n checkThrowCallback(callback);\n const myData = getData(this);\n const { id } = myData.summary;\n\n const wrappedCallback = (args: FrameStreamData): void => {\n callback({ isFocused: args.frameSummary.isFocused });\n };\n\n const config: SubscriptionConfig = {\n callback: wrappedCallback,\n action: \"focus\",\n eventType: \"frame\",\n scope: \"frame\"\n };\n const unsubscribe = await myData.controller.processLocalSubscription(config, id);\n return unsubscribe;\n }\n}\n","import { Row } from \"../models/row\";\nimport { Column } from \"../models/column\";\nimport { Group } from \"../models/group\";\nimport { ParentPrivateData, WorkspacePrivateData, WindowPrivateData, FramePrivateData, RemapChildData, RemapWorkspaceData } from \"../types/privateData\";\nimport { Workspace } from \"../models/workspace\";\nimport { Window } from \"../models/window\";\nimport { Frame } from \"../models/frame\";\nimport { SwimlaneWindowSnapshotConfig, ParentSnapshotConfig, FrameSummaryResult } from \"../types/protocol\";\nimport { Child, SubParentTypes } from \"../types/builders\";\n\nexport class PrivateDataManager {\n private readonly parentsData = new WeakMap<SubParentTypes, ParentPrivateData>();\n private readonly workspacesData = new WeakMap<Workspace, WorkspacePrivateData>();\n private readonly windowsData = new WeakMap<Window, WindowPrivateData>();\n private readonly framesData = new WeakMap<Frame, FramePrivateData>();\n\n public deleteData<T>(model: T): void {\n if (model instanceof Window) {\n this.windowsData.delete(model);\n }\n\n if (model instanceof Workspace) {\n this.workspacesData.delete(model);\n }\n\n if (model instanceof Row || model instanceof Column || model instanceof Group) {\n this.parentsData.delete(model);\n }\n\n if (model instanceof Frame) {\n this.framesData.delete(model);\n }\n }\n\n public setWindowData(model: Window, data: WindowPrivateData): void {\n this.windowsData.set(model, data);\n }\n\n public setWorkspaceData(model: Workspace, data: WorkspacePrivateData): void {\n this.workspacesData.set(model, data);\n }\n\n public setParentData(model: SubParentTypes, data: ParentPrivateData): void {\n this.parentsData.set(model, data);\n }\n\n public setFrameData(model: Frame, data: FramePrivateData): void {\n this.framesData.set(model, data);\n }\n\n public getWindowData(model: Window): WindowPrivateData {\n return this.windowsData.get(model);\n }\n\n public getWorkspaceData(model: Workspace): WorkspacePrivateData {\n return this.workspacesData.get(model);\n }\n\n public getParentData(model: SubParentTypes): ParentPrivateData {\n return this.parentsData.get(model);\n }\n\n public getFrameData(model: Frame): FramePrivateData {\n return this.framesData.get(model);\n }\n\n public remapChild(model: Child, newData: RemapChildData): void {\n if (model instanceof Window) {\n const data = this.windowsData.get(model);\n data.parent = newData.parent || data.parent;\n data.config = newData.config as SwimlaneWindowSnapshotConfig || data.config;\n }\n\n if (model instanceof Row || model instanceof Column || model instanceof Group) {\n const data = this.parentsData.get(model);\n data.parent = newData.parent || data.parent;\n data.config = newData.config as ParentSnapshotConfig || data.config;\n data.children = newData.children || data.children;\n }\n }\n\n public remapFrame(model: Frame, newData: FrameSummaryResult): void {\n const data = this.framesData.get(model);\n data.summary = newData;\n }\n\n public remapWorkspace(model: Workspace, newData: RemapWorkspaceData): void {\n const data = this.workspacesData.get(model);\n data.frame = newData.frame || data.frame;\n data.config = newData.config || data.config;\n data.children = newData.children || data.children;\n }\n}\n","import { Workspace } from \"../workspace\";\nimport { ParentBuilder } from \"../../builders/parentBuilder\";\nimport { strictParentDefinitionDecoder, swimlaneWindowDefinitionDecoder, checkThrowCallback } from \"../../shared/decoders\";\nimport { SubParent, AllParentTypes, Child, SubParentTypes, AllParent, ContainerLockConfig } from \"../../types/builders\";\nimport { PrivateDataManager } from \"../../shared/privateDataManager\";\nimport { ParentPrivateData, WorkspacePrivateData } from \"../../types/privateData\";\nimport { Window } from \"../../models/window\";\nimport { IOConnectWorkspaces } from \"../../../workspaces\";\nimport { Group } from \"../group\";\nimport { Row } from \"../row\";\nimport { Column } from \"../column\";\nimport { ColumnSnapshotConfig, GroupSnapshotConfig, RowSnapshotConfig } from \"../../types/protocol\";\nimport { SubscriptionConfig } from \"../../types/subscription\";\n\ninterface PrivateData {\n manager: PrivateDataManager;\n}\n\nconst data = new WeakMap<Base, PrivateData>();\n\nconst getData = (base: Base, model: AllParentTypes): WorkspacePrivateData | ParentPrivateData => {\n const manager = data.get(base).manager;\n\n if (model instanceof Workspace) {\n return manager.getWorkspaceData(model);\n }\n\n return data.get(base).manager.getParentData(model as SubParentTypes);\n};\n\nexport class Base {\n public frameId: string;\n public workspaceId: string;\n public positionIndex: number;\n\n constructor(dataManager: PrivateDataManager) {\n data.set(this, { manager: dataManager });\n }\n\n public getId(model: AllParentTypes): string {\n return getData(this, model).id;\n }\n\n public getPositionIndex(model: AllParentTypes): number {\n return getData(this, model).config.positionIndex;\n }\n\n public getWorkspaceId(model: AllParentTypes): string {\n const privateData = getData(this, model) as ParentPrivateData;\n return privateData.config.workspaceId || privateData.workspace.id;\n }\n\n public getFrameId(model: AllParentTypes): string {\n return getData(this, model).frame.id;\n }\n\n public getAllChildren(model: AllParentTypes, predicate?: (child: Child) => boolean): Child[] {\n checkThrowCallback(predicate, true);\n const children = getData(this, model).children;\n\n if (typeof predicate === \"undefined\") {\n return children;\n }\n\n return children.filter(predicate);\n }\n\n public getMyParent(model: AllParentTypes): AllParentTypes {\n if (model instanceof Workspace) {\n return model;\n }\n return (getData(this, model) as ParentPrivateData).parent;\n }\n\n public getMyFrame(model: AllParentTypes): IOConnectWorkspaces.Frame {\n return getData(this, model).frame;\n }\n\n public getMyWorkspace(model: AllParentTypes): Workspace {\n if (model instanceof Workspace) {\n return model;\n }\n return (getData(this, model) as ParentPrivateData).workspace;\n }\n\n public async addWindow(model: AllParentTypes, definition: IOConnectWorkspaces.WorkspaceWindowDefinition, parentType: AllParent): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n if (!definition.appName && !definition.windowId) {\n throw new Error(\"The window definition should contain either an appName or a windowId\");\n }\n\n const validatedDefinition = swimlaneWindowDefinitionDecoder.runWithException(definition);\n const controller = getData(this, model).controller;\n\n const operationResult = await controller.add(\"window\", getData(this, model).id, parentType, validatedDefinition);\n\n if (model instanceof Workspace) {\n await model.refreshReference();\n return model.getWindow(w => w.elementId === operationResult.itemId);\n }\n\n const myWorkspace = this.getMyWorkspace(model);\n await myWorkspace.refreshReference();\n\n return myWorkspace.getWindow(w => w.elementId === operationResult.itemId);\n }\n\n public async addParent<T>(model: AllParentTypes, typeToAdd: SubParent, parentType: AllParent, definition?: IOConnectWorkspaces.BoxDefinition | ParentBuilder): Promise<T> {\n const parentDefinition = this.transformDefinition(typeToAdd, definition);\n const controller = getData(this, model).controller;\n\n const newParentId = (await controller.add(\"container\", getData(this, model).id, parentType, parentDefinition)).itemId;\n\n if (model instanceof Workspace) {\n await model.refreshReference();\n return model.getBox((parent) => parent.id === newParentId) as unknown as T;\n }\n\n const myWorkspace = this.getMyWorkspace(model);\n await myWorkspace.refreshReference();\n\n return myWorkspace.getBox((parent) => parent.id === newParentId) as unknown as T;\n }\n\n public async removeChild(model: AllParentTypes, predicate: (child: Child) => boolean): Promise<void> {\n checkThrowCallback(predicate);\n const child = this.getAllChildren(model).find(predicate);\n if (!child) {\n return;\n }\n\n await child.close();\n\n if (model instanceof Workspace) {\n\n await model.refreshReference();\n return;\n }\n\n await this.getMyWorkspace(model).refreshReference();\n }\n\n public async maximize(model: SubParentTypes): Promise<void> {\n const { controller, id } = getData(this, model);\n\n await controller.maximizeItem(id);\n\n await this.getMyWorkspace(model.parent).refreshReference();\n }\n\n public async restore(model: SubParentTypes): Promise<void> {\n const { controller, id } = getData(this, model);\n\n await controller.restoreItem(id);\n\n await this.getMyWorkspace(model.parent).refreshReference();\n }\n\n public async close(model: SubParentTypes): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n\n const controller = getData(this, model).controller;\n\n await controller.closeItem(modelData.id);\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async lockContainer(model: SubParentTypes, config?: ContainerLockConfig): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n\n const controller = getData(this, model).controller;\n\n await controller.lockContainer(modelData.id, model.type, config);\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public getAllowDrop(model: SubParentTypes): boolean {\n return getData(this, model).config.allowDrop;\n }\n\n public getAllowDropLeft(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropLeft is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropLeft;\n }\n\n public getAllowDropRight(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropRight is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropRight;\n }\n\n public getAllowDropTop(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropTop is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropTop;\n }\n\n public getAllowDropBottom(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropBottom is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropBottom;\n }\n\n public getAllowDropHeader(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Property allowDropHeader is available only for groups and not on ${model.type} ${model.id}`);\n }\n return privateData.config.allowDropHeader;\n }\n\n public getAllowSplitters(model: Row | Column): boolean {\n const privateData = getData(this, model);\n\n if (privateData.type === \"group\") {\n throw new Error(`Cannot get allow splitters from private data ${privateData.type}`);\n }\n\n return privateData.config.allowSplitters;\n }\n\n public getAllowExtract(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get allow extract from private data ${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.allowExtract;\n }\n\n public getAllowReorder(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get allow extract from private data ${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.allowReorder;\n }\n\n public getShowMaximizeButton(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get show maximize button from private data${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.showMaximizeButton;\n }\n\n public getShowEjectButton(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get show eject button from private data${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.showEjectButton;\n }\n\n public getShowAddWindowButton(model: Group): boolean {\n const privateData = getData(this, model);\n if (privateData.type !== \"group\") {\n throw new Error(`Cannot get add window button from private data${privateData.type} with config ${privateData.type !== \"workspace\" ? privateData.config.type : \"\"}`);\n }\n return privateData.config.showAddWindowButton;\n }\n\n public getMinWidth(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.minWidth;\n }\n\n public getMaxWidth(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.maxWidth;\n }\n\n public getMinHeight(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.minHeight;\n }\n\n public getMaxHeight(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.maxHeight;\n }\n\n public getWidthInPx(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.widthInPx;\n }\n\n public getHeightInPx(model: SubParentTypes): number {\n const privateData = getData(this, model);\n\n return privateData.config.heightInPx;\n }\n\n public getIsPinned(model: Column | Row): boolean {\n const privateData = getData(this, model);\n\n return (privateData.config as RowSnapshotConfig | ColumnSnapshotConfig).isPinned;\n }\n\n public getIsMaximized(model: Column | Row | Group): boolean {\n const privateData = getData(this, model);\n\n return (privateData.config as RowSnapshotConfig | ColumnSnapshotConfig | GroupSnapshotConfig).isMaximized;\n }\n\n public getMaximizationBoundary(model: Column | Row): boolean {\n const privateData = getData(this, model);\n\n return (privateData.config as RowSnapshotConfig | ColumnSnapshotConfig).maximizationBoundary;\n }\n\n public async setHeight(model: Row, height: number): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.resizeItem(id, {\n height\n });\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async setWidth(model: Column, width: number): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.resizeItem(id, {\n width\n });\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async setSize(model: Group, width?: number, height?: number): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.resizeItem(id, {\n width,\n height\n });\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async setMaximizationBoundary(model: Row | Column, config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.setMaximizationBoundary(id, config);\n\n await this.getMyWorkspace(modelData.parent).refreshReference();\n }\n\n public async bundleTo(model: Group, type: \"row\" | \"column\") {\n const modelData = getData(this, model) as ParentPrivateData;\n const { controller, id } = modelData;\n\n await controller.bundleItemTo(type, id);\n }\n\n public async processLocalSubscription(model: SubParentTypes, subscriptionConfig: SubscriptionConfig): Promise<IOConnectWorkspaces.Unsubscribe> {\n return getData(this, model).controller.processLocalSubscription(subscriptionConfig, this.getId(model))\n }\n\n private transformDefinition(type: \"group\" | \"row\" | \"column\", definition?: IOConnectWorkspaces.BoxDefinition | ParentBuilder): IOConnectWorkspaces.BoxDefinition {\n let parentDefinition: IOConnectWorkspaces.BoxDefinition;\n\n if (typeof definition === \"undefined\") {\n parentDefinition = { type, children: [] };\n } else if (definition instanceof ParentBuilder) {\n parentDefinition = definition.serialize();\n } else {\n if (typeof definition.type === \"undefined\") {\n definition.type = type;\n }\n parentDefinition = strictParentDefinitionDecoder.runWithException(definition);\n parentDefinition.children = parentDefinition.children || [];\n }\n\n return parentDefinition;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Workspace } from \"../models/workspace\";\r\nimport { WorkspaceSnapshotResult, WorkspaceCreateConfigProtocol, FrameSummaryResult, AddItemResult, WorkspaceSummariesResult, WorkspaceSummaryResult, SimpleWindowOperationSuccessResult, FrameSnapshotResult, WorkspaceStreamData, GetPlatformFrameIdResult, OperationCheckResult } from \"../types/protocol\";\r\nimport { OPERATIONS } from \"../communication/constants\";\r\nimport { FrameCreateConfig, WorkspaceIoCCreateConfig, WindowCreateConfig, ParentCreateConfig } from \"../types/ioc\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { Bridge } from \"../communication/bridge\";\r\nimport { GDWindow, WindowsAPI, ContextsAPI, LayoutsAPI } from \"../types/glue\";\r\nimport { IOConnectWorkspaces } from \"../../workspaces\";\r\nimport { Frame } from \"../models/frame\";\r\nimport { RefreshChildrenConfig } from \"../types/privateData\";\r\nimport { AllParentTypes, Child, ContainerLockConfig, SubParentTypes } from \"../types/builders\";\r\nimport { PrivateDataManager } from \"../shared/privateDataManager\";\r\nimport { Window } from \"../models/window\";\r\nimport { UnsubscribeFunction } from \"callback-registry\";\r\n\r\nexport class BaseController {\r\n\r\n constructor(\r\n private readonly ioc: IoC,\r\n private readonly windows: WindowsAPI,\r\n private readonly contexts: ContextsAPI,\r\n private readonly layouts: LayoutsAPI,\r\n ) { }\r\n\r\n private get bridge(): Bridge {\r\n return this.ioc.bridge;\r\n }\r\n\r\n private get privateDataManager(): PrivateDataManager {\r\n return this.ioc.privateDataManager;\r\n }\r\n\r\n public checkIsWindowLoaded(windowId: string): boolean {\r\n return (!!windowId) && this.windows.list().some((win) => win.id === windowId);\r\n }\r\n\r\n public async createWorkspace(createConfig: WorkspaceCreateConfigProtocol): Promise<Workspace> {\r\n const snapshot = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.createWorkspace.name, createConfig);\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: snapshot.frameSummary\r\n };\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n return this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n }\r\n\r\n public async createEmptyFrame(definition: IOConnectWorkspaces.EmptyFrameDefinition): Promise<Frame> {\r\n const frameSummary = await this.bridge.send<FrameSummaryResult>(OPERATIONS.createFrame.name, definition);\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n\r\n return this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n }\r\n\r\n public async initFrame(frameId: string, config: IOConnectWorkspaces.FrameInitializationConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.initFrame.name, { frameId, ...config });\r\n }\r\n\r\n public async restoreWorkspace(name: string, options: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<Workspace> {\r\n const snapshot = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.openWorkspace.name, { name, restoreOptions: options });\r\n\r\n const frameSummary = await this.bridge.send<FrameSummaryResult>(OPERATIONS.getFrameSummary.name, { itemId: snapshot.config.frameId });\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n return this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n }\r\n\r\n public async add(type: \"container\" | \"window\", parentId: string, parentType: \"row\" | \"column\" | \"group\" | \"workspace\", definition: IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition): Promise<AddItemResult> {\r\n let operationName: string;\r\n const operationArgs = { definition, parentId, parentType };\r\n\r\n if (type === \"window\") {\r\n operationName = OPERATIONS.addWindow.name;\r\n } else if (type === \"container\") {\r\n operationName = OPERATIONS.addContainer.name;\r\n } else {\r\n throw new Error(`Unrecognized add type: ${type}`);\r\n }\r\n\r\n return await this.bridge.send<AddItemResult>(operationName, operationArgs);\r\n }\r\n\r\n public async getFrame(windowId: string): Promise<Frame> {\r\n const frameSummary = await this.bridge.send<FrameSummaryResult>(OPERATIONS.getFrameSummary.name, { itemId: windowId });\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n return this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n }\r\n\r\n public getFrames(allFrameSummaries: FrameSummaryResult[], predicate?: (frame: Frame) => boolean): Frame[] {\r\n\r\n return allFrameSummaries.reduce<Frame[]>((frames, frameSummary) => {\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: frameSummary\r\n };\r\n const frameToCheck = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n if (!predicate || predicate(frameToCheck)) {\r\n frames.push(frameToCheck);\r\n }\r\n\r\n return frames;\r\n }, []);\r\n }\r\n\r\n public getAllWorkspaceSummaries(...bridgeResults: WorkspaceSummariesResult[]): IOConnectWorkspaces.WorkspaceSummary[] {\r\n\r\n const allSummaries = bridgeResults.reduce<WorkspaceSummaryResult[]>((summaries, summaryResult) => {\r\n summaries.push(...summaryResult.summaries);\r\n return summaries;\r\n }, []);\r\n\r\n return allSummaries.map<IOConnectWorkspaces.WorkspaceSummary>((summary) => {\r\n\r\n return Object.assign(\r\n {},\r\n { id: summary.id, width: summary.config.widthInPx, height: summary.config.heightInPx },\r\n summary.config\r\n );\r\n });\r\n }\r\n\r\n public handleOnSaved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\r\n const wrappedCallback = (layout: IOConnectWorkspaces.WorkspaceLayout): void => {\r\n if (layout.type !== \"Workspace\") {\r\n return;\r\n }\r\n\r\n callback(layout);\r\n };\r\n\r\n const addedUnSub: UnsubscribeFunction = this.layouts.onAdded(wrappedCallback);\r\n const changedUnSub: UnsubscribeFunction = this.layouts.onChanged(wrappedCallback);\r\n\r\n return (): void => {\r\n addedUnSub();\r\n changedUnSub();\r\n };\r\n }\r\n\r\n public handleOnRemoved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\r\n const wrappedCallback = (layout: IOConnectWorkspaces.WorkspaceLayout): void => {\r\n if (layout.type !== \"Workspace\") {\r\n return;\r\n }\r\n\r\n callback(layout);\r\n };\r\n\r\n return this.layouts.onRemoved(wrappedCallback);\r\n }\r\n\r\n public async importLayouts(layouts: IOConnectWorkspaces.WorkspaceLayout[], mode: \"replace\" | \"merge\"): Promise<void> {\r\n await this.layouts.import(layouts, mode);\r\n }\r\n\r\n public async transformStreamPayloadToWorkspace(payload: WorkspaceStreamData): Promise<Workspace> {\r\n const frameConfig: FrameCreateConfig = {\r\n summary: payload.frameSummary\r\n };\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const snapshot = payload.workspaceSnapshot || (await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.getWorkspaceSnapshot.name, { itemId: payload.workspaceSummary.id }));\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n const workspace = this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n\r\n return workspace;\r\n }\r\n\r\n public async fetchWorkspace(itemId: string): Promise<Workspace> {\r\n\r\n const snapshot = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.getWorkspaceSnapshot.name, { itemId });\r\n\r\n const frameConfig: FrameCreateConfig = {\r\n summary: snapshot.frameSummary\r\n };\r\n\r\n const frame = this.ioc.getModel<\"frame\">(\"frame\", frameConfig);\r\n\r\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\r\n\r\n return this.ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\r\n\r\n }\r\n\r\n public async bundleWorkspaceTo(type: \"row\" | \"column\", workspaceId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.bundleWorkspace.name, { type, workspaceId });\r\n }\r\n\r\n public async bundleItemTo(type: \"row\" | \"column\", itemId: string): Promise<void> {\r\n const isSupported = await this.isOperationSupported(OPERATIONS.bundleItem.name);\r\n\r\n if (!isSupported) {\r\n throw new Error(`Operation ${OPERATIONS.bundleItem.name} is not supported. Ensure that you are running the latest version of all packages`);\r\n }\r\n\r\n await this.bridge.send(OPERATIONS.bundleItem.name, { type, itemId });\r\n }\r\n\r\n public getWorkspaceContext(workspaceId: string): Promise<any> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.get(contextName);\r\n }\r\n\r\n public setWorkspaceContext(workspaceId: string, data: any): Promise<void> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.set(contextName, data);\r\n }\r\n\r\n public updateWorkspaceContext(workspaceId: string, data: any): Promise<void> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.update(contextName, data);\r\n }\r\n\r\n public subscribeWorkspaceContextUpdated(workspaceId: string, callback: (data: any) => void): Promise<UnsubscribeFunction> {\r\n const contextName = `___workspace___${workspaceId}`;\r\n return this.contexts.subscribe(contextName, callback);\r\n }\r\n\r\n public async restoreItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.restoreItem.name, { itemId });\r\n }\r\n\r\n public async maximizeItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.maximizeItem.name, { itemId });\r\n }\r\n\r\n public async focusItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.focusItem.name, { itemId });\r\n }\r\n\r\n public async closeItem(itemId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.closeItem.name, { itemId });\r\n }\r\n\r\n public async resizeItem(itemId: string, config: IOConnectWorkspaces.ResizeConfig): Promise<void> {\r\n await this.bridge.send(OPERATIONS.resizeItem.name, Object.assign({}, { itemId }, config));\r\n }\r\n\r\n public async setMaximizationBoundary(itemId: string, config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\r\n await this.bridge.send(OPERATIONS.setMaximizationBoundary.name, Object.assign({}, { itemId }, config));\r\n }\r\n\r\n public async showWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.showLoadingAnimation.name, { itemId: workspaceId, type: \"workspace\" });\r\n }\r\n\r\n public async hideWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.hideLoadingAnimation.name, { itemId: workspaceId, type: \"workspace\" });\r\n }\r\n\r\n public async moveFrame(itemId: string, config: IOConnectWorkspaces.MoveConfig): Promise<void> {\r\n await this.bridge.send(OPERATIONS.moveFrame.name, Object.assign({}, { itemId }, config));\r\n }\r\n\r\n public getGDWindow(itemId: string): GDWindow {\r\n return this.windows.list().find((gdWindow) => gdWindow.id === itemId);\r\n }\r\n\r\n public async forceLoadWindow(itemId: string): Promise<string> {\r\n const controlResult = await this.bridge.send<SimpleWindowOperationSuccessResult>(OPERATIONS.forceLoadWindow.name, { itemId });\r\n\r\n return controlResult.windowId;\r\n }\r\n\r\n public async ejectWindow(itemId: string): Promise<SimpleWindowOperationSuccessResult> {\r\n return await this.bridge.send<SimpleWindowOperationSuccessResult>(OPERATIONS.ejectWindow.name, { itemId });\r\n }\r\n\r\n public async moveWindowTo(itemId: string, newParentId: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.moveWindowTo.name, { itemId, containerId: newParentId });\r\n }\r\n\r\n public async getSnapshot(itemId: string, type: \"workspace\" | \"frame\"): Promise<WorkspaceSnapshotResult | FrameSnapshotResult> {\r\n let result: WorkspaceSnapshotResult | FrameSnapshotResult;\r\n\r\n if (type === \"workspace\") {\r\n result = await this.bridge.send<WorkspaceSnapshotResult>(OPERATIONS.getWorkspaceSnapshot.name, { itemId });\r\n } else if (type === \"frame\") {\r\n result = await this.bridge.send<FrameSnapshotResult>(OPERATIONS.getFrameSnapshot.name, { itemId });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public async setItemTitle(itemId: string, title: string): Promise<void> {\r\n await this.bridge.send(OPERATIONS.setItemTitle.name, { itemId, title });\r\n }\r\n\r\n public refreshChildren(config: RefreshChildrenConfig): Child[] {\r\n const { parent, children, existingChildren, workspace } = config;\r\n if (parent instanceof Window || (parent as IOConnectWorkspaces.WorkspaceWindow).type === \"window\") {\r\n return;\r\n }\r\n\r\n const newChildren = children.map((newChildSnapshot) => {\r\n let childToAdd = existingChildren.find((child) => {\r\n return child.type === \"window\" ? child.elementId === newChildSnapshot.id : child.id === newChildSnapshot.id;\r\n });\r\n\r\n if (childToAdd) {\r\n this.privateDataManager.remapChild(childToAdd, {\r\n parent: parent as AllParentTypes,\r\n children: [],\r\n config: newChildSnapshot.config\r\n });\r\n } else {\r\n let createConfig: WindowCreateConfig | ParentCreateConfig;\r\n if (newChildSnapshot.type === \"window\") {\r\n createConfig = {\r\n id: newChildSnapshot.id,\r\n parent: parent as AllParentTypes,\r\n frame: workspace.frame,\r\n workspace,\r\n config: newChildSnapshot.config,\r\n } as WindowCreateConfig;\r\n } else {\r\n createConfig = {\r\n id: newChildSnapshot.id,\r\n parent: parent as AllParentTypes,\r\n frame: workspace.frame,\r\n workspace,\r\n config: newChildSnapshot.config,\r\n children: []\r\n } as ParentCreateConfig;\r\n }\r\n\r\n childToAdd = this.ioc.getModel<\"child\">(newChildSnapshot.type, createConfig);\r\n }\r\n\r\n if (newChildSnapshot.type !== \"window\") {\r\n this.refreshChildren({\r\n workspace, existingChildren,\r\n children: newChildSnapshot.children,\r\n parent: childToAdd\r\n });\r\n }\r\n\r\n return childToAdd;\r\n });\r\n\r\n if (parent instanceof Workspace) {\r\n return newChildren;\r\n } else {\r\n this.privateDataManager.remapChild(parent as SubParentTypes, { children: newChildren });\r\n return newChildren;\r\n }\r\n }\r\n\r\n public iterateFindChild(children: Child[], predicate: (child: Child) => boolean): Child {\r\n let foundChild = children.find((child) => predicate(child));\r\n\r\n if (foundChild) {\r\n return foundChild;\r\n }\r\n\r\n children.some((child) => {\r\n if (child instanceof Window) {\r\n return false;\r\n }\r\n\r\n foundChild = this.iterateFindChild((child as SubParentTypes).children, predicate);\r\n\r\n if (foundChild) {\r\n return true;\r\n }\r\n });\r\n\r\n return foundChild;\r\n }\r\n\r\n public iterateFilterChildren(children: Child[], predicate: (child: Child) => boolean): Child[] {\r\n const foundChildren = children.filter((child) => predicate(child));\r\n\r\n const grandChildren = children.reduce<Child[]>((innerFound, child) => {\r\n if (child instanceof Window) {\r\n return innerFound;\r\n }\r\n\r\n innerFound.push(...this.iterateFilterChildren((child as SubParentTypes).children, predicate));\r\n\r\n return innerFound;\r\n }, []);\r\n\r\n foundChildren.push(...grandChildren);\r\n\r\n return foundChildren;\r\n }\r\n\r\n public notifyWindowAdded(windowId: string): Promise<void> {\r\n return new Promise((resolve) => {\r\n\r\n const alreadyPresent: boolean = this.windows.list().some((win) => win.id === windowId);\r\n\r\n if (alreadyPresent) {\r\n return resolve();\r\n }\r\n\r\n const unsubscribe: UnsubscribeFunction = this.windows.onWindowAdded((win) => {\r\n\r\n if (win.id !== windowId) {\r\n return;\r\n }\r\n\r\n if (unsubscribe) {\r\n unsubscribe();\r\n }\r\n\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n public async hibernateWorkspace(workspaceId: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.hibernateWorkspace.name, { workspaceId });\r\n }\r\n\r\n public async resumeWorkspace(workspaceId: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.resumeWorkspace.name, { workspaceId });\r\n }\r\n\r\n public async lockWorkspace(workspaceId: string, config?: IOConnectWorkspaces.WorkspaceLockConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.lockWorkspace.name, { workspaceId, config });\r\n }\r\n\r\n public async lockWindow(windowPlacementId: string, config?: IOConnectWorkspaces.WorkspaceWindowLockConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.lockWindow.name, { windowPlacementId, config });\r\n }\r\n\r\n public async lockContainer(itemId: string, type: SubParentTypes[\"type\"], config?: ContainerLockConfig): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.lockContainer.name, { itemId, type, config });\r\n }\r\n\r\n public async pinWorkspace(workspaceId: string, icon?: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.pinWorkspace.name, { workspaceId, icon });\r\n }\r\n\r\n public async unpinWorkspace(workspaceId: string): Promise<void> {\r\n await this.bridge.send<void>(OPERATIONS.unpinWorkspace.name, { workspaceId });\r\n }\r\n\r\n public async getWorkspaceIcon(workspaceId: string): Promise<string> {\r\n const result = await this.bridge.send<{ icon: string }>(OPERATIONS.getWorkspaceIcon.name, { workspaceId });\r\n return result.icon;\r\n }\r\n\r\n public setWorkspaceIcon(workspaceId: string, icon: string): Promise<void> {\r\n return this.bridge.send<void>(OPERATIONS.setWorkspaceIcon.name, { workspaceId, icon });\r\n }\r\n\r\n public async getPlatformFrameId(): Promise<GetPlatformFrameIdResult> {\r\n try {\r\n const result = await this.bridge.send<GetPlatformFrameIdResult>(OPERATIONS.getPlatformFrameId.name, {});\r\n\r\n return result;\r\n } catch (error) {\r\n return {}\r\n }\r\n }\r\n\r\n public async isOperationSupported(operation: string): Promise<OperationCheckResult> {\r\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\r\n\r\n if (desktopGlobal) {\r\n // operation check is not supported in Glue42Desktop\r\n return { isSupported: true };\r\n }\r\n return await this.bridge.send<OperationCheckResult>(OPERATIONS.operationCheck.name, { operation });\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Bridge } from \"../communication/bridge\";\nimport { IsWindowInSwimlaneResult, WorkspaceCreateConfigProtocol, WorkspaceSnapshotResult, FrameSummariesResult, WorkspaceSummariesResult, LayoutSummariesResult, ExportedLayoutsResult, FrameSnapshotResult, AddItemResult, WindowStreamData, FrameStateResult, FrameBoundsResult, WorkspaceStreamData } from \"../types/protocol\";\nimport { OPERATIONS } from \"../communication/constants\";\nimport { SubscriptionConfig, WorkspaceEventType, WorkspaceEventAction } from \"../types/subscription\";\nimport { Workspace } from \"../models/workspace\";\nimport { Frame } from \"../models/frame\";\nimport { Child, ContainerLockConfig, SubParentTypes } from \"../types/builders\";\nimport { RefreshChildrenConfig } from \"../types/privateData\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspacesController } from \"../types/controller\";\nimport { GDWindow } from \"../types/glue\";\nimport { BaseController } from \"./base\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { ShortcutsController } from \"./shortcuts\";\n\nexport class MainController implements WorkspacesController {\n\n constructor(\n private readonly bridge: Bridge,\n private readonly base: BaseController,\n private readonly shortcutsController: ShortcutsController\n ) { }\n\n public checkIsWindowLoaded(windowId: string): boolean {\n return this.base.checkIsWindowLoaded(windowId);\n }\n\n public async checkIsInSwimlane(windowId: string): Promise<boolean> {\n\n const controlResult = await this.bridge.send<IsWindowInSwimlaneResult>(OPERATIONS.isWindowInWorkspace.name, { itemId: windowId });\n\n return controlResult.inWorkspace;\n }\n\n public async createWorkspace(definition: IOConnectWorkspaces.WorkspaceDefinition, saveConfig?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<Workspace> {\n const createConfig: WorkspaceCreateConfigProtocol = Object.assign({}, definition, { saveConfig });\n\n return await this.base.createWorkspace(createConfig);\n }\n\n public async createEmptyFrame(definition: IOConnectWorkspaces.EmptyFrameDefinition): Promise<Frame> {\n return await this.base.createEmptyFrame(definition);\n }\n\n public async initFrame(frameId: string, config: IOConnectWorkspaces.FrameInitializationConfig): Promise<void> {\n return this.base.initFrame(frameId, config);\n }\n\n public async restoreWorkspace(name: string, options?: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<Workspace> {\n const allLayouts = await this.getLayoutSummaries();\n\n const layoutExists = allLayouts.some((summary) => summary.name === name);\n\n if (!layoutExists) {\n throw new Error(`This layout: ${name} cannot be restored, because it doesn't exist.`);\n }\n\n if (options?.frameId) {\n const allFrameSummaries = await this.bridge.send<FrameSummariesResult>(OPERATIONS.getAllFramesSummaries.name);\n\n const foundMatchingFrame = allFrameSummaries.summaries.some((summary) => summary.id === options.frameId);\n\n if (!foundMatchingFrame) {\n throw new Error(`Cannot reuse the frame with id: ${options.frameId}, because there is no frame with that ID found`);\n }\n }\n\n return await this.base.restoreWorkspace(name, options);\n }\n\n public async add(type: \"container\" | \"window\", parentId: string, parentType: \"row\" | \"column\" | \"group\" | \"workspace\", definition: IOConnectWorkspaces.WorkspaceWindowDefinition | IOConnectWorkspaces.BoxDefinition): Promise<AddItemResult> {\n return await this.base.add(type, parentId, parentType, definition);\n }\n\n public processLocalSubscription(config: SubscriptionConfig, levelId: string): Promise<IOConnectWorkspaces.Unsubscribe> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n return desktopGlobal ?\n this.handleEnterpriseLocalSubscription(config, levelId) :\n this.handleCoreLocalSubscription(config, levelId);\n }\n\n public processGlobalSubscription(callback: (callbackData: unknown) => void, eventType: WorkspaceEventType, action: WorkspaceEventAction): Promise<IOConnectWorkspaces.Unsubscribe> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n return desktopGlobal ?\n this.handleEnterpriseGlobalSubscription(callback, eventType, action) :\n this.handleCoreGlobalSubscription(callback, eventType, action);\n }\n\n public async getFrame(selector: { windowId?: string; predicate?: (frame: Frame) => boolean }): Promise<Frame> {\n\n if (selector.windowId) {\n return await this.base.getFrame(selector.windowId);\n }\n\n if (selector.predicate) {\n return (await this.getFrames(selector.predicate))[0];\n }\n\n throw new Error(`The provided selector is not valid: ${JSON.stringify(selector)}`);\n }\n\n public async getFrames(predicate?: (frame: Frame) => boolean): Promise<Frame[]> {\n\n const allFrameSummaries = await this.bridge.send<FrameSummariesResult>(OPERATIONS.getAllFramesSummaries.name);\n\n return this.base.getFrames(allFrameSummaries.summaries, predicate);\n }\n\n public getWorkspaceById(workspaceId: string): Promise<Workspace> {\n return this.base.fetchWorkspace(workspaceId);\n }\n\n public async getWorkspaceByWindowId(itemId: string): Promise<Workspace> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (!desktopGlobal) {\n // workspace-ui-core doesn't accept an itemId for getWorkspaceSnapshot, but GD does and getWorkspaceSnapshot is significantly faster\n return (await this.getWorkspaces((wsp) => !!wsp.getWindow((w) => w.id === itemId)))[0];\n }\n return this.base.fetchWorkspace(itemId);\n }\n\n public transformStreamPayloadToWorkspace(payload: WorkspaceStreamData): Promise<Workspace> {\n return this.base.transformStreamPayloadToWorkspace(payload);\n }\n\n public async getWorkspace(predicate: (workspace: Workspace) => boolean): Promise<Workspace> {\n let foundWorkspace: Workspace;\n\n await this.iterateWorkspaces((wsp, end) => {\n if (predicate(wsp)) {\n foundWorkspace = wsp;\n end();\n }\n });\n\n return foundWorkspace;\n }\n\n public async getWorkspaces(predicate?: (workspace: Workspace) => boolean): Promise<Workspace[]> {\n const matchingWorkspaces: Workspace[] = [] as Workspace[];\n\n await this.iterateWorkspaces((wsp) => {\n if (!predicate || predicate(wsp)) {\n matchingWorkspaces.push(wsp);\n }\n });\n\n return matchingWorkspaces;\n }\n\n public async getWorkspacesByFrameId(frameId: string): Promise<Workspace[]> {\n const workspaceSummaries = await this.getAllWorkspaceSummaries();\n const summariesForFrame = workspaceSummaries.filter((s) => s.frameId === frameId);\n\n const workspacesForFrame = await Promise.all(summariesForFrame.map((summary) => {\n return this.base.fetchWorkspace(summary.id);\n }));\n\n return workspacesForFrame;\n }\n\n public async getAllWorkspaceSummaries(): Promise<IOConnectWorkspaces.WorkspaceSummary[]> {\n\n const allSummariesResult = await this.bridge.send<WorkspaceSummariesResult>(OPERATIONS.getAllWorkspacesSummaries.name, {});\n\n return this.base.getAllWorkspaceSummaries(allSummariesResult);\n }\n\n public async getWindow(predicate: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => boolean): Promise<IOConnectWorkspaces.WorkspaceWindow> {\n let resultWindow: IOConnectWorkspaces.WorkspaceWindow;\n\n await this.iterateWorkspaces((wsp, end) => {\n const foundWindow = wsp.getWindow(predicate);\n\n if (foundWindow) {\n resultWindow = foundWindow;\n end();\n }\n });\n\n return resultWindow;\n }\n\n public async getParent(predicate: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): Promise<IOConnectWorkspaces.WorkspaceBox> {\n let resultParent: IOConnectWorkspaces.WorkspaceBox;\n\n await this.iterateWorkspaces((wsp, end) => {\n\n const foundParent = wsp.getBox(predicate);\n\n if (foundParent) {\n resultParent = foundParent;\n end();\n }\n });\n\n return resultParent;\n }\n\n public async getLayoutSummaries(): Promise<IOConnectWorkspaces.WorkspaceLayoutSummary[]> {\n const allLayouts = await this.bridge.send<LayoutSummariesResult>(OPERATIONS.getAllLayoutsSummaries.name);\n return allLayouts.summaries;\n }\n\n public async deleteLayout(name: string): Promise<void> {\n await this.bridge.send(OPERATIONS.deleteLayout.name, { name });\n }\n\n public async exportLayout(predicate?: (layout: IOConnectWorkspaces.WorkspaceLayout) => boolean): Promise<IOConnectWorkspaces.WorkspaceLayout[]> {\n const allLayoutsResult = await this.bridge.send<ExportedLayoutsResult>(OPERATIONS.exportAllLayouts.name);\n return allLayoutsResult.layouts.reduce<IOConnectWorkspaces.WorkspaceLayout[]>((matchingLayouts, layout) => {\n\n if (!predicate || predicate(layout)) {\n matchingLayouts.push(layout);\n }\n\n return matchingLayouts;\n }, []);\n }\n\n public async saveLayout(config: IOConnectWorkspaces.WorkspaceLayoutSaveConfig): Promise<IOConnectWorkspaces.WorkspaceLayout> {\n return await this.bridge.send(OPERATIONS.saveLayout.name, config);\n }\n\n public async importLayouts(layouts: IOConnectWorkspaces.WorkspaceLayout[], mode: \"replace\" | \"merge\"): Promise<void> {\n const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;\n\n if (desktopGlobal) {\n try {\n // ensuring backwards compatibility\n await this.bridge.send(OPERATIONS.importLayouts.name, { layouts, mode });\n } catch (error) {\n // this is a soft-reversal to handle an import issue with GD\n await Promise.all(layouts.map((layout) => this.bridge.send(OPERATIONS.importLayout.name, { layout, mode })));\n }\n return;\n }\n\n await this.base.importLayouts(layouts, mode);\n }\n\n public handleOnSaved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\n return this.base.handleOnSaved(callback);\n }\n\n public handleOnRemoved(callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): UnsubscribeFunction {\n return this.base.handleOnRemoved(callback);\n }\n\n public async bundleWorkspaceTo(type: \"row\" | \"column\", workspaceId: string): Promise<void> {\n return await this.base.bundleWorkspaceTo(type, workspaceId);\n }\n\n public async bundleItemTo(type: \"row\" | \"column\", id: string): Promise<void> {\n return await this.base.bundleItemTo(type, id);\n }\n\n public getWorkspaceContext(workspaceId: string): Promise<any> {\n return this.base.getWorkspaceContext(workspaceId);\n }\n\n public setWorkspaceContext(workspaceId: string, data: any): Promise<void> {\n return this.base.setWorkspaceContext(workspaceId, data);\n }\n\n public updateWorkspaceContext(workspaceId: string, data: any): Promise<void> {\n return this.base.updateWorkspaceContext(workspaceId, data);\n }\n\n public subscribeWorkspaceContextUpdated(workspaceId: string, callback: (data: any) => void): Promise<import(\"callback-registry\").UnsubscribeFunction> {\n return this.base.subscribeWorkspaceContextUpdated(workspaceId, callback);\n }\n\n public async restoreItem(itemId: string): Promise<void> {\n return await this.base.restoreItem(itemId);\n }\n\n public async maximizeItem(itemId: string): Promise<void> {\n return await this.base.maximizeItem(itemId);\n }\n\n public async focusItem(itemId: string): Promise<void> {\n return await this.base.focusItem(itemId);\n }\n\n public async changeFrameState(frameId: string, state: IOConnectWorkspaces.FrameState): Promise<void> {\n await this.bridge.send<void>(OPERATIONS.changeFrameState.name, { frameId, requestedState: state });\n }\n\n public async getFrameBounds(frameId: string): Promise<IOConnectWorkspaces.FrameBounds> {\n const frameResult = await this.bridge.send<FrameBoundsResult>(OPERATIONS.getFrameBounds.name, { itemId: frameId });\n return frameResult.bounds;\n }\n\n public async getFrameState(frameId: string): Promise<IOConnectWorkspaces.FrameState> {\n const frameResult = await this.bridge.send<FrameStateResult>(OPERATIONS.getFrameState.name, { itemId: frameId });\n return frameResult.state;\n }\n\n public async closeItem(itemId: string): Promise<void> {\n return await this.base.closeItem(itemId);\n }\n\n public async resizeItem(itemId: string, config: IOConnectWorkspaces.ResizeConfig): Promise<void> {\n return await this.base.resizeItem(itemId, config);\n }\n\n public async setMaximizationBoundary(itemId: string, config: IOConnectWorkspaces.SetMaximizationBoundaryConfig): Promise<void> {\n return await this.base.setMaximizationBoundary(itemId, config);\n }\n\n public async showWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\n return await this.base.showWorkspaceLoadingAnimation(workspaceId);\n }\n\n public async hideWorkspaceLoadingAnimation(workspaceId: string): Promise<void> {\n return await this.base.hideWorkspaceLoadingAnimation(workspaceId);\n }\n\n public async moveFrame(itemId: string, config: IOConnectWorkspaces.MoveConfig): Promise<void> {\n return await this.base.moveFrame(itemId, config);\n }\n\n public getGDWindow(itemId: string): GDWindow {\n return this.base.getGDWindow(itemId);\n }\n\n public async forceLoadWindow(itemId: string): Promise<string> {\n const windowId = await this.base.forceLoadWindow(itemId);\n\n await this.base.notifyWindowAdded(windowId);\n\n return windowId;\n }\n\n public async ejectWindow(itemId: string): Promise<string> {\n const windowId: string = (await this.base.ejectWindow(itemId)).windowId;\n\n await this.base.notifyWindowAdded(windowId);\n\n return windowId;\n }\n\n public async moveWindowTo(itemId: string, newParentId: string): Promise<void> {\n return await this.base.moveWindowTo(itemId, newParentId);\n }\n\n public async getSnapshot(itemId: string, type: \"workspace\"): Promise<WorkspaceSnapshotResult>\n public async getSnapshot(itemId: string, type: \"frame\"): Promise<FrameSnapshotResult>\n public async getSnapshot(itemId: string, type: \"workspace\" | \"frame\"): Promise<WorkspaceSnapshotResult | FrameSnapshotResult> {\n return await this.base.getSnapshot(itemId, type);\n }\n\n public async setItemTitle(itemId: string, title: string): Promise<void> {\n return await this.base.setItemTitle(itemId, title);\n }\n\n public flatChildren(children: Child[]): Child[] {\n return children.reduce<Child[]>((soFar, child) => {\n\n soFar.push(child);\n\n if (child.type !== \"window\") {\n soFar.push(...this.flatChildren(child.children));\n }\n\n return soFar;\n }, []);\n }\n\n public refreshChildren(config: RefreshChildrenConfig): Child[] {\n return this.base.refreshChildren(config);\n }\n\n public iterateFindChild(children: Child[], predicate: (child: Child) => boolean): Child {\n return this.base.iterateFindChild(children, predicate);\n }\n\n public iterateFilterChildren(children: Child[], predicate: (child: Child) => boolean): Child[] {\n return this.base.iterateFilterChildren(children, predicate);\n }\n\n public hibernateWorkspace(workspaceId: string): Promise<void> {\n return this.base.hibernateWorkspace(workspaceId);\n }\n\n public resumeWorkspace(workspaceId: string): Promise<void> {\n return this.base.resumeWorkspace(workspaceId);\n }\n\n public lockWorkspace(workspaceId: string, config?: IOConnectWorkspaces.WorkspaceLockConfig): Promise<void> {\n return this.base.lockWorkspace(workspaceId, config);\n }\n\n public lockWindow(windowPlacementId: string, config?: IOConnectWorkspaces.WorkspaceWindowLockConfig): Promise<void> {\n return this.base.lockWindow(windowPlacementId, config);\n }\n\n public lockContainer(itemId: string, type: SubParentTypes[\"type\"], config?: ContainerLockConfig): Promise<void> {\n return this.base.lockContainer(itemId, type, config);\n }\n\n public pinWorkspace(workspaceId: string, icon?: string): Promise<void> {\n return this.base.pinWorkspace(workspaceId, icon);\n }\n\n public unpinWorkspace(workspaceId: string): Promise<void> {\n return this.base.unpinWorkspace(workspaceId);\n }\n\n public getWorkspaceIcon(workspaceId: string): Promise<string> {\n return this.base.getWorkspaceIcon(workspaceId);\n }\n\n public setWorkspaceIcon(workspaceId: string, icon: string): Promise<void> {\n return this.base.setWorkspaceIcon(workspaceId, icon);\n }\n\n public async getFrameConstraints(frameId: string): Promise<IOConnectWorkspaces.FrameConstraints> {\n const frameSnapshot = await this.getSnapshot(frameId, \"frame\");\n\n return {\n minWidth: frameSnapshot.config.minWidth,\n maxWidth: frameSnapshot.config.maxWidth,\n minHeight: frameSnapshot.config.minHeight,\n maxHeight: frameSnapshot.config.maxHeight,\n };\n }\n\n public registerShortcut(shortcut: string, frameId: string, callback: () => void): Promise<UnsubscribeFunction> {\n return this.shortcutsController.registerShortcut(shortcut, frameId, callback);\n }\n\n public getPlatformFrameId(): Promise<{id?: string}> {\n return this.base.getPlatformFrameId();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCoreLocalSubscription(config: SubscriptionConfig, levelId: string): Promise<IOConnectWorkspaces.Unsubscribe> {\n await this.bridge.createCoreEventSubscription();\n\n config.scopeId = config.scopeId || levelId;\n\n if (config.eventType === \"window\" && config.action === \"loaded\") {\n const originalCB = config.callback;\n\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n\n originalCB(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.handleCoreSubscription(config);\n }\n\n private handleEnterpriseLocalSubscription(config: SubscriptionConfig, levelId: string): Promise<IOConnectWorkspaces.Unsubscribe> {\n config.scopeId = config.scopeId || levelId;\n\n if (config.eventType === \"window\" && config.action === \"loaded\") {\n const originalCB = config.callback;\n\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n originalCB(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.subscribe(config);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCoreGlobalSubscription(callback: (callbackData: unknown) => void, eventType: WorkspaceEventType, action: WorkspaceEventAction): Promise<IOConnectWorkspaces.Unsubscribe> {\n await this.bridge.createCoreEventSubscription();\n\n const config: SubscriptionConfig = {\n eventType, callback, action,\n scope: \"global\",\n };\n\n if (eventType === \"window\" && action === \"loaded\") {\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n\n callback(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.handleCoreSubscription(config);\n }\n\n private handleEnterpriseGlobalSubscription(callback: (callbackData: unknown) => void, eventType: WorkspaceEventType, action: WorkspaceEventAction): Promise<IOConnectWorkspaces.Unsubscribe> {\n const config: SubscriptionConfig = {\n eventType, callback, action,\n scope: \"global\",\n };\n\n if (eventType === \"window\" && action === \"loaded\") {\n const wrappedCB = async (callbackData: WindowStreamData): Promise<void> => {\n\n await this.base.notifyWindowAdded(callbackData.windowSummary.config.windowId);\n\n callback(callbackData);\n };\n\n config.callback = wrappedCB;\n }\n\n return this.bridge.subscribe(config);\n }\n\n private async iterateWorkspaces(callback: (workspace: Workspace, end: () => void) => void): Promise<void> {\n let ended = false;\n\n const end = (): void => { ended = true; };\n\n const workspaceSummaries = await this.getAllWorkspaceSummaries();\n\n for (const summary of workspaceSummaries) {\n if (ended) {\n return;\n }\n\n const wsp = await this.base.fetchWorkspace(summary.id);\n\n callback(wsp, end);\n }\n }\n}\n","import { UnsubscribeFunction } from \"callback-registry\";\r\nimport { Bridge } from \"../communication/bridge\";\r\nimport { CLIENT_OPERATIONS, OPERATIONS } from \"../communication/constants\";\r\nimport CallbackRegistry from \"callback-registry\";\r\n\r\n\r\nexport class ShortcutsController {\r\n private _shortcuts = CallbackRegistry();\r\n constructor(\r\n private readonly bridge: Bridge,\r\n ) {\r\n this.bridge.onOperation((payload, caller) => {\r\n if (payload.operation === CLIENT_OPERATIONS.shortcutClicked.name) {\r\n const data = payload.data;\r\n this._shortcuts.execute(`${data.frameId}-${data.shortcut}`);\r\n }\r\n })\r\n }\r\n\r\n public async registerShortcut(shortcut: string, frameId: string, callback: () => void): Promise<UnsubscribeFunction> {\r\n await this.bridge.send<void>(OPERATIONS.registerShortcut.name, { shortcut, frameId });\r\n const un = this._shortcuts.add(`${frameId}-${shortcut}`, callback);\r\n return () => {\r\n un();\r\n this.bridge.send<void>(OPERATIONS.unregisterShortcut.name, { shortcut, frameId });\r\n }\r\n }\r\n}\r\n","/*eslint indent: [2, 4, {\"SwitchCase\": 1}]*/\nimport CallbackFactory from \"callback-registry\";\nimport { Bridge } from \"../communication/bridge\";\nimport { InteropTransport } from \"../communication/interop-transport\";\nimport { BaseBuilder } from \"../builders/baseBuilder\";\nimport { ParentBuilder } from \"../builders/parentBuilder\";\nimport { WorkspaceBuilder } from \"../builders/workspaceBuilder\";\nimport { ModelMaps, ModelTypes, FramePrivateData, WindowPrivateData, WorkspacePrivateData, ParentPrivateData } from \"../types/privateData\";\nimport { PrivateDataManager } from \"./privateDataManager\";\nimport { FrameCreateConfig, ModelCreateConfig, WindowCreateConfig, WorkspaceIoCCreateConfig, ParentCreateConfig } from \"../types/ioc\";\nimport { Frame } from \"../models/frame\";\nimport { Window } from \"../models/window\";\nimport { Workspace } from \"../models/workspace\";\nimport { ChildSnapshotResult } from \"../types/protocol\";\nimport { AllParentTypes, Child } from \"../types/builders\";\nimport { Row } from \"../models/row\";\nimport { Column } from \"../models/column\";\nimport { Group } from \"../models/group\";\nimport { Base } from \"../models/base/base\";\nimport { IOConnectWorkspaces } from \"../../workspaces\";\nimport { WorkspacesController } from \"../types/controller\";\nimport { InteropAPI, WindowsAPI, LayoutsAPI, ContextsAPI } from \"../types/glue\";\nimport { BaseController } from \"../controllers/base\";\nimport { MainController } from \"../controllers/main\";\nimport { ShortcutsController } from \"../controllers/shortcuts\";\n\nexport class IoC {\n\n private _controllerInstance: WorkspacesController;\n private _bridgeInstance: Bridge;\n private _transportInstance: InteropTransport;\n private _privateDataManagerInstance: PrivateDataManager;\n private _parentBaseInstance: Base;\n private _baseController: BaseController;\n private _shortcutsController: ShortcutsController;\n\n constructor(\n private readonly agm: InteropAPI,\n private readonly windows: WindowsAPI,\n private readonly layouts: LayoutsAPI,\n private readonly contexts: ContextsAPI\n ) { }\n\n public get baseController(): BaseController {\n if (!this._baseController) {\n this._baseController = new BaseController(this, this.windows, this.contexts, this.layouts);\n }\n\n return this._baseController;\n }\n\n public get controller(): WorkspacesController {\n if (!this._controllerInstance) {\n this._controllerInstance = new MainController(this.bridge, this.baseController, this.shortcutsController);\n }\n return this._controllerInstance;\n }\n\n public get shortcutsController(): ShortcutsController {\n if (!this._shortcutsController) {\n this._shortcutsController = new ShortcutsController(this.bridge);\n }\n return this._shortcutsController;\n }\n\n public get bridge(): Bridge {\n if (!this._bridgeInstance) {\n this._bridgeInstance = new Bridge(this.transport, CallbackFactory());\n }\n return this._bridgeInstance;\n }\n\n public get transport(): InteropTransport {\n\n if (!this._transportInstance) {\n this._transportInstance = new InteropTransport(this.agm, CallbackFactory());\n }\n\n return this._transportInstance;\n }\n\n public get privateDataManager(): PrivateDataManager {\n if (!this._privateDataManagerInstance) {\n this._privateDataManagerInstance = new PrivateDataManager();\n }\n return this._privateDataManagerInstance;\n }\n\n public get parentBase(): Base {\n if (!this._parentBaseInstance) {\n this._parentBaseInstance = new Base(this.privateDataManager);\n }\n return this._parentBaseInstance;\n }\n\n public async initiate(actualWindowId: string): Promise<void> {\n await this.transport.initiate(actualWindowId);\n }\n\n public getModel<T extends ModelTypes>(type: ModelTypes, createConfig: ModelCreateConfig): ModelMaps[T] {\n switch (type) {\n case \"frame\": {\n const newFrame = new Frame(this.privateDataManager);\n\n const { summary } = createConfig as FrameCreateConfig;\n\n const frameData: FramePrivateData = { summary, controller: this.controller };\n\n this.privateDataManager.setFrameData(newFrame, frameData);\n\n return newFrame as ModelMaps[T];\n }\n case \"window\": {\n const { id, parent, frame, workspace, config } = createConfig as WindowCreateConfig;\n\n const windowPrivateData: WindowPrivateData = {\n type: \"window\",\n controller: this.controller,\n config, id, parent, frame, workspace\n };\n\n const newWindow = new Window(this.privateDataManager);\n\n this.privateDataManager.setWindowData(newWindow, windowPrivateData);\n\n return newWindow as ModelMaps[T];\n }\n case \"row\":\n case \"column\":\n case \"group\": {\n const { id, children, parent, frame, workspace, config } = createConfig as ParentCreateConfig;\n\n const newParent = type === \"column\" ? new Column(this.parentBase) :\n type === \"row\" ? new Row(this.parentBase) : new Group(this.parentBase);\n\n const builtChildren = this.buildChildren(children, frame, workspace, newParent);\n\n const parentPrivateData = {\n id, parent, frame, workspace,\n config,\n type,\n controller: this.controller,\n children: builtChildren,\n };\n\n this.privateDataManager.setParentData(newParent, parentPrivateData as ParentPrivateData);\n\n return newParent as ModelMaps[T];\n }\n case \"workspace\": {\n const { snapshot, frame } = createConfig as WorkspaceIoCCreateConfig;\n\n const newWorkspace = new Workspace(this.privateDataManager);\n\n const children = this.buildChildren(snapshot.children, frame, newWorkspace, newWorkspace);\n\n const workspacePrivateData: WorkspacePrivateData = {\n id: snapshot.id,\n type: \"workspace\",\n config: snapshot.config,\n base: this.parentBase,\n controller: this.controller,\n children, frame, ioc: this\n };\n\n this.privateDataManager.setWorkspaceData(newWorkspace, workspacePrivateData);\n return newWorkspace as ModelMaps[T];\n }\n default: throw new Error(`Unrecognized type: ${type}`);\n }\n }\n\n public getBuilder(config: IOConnectWorkspaces.BuilderConfig): WorkspaceBuilder | ParentBuilder {\n config.definition = config.definition || {};\n\n if (!Array.isArray(config.definition.children)) {\n config.definition.children = [];\n }\n\n const baseBuilder = new BaseBuilder(this.getBuilder.bind(this));\n\n switch (config.type) {\n case \"workspace\": {\n return new WorkspaceBuilder(config.definition as IOConnectWorkspaces.WorkspaceDefinition, baseBuilder, this.controller);\n }\n case \"row\":\n case \"column\":\n case \"group\": {\n (config.definition as IOConnectWorkspaces.BoxDefinition).type = config.type;\n return new ParentBuilder(config.definition as IOConnectWorkspaces.BoxDefinition, baseBuilder);\n }\n default: throw new Error(`Unexpected Builder creation error, provided config: ${JSON.stringify(config)}`);\n }\n }\n\n private buildChildren(children: ChildSnapshotResult[], frame: Frame, workspace: IOConnectWorkspaces.Workspace, parent: AllParentTypes): Child[] {\n return children.map<Child>((child) => {\n switch (child.type) {\n case \"window\": return this.getModel<\"window\">(\"window\", {\n id: child.id,\n config: child.config,\n frame, workspace, parent\n } as WindowCreateConfig);\n case \"column\": return this.getModel<\"column\">(child.type, {\n id: child.id,\n config: child.config,\n children: child.children,\n frame, workspace, parent\n } as ParentCreateConfig);\n case \"row\": return this.getModel<\"row\">(child.type, {\n id: child.id,\n config: child.config,\n children: child.children,\n frame, workspace, parent\n } as ParentCreateConfig);\n case \"group\": return this.getModel<\"group\">(child.type, {\n id: child.id,\n config: child.config,\n children: child.children,\n frame, workspace, parent\n } as ParentCreateConfig);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: throw new Error(`Unsupported child type: ${(child as any).type}`);\n }\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IoC } from \"./shared/ioc\";\nimport { checkThrowCallback, nonEmptyStringDecoder, workspaceLayoutDecoder, workspaceDefinitionDecoder, workspaceBuilderCreateConfigDecoder, builderConfigDecoder, restoreWorkspaceConfigDecoder, workspaceLayoutSaveConfigDecoder, emptyFrameDefinitionDecoder } from \"./shared/decoders\";\nimport { FrameStreamData, WorkspaceStreamData, WorkspaceSnapshotResult, WindowStreamData } from \"./types/protocol\";\nimport { FrameCreateConfig, WorkspaceIoCCreateConfig } from \"./types/ioc\";\nimport { IOConnectWorkspaces } from \"./../workspaces\";\nimport { WorkspacesController } from \"./types/controller\";\nimport { version } from \"../package.json\";\nimport { API } from \"../temp\";\n\nexport const composeAPI = (glue: any, ioc: IoC): API => {\n\n const controller: WorkspacesController = ioc.controller;\n\n const inWorkspace = (): Promise<boolean> => {\n const myId: string = glue.windows.my().id;\n\n if (!myId) {\n throw new Error(\"Cannot get my frame, because my id is undefined.\");\n }\n\n return controller.checkIsInSwimlane(myId);\n };\n\n const getBuilder = (config: IOConnectWorkspaces.BuilderConfig): IOConnectWorkspaces.WorkspaceBuilder | IOConnectWorkspaces.BoxBuilder => {\n const validatedConfig = builderConfigDecoder.runWithException(config);\n\n return ioc.getBuilder(validatedConfig);\n };\n\n const getMyFrame = async (): Promise<IOConnectWorkspaces.Frame> => {\n const windowId: string = glue.windows.my().id;\n\n if (!windowId) {\n throw new Error(\"Cannot get my frame, because my id is undefined.\");\n }\n\n const isInSwimlane = await controller.checkIsInSwimlane(windowId);\n\n if (!isInSwimlane) {\n throw new Error(\"Cannot fetch your frame, because this window is not in a workspace\");\n }\n\n return controller.getFrame({ windowId });\n };\n\n const getFrame = async (predicate: (frame: IOConnectWorkspaces.Frame) => boolean): Promise<IOConnectWorkspaces.Frame> => {\n checkThrowCallback(predicate);\n\n return controller.getFrame({ predicate });\n };\n\n const getAllFrames = async (predicate?: (frame: IOConnectWorkspaces.Frame) => boolean): Promise<IOConnectWorkspaces.Frame[]> => {\n checkThrowCallback(predicate, true);\n\n return controller.getFrames(predicate);\n };\n\n const getAllWorkspacesSummaries = (): Promise<IOConnectWorkspaces.WorkspaceSummary[]> => {\n return controller.getAllWorkspaceSummaries();\n };\n\n const getMyWorkspace = async (): Promise<IOConnectWorkspaces.Workspace> => {\n const myId: string = glue.windows.my().id;\n\n if (!myId) {\n throw new Error(\"Cannot get my workspace, because my id is undefined.\");\n }\n\n const isInSwimlane = await controller.checkIsInSwimlane(myId);\n\n if (!isInSwimlane) {\n throw new Error(\"Cannot fetch your workspace, because this window is not in a workspace\");\n }\n\n return await controller.getWorkspaceByWindowId(myId);\n };\n\n const getWorkspace = async (predicate: (workspace: IOConnectWorkspaces.Workspace) => boolean): Promise<IOConnectWorkspaces.Workspace> => {\n checkThrowCallback(predicate);\n return (await controller.getWorkspaces(predicate))[0];\n };\n\n const getWorkspaceById = async (workspaceId: string): Promise<IOConnectWorkspaces.Workspace> => {\n nonEmptyStringDecoder.runWithException(workspaceId);\n\n return controller.getWorkspaceById(workspaceId);\n };\n\n const getAllWorkspaces = (predicate?: (workspace: IOConnectWorkspaces.Workspace) => boolean): Promise<IOConnectWorkspaces.Workspace[]> => {\n checkThrowCallback(predicate, true);\n return controller.getWorkspaces(predicate);\n };\n\n const getWindow = async (predicate: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => boolean): Promise<IOConnectWorkspaces.WorkspaceWindow> => {\n checkThrowCallback(predicate);\n return controller.getWindow(predicate);\n };\n\n const getParent = async (predicate: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): Promise<IOConnectWorkspaces.WorkspaceBox> => {\n checkThrowCallback(predicate);\n return controller.getParent(predicate);\n };\n\n const restoreWorkspace = async (name: string, options?: IOConnectWorkspaces.RestoreWorkspaceConfig): Promise<IOConnectWorkspaces.Workspace> => {\n nonEmptyStringDecoder.runWithException(name);\n const validatedOptions = restoreWorkspaceConfigDecoder.runWithException(options);\n return controller.restoreWorkspace(name, validatedOptions);\n };\n\n const createWorkspace = async (definition: IOConnectWorkspaces.WorkspaceDefinition, saveConfig?: IOConnectWorkspaces.WorkspaceCreateConfig): Promise<IOConnectWorkspaces.Workspace> => {\n const validatedDefinition = workspaceDefinitionDecoder.runWithException(definition);\n const validatedConfig = workspaceBuilderCreateConfigDecoder.runWithException(saveConfig);\n\n return controller.createWorkspace(validatedDefinition, validatedConfig);\n };\n\n const createEmptyFrame = async (definition?: IOConnectWorkspaces.EmptyFrameDefinition): Promise<IOConnectWorkspaces.Frame> => {\n const validatedDefinition = emptyFrameDefinitionDecoder.runWithException(definition);\n\n return controller.createEmptyFrame(validatedDefinition ?? {});\n };\n\n const layouts = {\n getSummaries: (): Promise<IOConnectWorkspaces.WorkspaceLayoutSummary[]> => {\n return controller.getLayoutSummaries();\n },\n delete: async (name: string): Promise<void> => {\n nonEmptyStringDecoder.runWithException(name);\n return controller.deleteLayout(name);\n },\n export: async (predicate?: (layout: IOConnectWorkspaces.WorkspaceLayout) => boolean): Promise<IOConnectWorkspaces.WorkspaceLayout[]> => {\n checkThrowCallback(predicate, true);\n return controller.exportLayout(predicate);\n },\n import: async (layouts: IOConnectWorkspaces.WorkspaceLayout[], mode: \"replace\" | \"merge\" = \"replace\"): Promise<void> => {\n\n if (!Array.isArray(layouts)) {\n throw new Error(`The provided layouts argument is not an array: ${JSON.stringify(layouts)}`);\n }\n\n layouts.forEach((layout) => workspaceLayoutDecoder.runWithException(layout));\n return controller.importLayouts(layouts, mode);\n },\n save: async (config: IOConnectWorkspaces.WorkspaceLayoutSaveConfig): Promise<IOConnectWorkspaces.WorkspaceLayout> => {\n const verifiedConfig = workspaceLayoutSaveConfigDecoder.runWithException(config);\n return controller.saveLayout(verifiedConfig);\n },\n onSaved: async (callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n return controller.handleOnSaved(callback);\n },\n onRemoved: async (callback: (layout: IOConnectWorkspaces.WorkspaceLayout) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n return controller.handleOnRemoved(callback);\n }\n };\n\n const onFrameOpened = async (callback: (frame: IOConnectWorkspaces.Frame) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = (payload: FrameStreamData): void => {\n const frameConfig: FrameCreateConfig = {\n summary: payload.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n callback(frame);\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"frame\", \"opened\");\n return unsubscribe;\n };\n\n const onFrameClosed = async (callback: (closed: IOConnectWorkspaces.FrameClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = (payload: FrameStreamData): void => {\n callback({ frameId: payload.frameSummary.id, frameBounds: payload.frameBounds });\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"frame\", \"closed\");\n return unsubscribe;\n };\n\n const onWorkspaceOpened = async (callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await controller.transformStreamPayloadToWorkspace(payload);\n\n callback(workspace);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"opened\");\n return unsubscribe;\n };\n\n const onWorkspaceClosed = async (callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = (payload: WorkspaceStreamData): void => {\n callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"closed\");\n return unsubscribe;\n };\n\n const onWorkspaceHibernated = async (callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await controller.transformStreamPayloadToWorkspace(payload);\n\n callback(workspace);\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"hibernated\");\n return unsubscribe;\n };\n\n const onWorkspaceResumed = async (callback: (workspace: IOConnectWorkspaces.Workspace) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n\n const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {\n const workspace = await controller.transformStreamPayloadToWorkspace(payload);\n\n callback(workspace);\n };\n\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"workspace\", \"resumed\");\n return unsubscribe;\n };\n\n const onWindowAdded = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"added\");\n return unsubscribe;\n };\n\n const onWindowLoaded = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const foundWindow = workspace.getWindow((win) => win.id && win.id === payload.windowSummary.config.windowId);\n\n callback(foundWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"loaded\");\n return unsubscribe;\n };\n\n const onWindowRemoved = async (callback: (removed: { windowId: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = (payload: WindowStreamData): void => {\n const { windowId, workspaceId, frameId } = payload.windowSummary.config;\n callback({ windowId, workspaceId, frameId });\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"removed\");\n return unsubscribe;\n };\n\n const onWindowMaximized = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"maximized\");\n return unsubscribe;\n };\n\n const onWindowRestored = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"restored\");\n return unsubscribe;\n };\n\n\n const onWindowSelected = async (callback: (swimlaneWindow: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> => {\n checkThrowCallback(callback);\n const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {\n const snapshot = (await controller.getSnapshot(payload.windowSummary.config.workspaceId, \"workspace\")) as WorkspaceSnapshotResult;\n\n const frameConfig: FrameCreateConfig = {\n summary: snapshot.frameSummary\n };\n const frame = ioc.getModel<\"frame\">(\"frame\", frameConfig);\n\n const workspaceConfig: WorkspaceIoCCreateConfig = { frame, snapshot };\n\n const workspace = ioc.getModel<\"workspace\">(\"workspace\", workspaceConfig);\n\n const windowParent = workspace.getBox((parent) => parent.id === payload.windowSummary.parentId);\n const foundWindow = windowParent.children.find((child) => child.type === \"window\" && child.elementId === payload.windowSummary.itemId);\n\n callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);\n };\n const unsubscribe = await controller.processGlobalSubscription(wrappedCallback, \"window\", \"selected\");\n return unsubscribe;\n };\n\n const waitForFrame = async (id: string): Promise<IOConnectWorkspaces.Frame> => {\n nonEmptyStringDecoder.runWithException(id);\n return new Promise<IOConnectWorkspaces.Frame>((res, rej) => {\n let unsub: IOConnectWorkspaces.Unsubscribe = () => {\n // do nothing\n };\n onFrameOpened((f) => {\n if (f.id === id) {\n res(f);\n unsub();\n }\n }).then((u) => {\n unsub = u;\n return getAllFrames();\n }).then((frames) => {\n const myFrame = frames.find((f) => f.id === id);\n if (myFrame) {\n res(myFrame);\n unsub();\n }\n }).catch(rej);\n });\n };\n\n return {\n inWorkspace,\n getBuilder,\n getMyFrame,\n getFrame,\n getAllFrames,\n getAllWorkspacesSummaries,\n getMyWorkspace,\n getWorkspace,\n getWorkspaceById,\n getAllWorkspaces,\n getWindow,\n getBox: getParent,\n restoreWorkspace,\n createWorkspace,\n createEmptyFrame,\n waitForFrame,\n layouts,\n onFrameOpened,\n onFrameClosed,\n onWorkspaceOpened,\n onWorkspaceClosed,\n onWorkspaceHibernated,\n onWorkspaceResumed,\n onWindowAdded,\n onWindowLoaded,\n onWindowRemoved,\n onWindowMaximized,\n onWindowRestored,\n onWindowSelected,\n version\n };\n};\n","import { IoC } from \"./shared/ioc\";\r\nimport { composeAPI } from \"./main\";\r\nimport { WorkspacesFactoryFunction } from \"../workspaces\";\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nconst factoryFunction: WorkspacesFactoryFunction = async (io: any): Promise<void> => {\r\n\r\n const ioc = new IoC(io.agm, io.windows, io.layouts, io.contexts);\r\n\r\n const actualWindowId = io.interop.instance.windowId;\r\n\r\n await ioc.initiate(actualWindowId);\r\n\r\n io.workspaces = composeAPI(io, ioc);\r\n};\r\n\r\n// attach to window object\r\nif (typeof window !== \"undefined\") {\r\n /* eslint-disable @typescript-eslint/no-explicit-any */\r\n (window as any).IOWorkspaces = factoryFunction;\r\n}\r\n\r\nexport default factoryFunction;\r\n"],"names":["privateData","getBase","data","getData","CallbackRegistry","CallbackFactory"],"mappings":"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"}