@openfin/core 40.200.2 → 41.83.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/mock-alpha.d.ts +354 -199
- package/out/mock-beta.d.ts +354 -199
- package/out/mock-public.d.ts +354 -199
- package/out/mock.d.ts +363 -200
- package/out/mock.js +1285 -1164
- package/package.json +1 -1
package/out/mock.js
CHANGED
@@ -361,7 +361,7 @@ async function promiseMapSerial(arr, func) {
|
|
361
361
|
}
|
362
362
|
promises.promiseMapSerial = promiseMapSerial;
|
363
363
|
|
364
|
-
var __classPrivateFieldSet$
|
364
|
+
var __classPrivateFieldSet$d = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
365
365
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
366
366
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
367
367
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
@@ -490,7 +490,7 @@ class EmitterBase extends Base {
|
|
490
490
|
// This will only be reached if unsubscribe from event that does not exist but do not want to error here
|
491
491
|
return Promise.resolve();
|
492
492
|
};
|
493
|
-
__classPrivateFieldSet$
|
493
|
+
__classPrivateFieldSet$d(this, _EmitterBase_emitterAccessor, [topic, ...additionalAccessors], "f");
|
494
494
|
this.listeners = (event) => this.hasEmitter() ? this.getOrCreateEmitter().listeners(event) : [];
|
495
495
|
}
|
496
496
|
/**
|
@@ -1055,902 +1055,238 @@ class AsyncRetryableLazy {
|
|
1055
1055
|
}
|
1056
1056
|
lazy.AsyncRetryableLazy = AsyncRetryableLazy;
|
1057
1057
|
|
1058
|
-
var
|
1059
|
-
|
1060
|
-
var apiExposer$1 = {};
|
1061
|
-
|
1062
|
-
var apiConsumer = {};
|
1063
|
-
|
1064
|
-
Object.defineProperty(apiConsumer, "__esModule", { value: true });
|
1065
|
-
apiConsumer.ApiConsumer = void 0;
|
1066
|
-
/**
|
1067
|
-
* Consumer for apis exposed with {@see ApiExposer}.
|
1068
|
-
*
|
1069
|
-
* A strategy that matches the strategy used to expose a target API must be provided.
|
1070
|
-
*/
|
1071
|
-
class ApiConsumer {
|
1072
|
-
// eslint-disable-next-line
|
1073
|
-
constructor(strategy) {
|
1074
|
-
this.strategy = strategy;
|
1075
|
-
/**
|
1076
|
-
* Consumes an api exposed using a given transport strategy, and generates a client
|
1077
|
-
* for easy, type safe consumption of that client.
|
1078
|
-
* @param options Strategy specific consumption options.
|
1079
|
-
* @returns An api client matching the given type.
|
1080
|
-
*/
|
1081
|
-
this.consume = async (options) => {
|
1082
|
-
const exposedProperties = await this.strategy.getExposedFunctions(options);
|
1083
|
-
return exposedProperties.reduce((client, prop) => ({
|
1084
|
-
...client,
|
1085
|
-
[prop.key]: this.strategy.createFunction(prop, options)
|
1086
|
-
}), {});
|
1087
|
-
};
|
1088
|
-
}
|
1089
|
-
}
|
1090
|
-
apiConsumer.ApiConsumer = ApiConsumer;
|
1091
|
-
|
1092
|
-
var apiExposer = {};
|
1093
|
-
|
1094
|
-
var decorators = {};
|
1095
|
-
|
1096
|
-
Object.defineProperty(decorators, "__esModule", { value: true });
|
1097
|
-
decorators.expose = decorators.getExposedProperties = void 0;
|
1098
|
-
const exposedProperties = Symbol('exposedProperties');
|
1099
|
-
const getExposedProperties = (target) => {
|
1100
|
-
return target[exposedProperties] || target.prototype[exposedProperties] || [];
|
1101
|
-
};
|
1102
|
-
decorators.getExposedProperties = getExposedProperties;
|
1103
|
-
/**
|
1104
|
-
* Indicates that a class member function can be exposed using {@link ApiExposer}.
|
1105
|
-
* @param options Options specific to the strategy used in {@link ApiExposer}
|
1106
|
-
*/
|
1107
|
-
// Returns any as decorator typing is weird.
|
1108
|
-
const expose = (options) => (target, key, descriptor) => {
|
1109
|
-
target[exposedProperties] = target[exposedProperties] || [];
|
1110
|
-
target[exposedProperties].push({ key, descriptor, options });
|
1111
|
-
};
|
1112
|
-
decorators.expose = expose;
|
1058
|
+
var main = {};
|
1113
1059
|
|
1114
|
-
Object.defineProperty(
|
1115
|
-
|
1116
|
-
const
|
1117
|
-
|
1118
|
-
* Exposes api services on the transport of choice.
|
1119
|
-
*/
|
1120
|
-
class ApiExposer {
|
1060
|
+
Object.defineProperty(main, "__esModule", { value: true });
|
1061
|
+
main.WebContents = void 0;
|
1062
|
+
const base_1$j = base;
|
1063
|
+
class WebContents extends base_1$j.EmitterBase {
|
1121
1064
|
/**
|
1122
|
-
* @param
|
1065
|
+
* @param identity The identity of the {@link OpenFin.WebContentsEvents WebContents}.
|
1066
|
+
* @param entityType The type of the {@link OpenFin.WebContentsEvents WebContents}.
|
1123
1067
|
*/
|
1124
|
-
|
1125
|
-
|
1126
|
-
this.
|
1127
|
-
|
1128
|
-
* Exposes an instance of a given api on
|
1129
|
-
* @param instance Instance of a class which has been decorated to indicate which functions can be exposed.
|
1130
|
-
* @param instanceOptions Transport strategy specific options to use when exposing.
|
1131
|
-
*/
|
1132
|
-
this.exposeInstance = async (instance, instanceOptions) => {
|
1133
|
-
const exposableProps = (0, decorators_1.getExposedProperties)(instance);
|
1134
|
-
const exposedProps = await Promise.all(exposableProps.map(async ({ key, options }) => {
|
1135
|
-
const customConsumptionOptions = await this.strategy.exposeFunction(instance[key].bind(instance), {
|
1136
|
-
key,
|
1137
|
-
options,
|
1138
|
-
meta: instanceOptions
|
1139
|
-
});
|
1140
|
-
return {
|
1141
|
-
key,
|
1142
|
-
options: customConsumptionOptions
|
1143
|
-
};
|
1144
|
-
}));
|
1145
|
-
await this.strategy.exposeMeta(instanceOptions, exposedProps);
|
1146
|
-
};
|
1068
|
+
constructor(wire, identity, entityType) {
|
1069
|
+
super(wire, entityType, identity.uuid, identity.name);
|
1070
|
+
this.identity = identity;
|
1071
|
+
this.entityType = entityType;
|
1147
1072
|
}
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1073
|
+
/**
|
1074
|
+
* Gets a base64 encoded image of all or part of the WebContents.
|
1075
|
+
* @param options Options for the capturePage call.
|
1076
|
+
*
|
1077
|
+
* @example
|
1078
|
+
*
|
1079
|
+
* View:
|
1080
|
+
* ```js
|
1081
|
+
* const view = fin.View.getCurrentSync();
|
1082
|
+
*
|
1083
|
+
* // PNG image of a full visible View
|
1084
|
+
* console.log(await view.capturePage());
|
1085
|
+
*
|
1086
|
+
* // Low-quality JPEG image of a defined visible area of the view
|
1087
|
+
* const options = {
|
1088
|
+
* area: {
|
1089
|
+
* height: 100,
|
1090
|
+
* width: 100,
|
1091
|
+
* x: 10,
|
1092
|
+
* y: 10,
|
1093
|
+
* },
|
1094
|
+
* format: 'jpg',
|
1095
|
+
* quality: 20
|
1096
|
+
* }
|
1097
|
+
* console.log(await view.capturePage(options));
|
1098
|
+
* ```
|
1099
|
+
*
|
1100
|
+
* Window:
|
1101
|
+
* ```js
|
1102
|
+
* const wnd = await fin.Window.getCurrent();
|
1103
|
+
*
|
1104
|
+
* // PNG image of a full visible window
|
1105
|
+
* console.log(await wnd.capturePage());
|
1106
|
+
*
|
1107
|
+
* // Low-quality JPEG image of a defined visible area of the window
|
1108
|
+
* const options = {
|
1109
|
+
* area: {
|
1110
|
+
* height: 100,
|
1111
|
+
* width: 100,
|
1112
|
+
* x: 10,
|
1113
|
+
* y: 10,
|
1114
|
+
* },
|
1115
|
+
* format: 'jpg',
|
1116
|
+
* quality: 20
|
1117
|
+
* }
|
1118
|
+
* console.log(await wnd.capturePage(options));
|
1119
|
+
* ```
|
1120
|
+
*
|
1121
|
+
* @remarks
|
1122
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1123
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1124
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
1125
|
+
*/
|
1126
|
+
capturePage(options) {
|
1127
|
+
return this.wire.sendAction('capture-page', { options, ...this.identity }).then(({ payload }) => payload.data);
|
1173
1128
|
}
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1129
|
+
/**
|
1130
|
+
* Executes Javascript on the WebContents, restricted to contents you own or contents owned by
|
1131
|
+
* applications you have created.
|
1132
|
+
* @param code JavaScript code to be executed on the view.
|
1133
|
+
*
|
1134
|
+
* @example
|
1135
|
+
* View:
|
1136
|
+
* ```js
|
1137
|
+
* async function executeJavaScript(code) {
|
1138
|
+
* const view = await fin.View.wrap({uuid: 'uuid', name: 'view name'});
|
1139
|
+
* return await view.executeJavaScript(code);
|
1140
|
+
* }
|
1141
|
+
*
|
1142
|
+
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
1143
|
+
* ```
|
1144
|
+
*
|
1145
|
+
* Window:
|
1146
|
+
* ```js
|
1147
|
+
* async function executeJavaScript(code) {
|
1148
|
+
* const app = await fin.Application.start({
|
1149
|
+
* name: 'myApp',
|
1150
|
+
* uuid: 'app-1',
|
1151
|
+
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.executeJavaScript.html',
|
1152
|
+
* autoShow: true
|
1153
|
+
* });
|
1154
|
+
* const win = await app.getWindow();
|
1155
|
+
* return await win.executeJavaScript(code);
|
1156
|
+
* }
|
1157
|
+
*
|
1158
|
+
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
1159
|
+
* ```
|
1160
|
+
* @remarks
|
1161
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1162
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1163
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
1164
|
+
*/
|
1165
|
+
executeJavaScript(code) {
|
1166
|
+
return this.wire
|
1167
|
+
.sendAction('execute-javascript-in-window', { ...this.identity, code })
|
1168
|
+
.then(({ payload }) => payload.data);
|
1199
1169
|
}
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
} (strategies));
|
1241
|
-
|
1242
|
-
(function (exports) {
|
1243
|
-
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
1244
|
-
if (k2 === undefined) k2 = k;
|
1245
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
1246
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
1247
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
1248
|
-
}
|
1249
|
-
Object.defineProperty(o, k2, desc);
|
1250
|
-
}) : (function(o, m, k, k2) {
|
1251
|
-
if (k2 === undefined) k2 = k;
|
1252
|
-
o[k2] = m[k];
|
1253
|
-
}));
|
1254
|
-
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
1255
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
1256
|
-
};
|
1257
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
1258
|
-
__exportStar(apiConsumer, exports);
|
1259
|
-
__exportStar(apiExposer, exports);
|
1260
|
-
__exportStar(strategies, exports);
|
1261
|
-
__exportStar(decorators, exports);
|
1262
|
-
} (apiExposer$1));
|
1263
|
-
|
1264
|
-
var channelApiRelay = {};
|
1265
|
-
|
1266
|
-
Object.defineProperty(channelApiRelay, "__esModule", { value: true });
|
1267
|
-
channelApiRelay.createRelayedDispatch = channelApiRelay.relayChannelClientApi = void 0;
|
1268
|
-
const EXPECTED_ERRORS = [
|
1269
|
-
'no longer connected',
|
1270
|
-
'RTCDataChannel closed unexpectedly',
|
1271
|
-
'The client you are trying to dispatch from is disconnected from the target provider',
|
1272
|
-
];
|
1273
|
-
// Checks possible error messages that we want to trap, client error message can originate
|
1274
|
-
// from ChannelProvider::dispatch OR ClassicStrategy::closeEndpoint OR RTCEndPoint::dataChannel::onclose
|
1275
|
-
const isDisconnectedError = (errorMsg) => {
|
1276
|
-
return EXPECTED_ERRORS.some(e => errorMsg.includes(e));
|
1277
|
-
};
|
1278
|
-
/**
|
1279
|
-
* @internal
|
1280
|
-
* Create a channel relay for a given channel exposition, allowing a single provider to route
|
1281
|
-
* actions to the designated clients.
|
1282
|
-
*
|
1283
|
-
* Designed to be used in conjunction with @expose
|
1284
|
-
*
|
1285
|
-
* @param channelProvider The channel provider to relay the actions on.
|
1286
|
-
* @param config Determines which actions to relay. Please ensure action prefix matches the exposed api.
|
1287
|
-
*/
|
1288
|
-
const relayChannelClientApi = async (channelProvider, relayId) => {
|
1289
|
-
channelProvider.register(`relay:${relayId}`, ({ action, target, payload }) => {
|
1290
|
-
return channelProvider.dispatch(target, action, payload);
|
1291
|
-
});
|
1292
|
-
await Promise.resolve();
|
1293
|
-
};
|
1294
|
-
channelApiRelay.relayChannelClientApi = relayChannelClientApi;
|
1295
|
-
const createRelayedDispatch = (client, target, relayId, relayErrorMsg) => async (action, payload) => {
|
1296
|
-
try {
|
1297
|
-
return await client.dispatch(`relay:${relayId}`, {
|
1298
|
-
action,
|
1299
|
-
payload,
|
1300
|
-
target
|
1301
|
-
});
|
1170
|
+
/**
|
1171
|
+
* Returns the zoom level of the WebContents.
|
1172
|
+
*
|
1173
|
+
* @example
|
1174
|
+
* View:
|
1175
|
+
* ```js
|
1176
|
+
* async function getZoomLevel() {
|
1177
|
+
* const view = await fin.View.getCurrent();
|
1178
|
+
* return await view.getZoomLevel();
|
1179
|
+
* }
|
1180
|
+
*
|
1181
|
+
* getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
|
1182
|
+
* ```
|
1183
|
+
*
|
1184
|
+
* Window:
|
1185
|
+
* ```js
|
1186
|
+
* async function createWin() {
|
1187
|
+
* const app = await fin.Application.start({
|
1188
|
+
* name: 'myApp',
|
1189
|
+
* uuid: 'app-1',
|
1190
|
+
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.getZoomLevel.html',
|
1191
|
+
* autoShow: true
|
1192
|
+
* });
|
1193
|
+
* return await app.getWindow();
|
1194
|
+
* }
|
1195
|
+
*
|
1196
|
+
* async function getZoomLevel() {
|
1197
|
+
* const win = await createWin();
|
1198
|
+
* return await win.getZoomLevel();
|
1199
|
+
* }
|
1200
|
+
*
|
1201
|
+
* getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
|
1202
|
+
* ```
|
1203
|
+
* @remarks
|
1204
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1205
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1206
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
1207
|
+
*/
|
1208
|
+
getZoomLevel() {
|
1209
|
+
return this.wire.sendAction('get-zoom-level', this.identity).then(({ payload }) => payload.data);
|
1302
1210
|
}
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1211
|
+
/**
|
1212
|
+
* Sets the zoom level of the WebContents.
|
1213
|
+
* @param level The zoom level
|
1214
|
+
*
|
1215
|
+
* @example
|
1216
|
+
* View:
|
1217
|
+
* ```js
|
1218
|
+
* async function setZoomLevel(number) {
|
1219
|
+
* const view = await fin.View.getCurrent();
|
1220
|
+
* return await view.setZoomLevel(number);
|
1221
|
+
* }
|
1222
|
+
*
|
1223
|
+
* setZoomLevel(4).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
|
1224
|
+
* ```
|
1225
|
+
*
|
1226
|
+
* Window:
|
1227
|
+
* ```js
|
1228
|
+
* async function createWin() {
|
1229
|
+
* const app = await fin.Application.start({
|
1230
|
+
* name: 'myApp',
|
1231
|
+
* uuid: 'app-1',
|
1232
|
+
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.setZoomLevel.html',
|
1233
|
+
* autoShow: true
|
1234
|
+
* });
|
1235
|
+
* return await app.getWindow();
|
1236
|
+
* }
|
1237
|
+
*
|
1238
|
+
* async function setZoomLevel(number) {
|
1239
|
+
* const win = await createWin();
|
1240
|
+
* return await win.setZoomLevel(number);
|
1241
|
+
* }
|
1242
|
+
*
|
1243
|
+
* setZoomLevel(4).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
|
1244
|
+
* ```
|
1245
|
+
* @remarks
|
1246
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1247
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1248
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
1249
|
+
*/
|
1250
|
+
setZoomLevel(level) {
|
1251
|
+
return this.wire.sendAction('set-zoom-level', { ...this.identity, level }).then(() => undefined);
|
1308
1252
|
}
|
1309
|
-
};
|
1310
|
-
channelApiRelay.createRelayedDispatch = createRelayedDispatch;
|
1311
|
-
|
1312
|
-
var __classPrivateFieldSet$b = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
1313
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
1314
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
1315
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
1316
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
1317
|
-
};
|
1318
|
-
var __classPrivateFieldGet$d = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
1319
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
1320
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
1321
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
1322
|
-
};
|
1323
|
-
var _LayoutNode_client, _TabStack_client, _ColumnOrRow_client;
|
1324
|
-
Object.defineProperty(layoutEntities, "__esModule", { value: true });
|
1325
|
-
layoutEntities.ColumnOrRow = layoutEntities.TabStack = layoutEntities.LayoutNode = void 0;
|
1326
|
-
const api_exposer_1 = apiExposer$1;
|
1327
|
-
const channel_api_relay_1 = channelApiRelay;
|
1328
|
-
/*
|
1329
|
-
This file includes LayoutNode, ColumnOrRow and TabStack classes, which are all closely
|
1330
|
-
intertwined, and share members via parent abstract class LayoutNode. To prevent circular
|
1331
|
-
refs, we define and export all the classes here.
|
1332
|
-
*/
|
1333
|
-
/**
|
1334
|
-
* @ignore
|
1335
|
-
* @internal
|
1336
|
-
* Supplies an ApiClient for {@link LayoutEntitiesController} and helper methods
|
1337
|
-
* for the entities {@link TabStack} AND {@link ColumnOrRow} to use.
|
1338
|
-
*/
|
1339
|
-
class LayoutNode {
|
1340
1253
|
/**
|
1341
|
-
*
|
1342
|
-
*
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
* ```js
|
1378
|
-
* if (!fin.me.isView) {
|
1379
|
-
* throw new Error('Not running in a platform View.');
|
1380
|
-
* }
|
1381
|
-
*
|
1382
|
-
* const stack = await fin.me.getCurrentStack();
|
1383
|
-
* // Retrieves the parent ColumnOrRow
|
1384
|
-
* const columnOrRow = await stack.getParent();
|
1385
|
-
* let exists = await stack.exists();
|
1386
|
-
* // or
|
1387
|
-
* let exists = await columnOrRow.exists();
|
1388
|
-
* // The entity exists: true
|
1389
|
-
* console.log(`The entity exists: ${exists}`);
|
1390
|
-
* ```
|
1391
|
-
*/
|
1392
|
-
this.exists = () => __classPrivateFieldGet$d(this, _LayoutNode_client, "f").exists(this.entityId);
|
1393
|
-
/**
|
1394
|
-
* Retrieves the parent of the TabStack or ColumnOrRow
|
1395
|
-
*
|
1396
|
-
* @example
|
1397
|
-
* ```js
|
1398
|
-
* if (!fin.me.isView) {
|
1399
|
-
* throw new Error('Not running in a platform View.');
|
1400
|
-
* }
|
1401
|
-
*
|
1402
|
-
* const stack = await fin.me.getCurrentStack();
|
1403
|
-
* // Retrieves the parent ColumnOrRow
|
1404
|
-
* const columnOrRow = await stack.getParent();
|
1405
|
-
*
|
1406
|
-
* // undefined if entity is the root item
|
1407
|
-
* let parent = await columnOrRow.getParent();
|
1408
|
-
* // or
|
1409
|
-
* let parent = await stack.getParent();
|
1410
|
-
* ```
|
1411
|
-
*/
|
1412
|
-
this.getParent = async () => {
|
1413
|
-
const parent = await __classPrivateFieldGet$d(this, _LayoutNode_client, "f").getParent(this.entityId);
|
1414
|
-
if (!parent) {
|
1415
|
-
return undefined;
|
1416
|
-
}
|
1417
|
-
return LayoutNode.getEntity(parent, __classPrivateFieldGet$d(this, _LayoutNode_client, "f"));
|
1418
|
-
};
|
1419
|
-
/**
|
1420
|
-
* Creates a new TabStack adjacent to the given TabStack or ColumnOrRow. Inputs can be new views to create, or existing views.
|
1421
|
-
*
|
1422
|
-
* Known Issue: If the number of views to add overflows the tab-container, the added views will be set as active
|
1423
|
-
* during each render, and then placed at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
1424
|
-
* This means the views you pass to createAdjacentStack() may not render in the order given by the array.
|
1425
|
-
* Until fixed, this problem can be avoided only if your window is wide enough to fit creating all the views in the tabstack.
|
1426
|
-
*
|
1427
|
-
* @param views The views that will populate the new TabStack.
|
1428
|
-
* @param options Additional options that control new TabStack creation.
|
1429
|
-
* @returns The newly-created TabStack.
|
1430
|
-
*
|
1431
|
-
* @example
|
1432
|
-
* ```js
|
1433
|
-
* if (!fin.me.isView) {
|
1434
|
-
* throw new Error('Not running in a platform View.');
|
1435
|
-
* }
|
1436
|
-
*
|
1437
|
-
* const stack = await fin.me.getCurrentStack();
|
1438
|
-
* const columnOrRow = await stack.getParent();
|
1439
|
-
*
|
1440
|
-
* // Create view references by supplying a 'name' and 'url'
|
1441
|
-
* const views = [
|
1442
|
-
* // if 'name' is undefined, one will be generated
|
1443
|
-
* // if 'url' is undefined, it will default the view URL to 'about:blank'
|
1444
|
-
* { name: 'google-view', url: 'http://google.com/'},
|
1445
|
-
* { name: 'of-developers-view', url: 'http://developers.openfin.co/'},
|
1446
|
-
* ];
|
1447
|
-
*
|
1448
|
-
* // Create a view beforehand to be included in the new tab stack
|
1449
|
-
* const outsideView = await fin.View.create({
|
1450
|
-
* name: 'outside-bloomberg-view',
|
1451
|
-
* url: 'https://bloomberg.com/',
|
1452
|
-
* target: fin.me.identity,
|
1453
|
-
* });
|
1454
|
-
*
|
1455
|
-
* // Views to add can be identities, or the reference views mentioned above
|
1456
|
-
* const viewsToAdd = [outsideView.identity, ...views];
|
1457
|
-
*
|
1458
|
-
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
1459
|
-
* let stackFrom = await columnOrRow.createAdjacentStack(viewsToAdd, { position: 'right' });
|
1460
|
-
* // Or
|
1461
|
-
* let newStack = await stack.createAdjacentStack(viewsToAdd, { position: 'right' });
|
1462
|
-
* console.log(`A new TabStack created to the right has ${newStack.length} views in it`);
|
1463
|
-
*
|
1464
|
-
* ```
|
1465
|
-
* @experimental
|
1466
|
-
*/
|
1467
|
-
this.createAdjacentStack = async (views, options) => {
|
1468
|
-
const entityId = await __classPrivateFieldGet$d(this, _LayoutNode_client, "f").createAdjacentStack(this.entityId, views, options);
|
1469
|
-
return LayoutNode.getEntity({ entityId, type: 'stack' }, __classPrivateFieldGet$d(this, _LayoutNode_client, "f"));
|
1470
|
-
};
|
1471
|
-
/**
|
1472
|
-
* Retrieves the adjacent TabStacks of the given TabStack or ColumnOrRow.
|
1473
|
-
*
|
1474
|
-
* @param edge Edge whose adjacent TabStacks will be returned.
|
1475
|
-
*
|
1476
|
-
* @example
|
1477
|
-
* ```js
|
1478
|
-
* if (!fin.me.isView) {
|
1479
|
-
* throw new Error('Not running in a platform View.');
|
1480
|
-
* }
|
1481
|
-
*
|
1482
|
-
* const stack = await fin.me.getCurrentStack();
|
1483
|
-
* const columnOrRow = await stack.getParent();
|
1484
|
-
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
1485
|
-
* let rightStacks = await columnOrRow.getAdjacentStacks('right');
|
1486
|
-
* let leftStacks = await columnOrRow.getAdjacentStacks('left');
|
1487
|
-
* // or
|
1488
|
-
* let rightStacks = await stack.getAdjacentStacks('right');
|
1489
|
-
* let leftStacks = await stack.getAdjacentStacks('left');
|
1490
|
-
*
|
1491
|
-
* console.log(`The entity has ${rightStacks.length} stacks to the right, and ${leftStacks.length} stacks to the left`);
|
1492
|
-
*
|
1493
|
-
* ```
|
1494
|
-
* @experimental
|
1495
|
-
*/
|
1496
|
-
this.getAdjacentStacks = async (edge) => {
|
1497
|
-
const adjacentStacks = await __classPrivateFieldGet$d(this, _LayoutNode_client, "f").getAdjacentStacks({
|
1498
|
-
targetId: this.entityId,
|
1499
|
-
edge
|
1500
|
-
});
|
1501
|
-
return adjacentStacks.map((stack) => LayoutNode.getEntity({
|
1502
|
-
type: 'stack',
|
1503
|
-
entityId: stack.entityId
|
1504
|
-
}, __classPrivateFieldGet$d(this, _LayoutNode_client, "f")));
|
1505
|
-
};
|
1506
|
-
__classPrivateFieldSet$b(this, _LayoutNode_client, client, "f");
|
1507
|
-
this.entityId = entityId;
|
1508
|
-
}
|
1509
|
-
}
|
1510
|
-
layoutEntities.LayoutNode = LayoutNode;
|
1511
|
-
_LayoutNode_client = new WeakMap();
|
1512
|
-
/**
|
1513
|
-
* @ignore
|
1514
|
-
* @internal
|
1515
|
-
* Encapsulates Api consumption of {@link LayoutEntitiesClient} with a relayed dispatch
|
1516
|
-
* @param client
|
1517
|
-
* @param controllerId
|
1518
|
-
* @param identity
|
1519
|
-
* @returns a new instance of {@link LayoutEntitiesClient} with bound to the controllerId
|
1520
|
-
*/
|
1521
|
-
LayoutNode.newLayoutEntitiesClient = async (client, controllerId, identity) => {
|
1522
|
-
const dispatch = (0, channel_api_relay_1.createRelayedDispatch)(client, identity, 'layout-relay', 'You are trying to interact with a layout component on a window that does not exist or has been destroyed.');
|
1523
|
-
const consumer = new api_exposer_1.ApiConsumer(new api_exposer_1.ChannelsConsumer({ dispatch }));
|
1524
|
-
return consumer.consume({ id: controllerId });
|
1525
|
-
};
|
1526
|
-
LayoutNode.getEntity = (definition, client) => {
|
1527
|
-
const { entityId, type } = definition;
|
1528
|
-
switch (type) {
|
1529
|
-
case 'column':
|
1530
|
-
case 'row':
|
1531
|
-
return new ColumnOrRow(client, entityId, type);
|
1532
|
-
case 'stack':
|
1533
|
-
return new TabStack(client, entityId);
|
1534
|
-
default:
|
1535
|
-
throw new Error(`Unrecognised Layout Entity encountered ('${JSON.stringify(definition)})`);
|
1536
|
-
}
|
1537
|
-
};
|
1538
|
-
/**
|
1539
|
-
* A TabStack is used to manage the state of a stack of tabs within an OpenFin Layout.
|
1540
|
-
*/
|
1541
|
-
class TabStack extends LayoutNode {
|
1542
|
-
/** @internal */
|
1543
|
-
constructor(client, entityId) {
|
1544
|
-
super(client, entityId);
|
1545
|
-
/**
|
1546
|
-
* @internal
|
1547
|
-
* ApiClient for {@link LayoutEntitiesController}
|
1548
|
-
*/
|
1549
|
-
_TabStack_client.set(this, void 0);
|
1550
|
-
/**
|
1551
|
-
* Type of the content item. Always stack, but useful for distinguishing between a {@link TabStack} and {@link ColumnOrRow}.
|
1552
|
-
*/
|
1553
|
-
this.type = 'stack';
|
1554
|
-
/**
|
1555
|
-
* Retrieves a list of all views belonging to this {@link TabStack}.
|
1556
|
-
*
|
1557
|
-
* Known Issue: If adding a view overflows the tab-container width, the added view will be set as active
|
1558
|
-
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
1559
|
-
* If that happens and then getViews() is called, it will return the identities in a different order than
|
1560
|
-
* than the currently rendered tab order.
|
1561
|
-
*
|
1562
|
-
*
|
1563
|
-
* @throws If the {@link TabStack} has been destroyed.
|
1564
|
-
* @example
|
1565
|
-
* ```js
|
1566
|
-
* if (!fin.me.isView) {
|
1567
|
-
* throw new Error('Not running in a platform View.');
|
1568
|
-
* }
|
1569
|
-
*
|
1570
|
-
* const stack = await fin.me.getCurrentStack();
|
1571
|
-
* // Alternatively, you can wrap any view and get the stack from there
|
1572
|
-
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
1573
|
-
* // const stack = await viewFromSomewhere.getCurrentStack();
|
1574
|
-
* const views = await stack.getViews();
|
1575
|
-
* console.log(`Stack contains ${views.length} view(s)`);
|
1576
|
-
* ```
|
1577
|
-
* @experimental
|
1578
|
-
*/
|
1579
|
-
this.getViews = () => __classPrivateFieldGet$d(this, _TabStack_client, "f").getStackViews(this.entityId);
|
1580
|
-
/**
|
1581
|
-
* Adds or creates a view in this {@link TabStack}.
|
1582
|
-
*
|
1583
|
-
* @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
|
1584
|
-
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
1585
|
-
*
|
1586
|
-
* @param view The identity of an existing view to add, or options to create a view.
|
1587
|
-
* @param options Optional view options: index number used to insert the view into the stack at that index. Defaults to 0 (front of the stack)
|
1588
|
-
* @returns Resolves with the {@link OpenFin.Identity identity} of the added view.
|
1589
|
-
* @throws If the view does not exist or fails to create.
|
1590
|
-
* @throws If the {@link TabStack} has been destroyed.
|
1591
|
-
* @example
|
1592
|
-
* ```js
|
1593
|
-
* if (!fin.me.isView) {
|
1594
|
-
* throw new Error('Not running in a platform View.');
|
1595
|
-
* }
|
1596
|
-
*
|
1597
|
-
* const stack = await fin.me.getCurrentStack();
|
1598
|
-
* // Alternatively, you can wrap any view and get the stack from there
|
1599
|
-
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
1600
|
-
* // const stack = await viewFromSomewhere.getCurrentStack();
|
1601
|
-
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
1602
|
-
* console.log('Identity of the google view just added', { googleViewIdentity });
|
1603
|
-
* // pass in { index: number } to set the index in the stack. Here 1 means, end of the stack (defaults to 0)
|
1604
|
-
* const appleViewIdentity = await stack.addView({ name: 'apple-view', url: 'http://apple.com/' }, { index: 1 });
|
1605
|
-
* console.log('Identity of the apple view just added', { appleViewIdentity });
|
1606
|
-
* ```
|
1607
|
-
* @experimental
|
1608
|
-
*/
|
1609
|
-
this.addView = async (view, options = { index: 0 }) => __classPrivateFieldGet$d(this, _TabStack_client, "f").addViewToStack(this.entityId, view, options);
|
1610
|
-
/**
|
1611
|
-
* Removes a view from this {@link TabStack}.
|
1612
|
-
*
|
1613
|
-
* @remarks Throws an exception if the view identity does not exist or was already destroyed.
|
1614
|
-
*
|
1615
|
-
* @param view - Identity of the view to remove.
|
1616
|
-
* @throws If the view does not exist or does not belong to the stack.
|
1617
|
-
* @throws If the {@link TabStack} has been destroyed.
|
1618
|
-
*
|
1619
|
-
* @example
|
1620
|
-
* ```js
|
1621
|
-
* if (!fin.me.isView) {
|
1622
|
-
* throw new Error('Not running in a platform View.');
|
1623
|
-
* }
|
1624
|
-
*
|
1625
|
-
* const stack = await fin.me.getCurrentStack();
|
1626
|
-
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
1627
|
-
*
|
1628
|
-
* await stack.removeView(googleViewIdentity);
|
1629
|
-
*
|
1630
|
-
* try {
|
1631
|
-
* await stack.removeView(googleViewIdentity);
|
1632
|
-
* } catch (error) {
|
1633
|
-
* // Tried to remove a view ('google-view') which does not belong to the stack.
|
1634
|
-
* console.log(error);
|
1635
|
-
* }
|
1636
|
-
* ```
|
1637
|
-
*/
|
1638
|
-
this.removeView = async (view) => {
|
1639
|
-
await __classPrivateFieldGet$d(this, _TabStack_client, "f").removeViewFromStack(this.entityId, view);
|
1640
|
-
};
|
1641
|
-
/**
|
1642
|
-
* Sets the active view of the {@link TabStack} without focusing it.
|
1643
|
-
* @param view - Identity of the view to activate.
|
1644
|
-
* @returns Promise which resolves with void once the view has been activated.
|
1645
|
-
* @throws If the {@link TabStack} has been destroyed.
|
1646
|
-
* @throws If the view does not exist.
|
1647
|
-
* @example
|
1648
|
-
* Change the active tab of a known View's TabStack:
|
1649
|
-
* ```js
|
1650
|
-
* const targetView = fin.View.wrapSync({ uuid: 'uuid', name: 'view-name' });
|
1651
|
-
* const stack = await targetView.getCurrentStack();
|
1652
|
-
* await stack.setActiveView(targetView.identity);
|
1653
|
-
* ```
|
1654
|
-
*
|
1655
|
-
* Set the current View as active within its TabStack:
|
1656
|
-
* ```js
|
1657
|
-
* const stack = await fin.me.getCurrentStack();
|
1658
|
-
* await stack.setActiveView(fin.me.identity);
|
1659
|
-
* ```
|
1660
|
-
* @experimental
|
1661
|
-
*/
|
1662
|
-
this.setActiveView = async (view) => {
|
1663
|
-
await __classPrivateFieldGet$d(this, _TabStack_client, "f").setStackActiveView(this.entityId, view);
|
1664
|
-
};
|
1665
|
-
__classPrivateFieldSet$b(this, _TabStack_client, client, "f");
|
1666
|
-
}
|
1667
|
-
}
|
1668
|
-
layoutEntities.TabStack = TabStack;
|
1669
|
-
_TabStack_client = new WeakMap();
|
1670
|
-
/**
|
1671
|
-
* A ColumnOrRow is used to manage the state of Column and Rows within an OpenFin Layout.
|
1672
|
-
*/
|
1673
|
-
class ColumnOrRow extends LayoutNode {
|
1674
|
-
/**
|
1675
|
-
* @internal
|
1676
|
-
*/
|
1677
|
-
constructor(client, entityId, type) {
|
1678
|
-
super(client, entityId);
|
1679
|
-
/**
|
1680
|
-
* @ignore
|
1681
|
-
* @internal
|
1682
|
-
* ApiClient for {@link LayoutEntitiesController}
|
1683
|
-
*/
|
1684
|
-
_ColumnOrRow_client.set(this, void 0);
|
1685
|
-
/**
|
1686
|
-
* Retrieves the content array of the ColumnOrRow
|
1687
|
-
*
|
1688
|
-
* @example
|
1689
|
-
* ```js
|
1690
|
-
* if (!fin.me.isView) {
|
1691
|
-
* throw new Error('Not running in a platform View.');
|
1692
|
-
* }
|
1693
|
-
*
|
1694
|
-
* const stack = await fin.me.getCurrentStack();
|
1695
|
-
* // Retrieves the parent ColumnOrRow
|
1696
|
-
* const columnOrRow = await stack.getParent();
|
1697
|
-
*
|
1698
|
-
* // returns [TabStack]
|
1699
|
-
* const contentArray = await columnOrRow.getContent();
|
1700
|
-
* console.log(`The ColumnOrRow has ${contentArray.length} item(s)`);
|
1701
|
-
* ```
|
1702
|
-
*/
|
1703
|
-
this.getContent = async () => {
|
1704
|
-
const contentItemEntities = await __classPrivateFieldGet$d(this, _ColumnOrRow_client, "f").getContent(this.entityId);
|
1705
|
-
return contentItemEntities.map((entity) => LayoutNode.getEntity(entity, __classPrivateFieldGet$d(this, _ColumnOrRow_client, "f")));
|
1706
|
-
};
|
1707
|
-
__classPrivateFieldSet$b(this, _ColumnOrRow_client, client, "f");
|
1708
|
-
this.type = type;
|
1709
|
-
}
|
1710
|
-
}
|
1711
|
-
layoutEntities.ColumnOrRow = ColumnOrRow;
|
1712
|
-
_ColumnOrRow_client = new WeakMap();
|
1713
|
-
|
1714
|
-
var layout_constants = {};
|
1715
|
-
|
1716
|
-
Object.defineProperty(layout_constants, "__esModule", { value: true });
|
1717
|
-
layout_constants.DEFAULT_LAYOUT_KEY = layout_constants.LAYOUT_CONTROLLER_ID = void 0;
|
1718
|
-
layout_constants.LAYOUT_CONTROLLER_ID = 'layout-entities';
|
1719
|
-
// TODO: eventually export this somehow
|
1720
|
-
layout_constants.DEFAULT_LAYOUT_KEY = '__default__';
|
1721
|
-
|
1722
|
-
var main = {};
|
1723
|
-
|
1724
|
-
Object.defineProperty(main, "__esModule", { value: true });
|
1725
|
-
main.WebContents = void 0;
|
1726
|
-
const base_1$j = base;
|
1727
|
-
class WebContents extends base_1$j.EmitterBase {
|
1728
|
-
/**
|
1729
|
-
* @param identity The identity of the {@link OpenFin.WebContentsEvents WebContents}.
|
1730
|
-
* @param entityType The type of the {@link OpenFin.WebContentsEvents WebContents}.
|
1731
|
-
*/
|
1732
|
-
constructor(wire, identity, entityType) {
|
1733
|
-
super(wire, entityType, identity.uuid, identity.name);
|
1734
|
-
this.identity = identity;
|
1735
|
-
this.entityType = entityType;
|
1736
|
-
}
|
1737
|
-
/**
|
1738
|
-
* Gets a base64 encoded image of all or part of the WebContents.
|
1739
|
-
* @param options Options for the capturePage call.
|
1740
|
-
*
|
1741
|
-
* @example
|
1742
|
-
*
|
1743
|
-
* View:
|
1744
|
-
* ```js
|
1745
|
-
* const view = fin.View.getCurrentSync();
|
1746
|
-
*
|
1747
|
-
* // PNG image of a full visible View
|
1748
|
-
* console.log(await view.capturePage());
|
1749
|
-
*
|
1750
|
-
* // Low-quality JPEG image of a defined visible area of the view
|
1751
|
-
* const options = {
|
1752
|
-
* area: {
|
1753
|
-
* height: 100,
|
1754
|
-
* width: 100,
|
1755
|
-
* x: 10,
|
1756
|
-
* y: 10,
|
1757
|
-
* },
|
1758
|
-
* format: 'jpg',
|
1759
|
-
* quality: 20
|
1760
|
-
* }
|
1761
|
-
* console.log(await view.capturePage(options));
|
1762
|
-
* ```
|
1763
|
-
*
|
1764
|
-
* Window:
|
1765
|
-
* ```js
|
1766
|
-
* const wnd = await fin.Window.getCurrent();
|
1767
|
-
*
|
1768
|
-
* // PNG image of a full visible window
|
1769
|
-
* console.log(await wnd.capturePage());
|
1770
|
-
*
|
1771
|
-
* // Low-quality JPEG image of a defined visible area of the window
|
1772
|
-
* const options = {
|
1773
|
-
* area: {
|
1774
|
-
* height: 100,
|
1775
|
-
* width: 100,
|
1776
|
-
* x: 10,
|
1777
|
-
* y: 10,
|
1778
|
-
* },
|
1779
|
-
* format: 'jpg',
|
1780
|
-
* quality: 20
|
1781
|
-
* }
|
1782
|
-
* console.log(await wnd.capturePage(options));
|
1783
|
-
* ```
|
1784
|
-
*
|
1785
|
-
* @remarks
|
1786
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1787
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1788
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
1789
|
-
*/
|
1790
|
-
capturePage(options) {
|
1791
|
-
return this.wire.sendAction('capture-page', { options, ...this.identity }).then(({ payload }) => payload.data);
|
1792
|
-
}
|
1793
|
-
/**
|
1794
|
-
* Executes Javascript on the WebContents, restricted to contents you own or contents owned by
|
1795
|
-
* applications you have created.
|
1796
|
-
* @param code JavaScript code to be executed on the view.
|
1797
|
-
*
|
1798
|
-
* @example
|
1799
|
-
* View:
|
1800
|
-
* ```js
|
1801
|
-
* async function executeJavaScript(code) {
|
1802
|
-
* const view = await fin.View.wrap({uuid: 'uuid', name: 'view name'});
|
1803
|
-
* return await view.executeJavaScript(code);
|
1804
|
-
* }
|
1805
|
-
*
|
1806
|
-
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
1807
|
-
* ```
|
1808
|
-
*
|
1809
|
-
* Window:
|
1810
|
-
* ```js
|
1811
|
-
* async function executeJavaScript(code) {
|
1812
|
-
* const app = await fin.Application.start({
|
1813
|
-
* name: 'myApp',
|
1814
|
-
* uuid: 'app-1',
|
1815
|
-
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.executeJavaScript.html',
|
1816
|
-
* autoShow: true
|
1817
|
-
* });
|
1818
|
-
* const win = await app.getWindow();
|
1819
|
-
* return await win.executeJavaScript(code);
|
1820
|
-
* }
|
1821
|
-
*
|
1822
|
-
* executeJavaScript(`console.log('Hello, Openfin')`).then(() => console.log('Javascript excuted')).catch(err => console.log(err));
|
1823
|
-
* ```
|
1824
|
-
* @remarks
|
1825
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1826
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1827
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
1828
|
-
*/
|
1829
|
-
executeJavaScript(code) {
|
1830
|
-
return this.wire
|
1831
|
-
.sendAction('execute-javascript-in-window', { ...this.identity, code })
|
1832
|
-
.then(({ payload }) => payload.data);
|
1833
|
-
}
|
1834
|
-
/**
|
1835
|
-
* Returns the zoom level of the WebContents.
|
1836
|
-
*
|
1837
|
-
* @example
|
1838
|
-
* View:
|
1839
|
-
* ```js
|
1840
|
-
* async function getZoomLevel() {
|
1841
|
-
* const view = await fin.View.getCurrent();
|
1842
|
-
* return await view.getZoomLevel();
|
1843
|
-
* }
|
1844
|
-
*
|
1845
|
-
* getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
|
1846
|
-
* ```
|
1847
|
-
*
|
1848
|
-
* Window:
|
1849
|
-
* ```js
|
1850
|
-
* async function createWin() {
|
1851
|
-
* const app = await fin.Application.start({
|
1852
|
-
* name: 'myApp',
|
1853
|
-
* uuid: 'app-1',
|
1854
|
-
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.getZoomLevel.html',
|
1855
|
-
* autoShow: true
|
1856
|
-
* });
|
1857
|
-
* return await app.getWindow();
|
1858
|
-
* }
|
1859
|
-
*
|
1860
|
-
* async function getZoomLevel() {
|
1861
|
-
* const win = await createWin();
|
1862
|
-
* return await win.getZoomLevel();
|
1863
|
-
* }
|
1864
|
-
*
|
1865
|
-
* getZoomLevel().then(zoomLevel => console.log(zoomLevel)).catch(err => console.log(err));
|
1866
|
-
* ```
|
1867
|
-
* @remarks
|
1868
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1869
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1870
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
1871
|
-
*/
|
1872
|
-
getZoomLevel() {
|
1873
|
-
return this.wire.sendAction('get-zoom-level', this.identity).then(({ payload }) => payload.data);
|
1874
|
-
}
|
1875
|
-
/**
|
1876
|
-
* Sets the zoom level of the WebContents.
|
1877
|
-
* @param level The zoom level
|
1878
|
-
*
|
1879
|
-
* @example
|
1880
|
-
* View:
|
1881
|
-
* ```js
|
1882
|
-
* async function setZoomLevel(number) {
|
1883
|
-
* const view = await fin.View.getCurrent();
|
1884
|
-
* return await view.setZoomLevel(number);
|
1885
|
-
* }
|
1886
|
-
*
|
1887
|
-
* setZoomLevel(4).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
|
1888
|
-
* ```
|
1889
|
-
*
|
1890
|
-
* Window:
|
1891
|
-
* ```js
|
1892
|
-
* async function createWin() {
|
1893
|
-
* const app = await fin.Application.start({
|
1894
|
-
* name: 'myApp',
|
1895
|
-
* uuid: 'app-1',
|
1896
|
-
* url: 'https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.setZoomLevel.html',
|
1897
|
-
* autoShow: true
|
1898
|
-
* });
|
1899
|
-
* return await app.getWindow();
|
1900
|
-
* }
|
1901
|
-
*
|
1902
|
-
* async function setZoomLevel(number) {
|
1903
|
-
* const win = await createWin();
|
1904
|
-
* return await win.setZoomLevel(number);
|
1905
|
-
* }
|
1906
|
-
*
|
1907
|
-
* setZoomLevel(4).then(() => console.log('Setting a zoom level')).catch(err => console.log(err));
|
1908
|
-
* ```
|
1909
|
-
* @remarks
|
1910
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1911
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1912
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
1913
|
-
*/
|
1914
|
-
setZoomLevel(level) {
|
1915
|
-
return this.wire.sendAction('set-zoom-level', { ...this.identity, level }).then(() => undefined);
|
1916
|
-
}
|
1917
|
-
/**
|
1918
|
-
* Navigates the WebContents to a specified URL.
|
1919
|
-
*
|
1920
|
-
* Note: The url must contain the protocol prefix such as http:// or https://.
|
1921
|
-
* @param url - The URL to navigate the WebContents to.
|
1922
|
-
*
|
1923
|
-
* @example
|
1924
|
-
* View:
|
1925
|
-
* ```js
|
1926
|
-
* async function createView() {
|
1927
|
-
* const me = await fin.Window.getCurrent();
|
1928
|
-
* return fin.View.create({
|
1929
|
-
* name: 'viewName',
|
1930
|
-
* target: me.identity,
|
1931
|
-
* bounds: {top: 10, left: 10, width: 200, height: 200}
|
1932
|
-
* });
|
1933
|
-
* }
|
1934
|
-
*
|
1935
|
-
* createView()
|
1936
|
-
* .then(view => view.navigate('https://example.com'))
|
1937
|
-
* .then(() => console.log('navigation complete'))
|
1938
|
-
* .catch(err => console.log(err));
|
1939
|
-
* ```
|
1940
|
-
*
|
1941
|
-
* Window:
|
1942
|
-
* ```js
|
1943
|
-
* async function navigate() {
|
1944
|
-
* const win = await fin.Window.getCurrent();
|
1945
|
-
* return await win.navigate('https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.navigate.html');
|
1946
|
-
* }
|
1947
|
-
* navigate().then(() => console.log('Navigate to tutorial')).catch(err => console.log(err));
|
1948
|
-
* ```
|
1949
|
-
* @experimental
|
1950
|
-
* @remarks
|
1951
|
-
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1952
|
-
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1953
|
-
* {@link OpenFin.WebContentsEvents event namespace}.
|
1254
|
+
* Navigates the WebContents to a specified URL.
|
1255
|
+
*
|
1256
|
+
* Note: The url must contain the protocol prefix such as http:// or https://.
|
1257
|
+
* @param url - The URL to navigate the WebContents to.
|
1258
|
+
*
|
1259
|
+
* @example
|
1260
|
+
* View:
|
1261
|
+
* ```js
|
1262
|
+
* async function createView() {
|
1263
|
+
* const me = await fin.Window.getCurrent();
|
1264
|
+
* return fin.View.create({
|
1265
|
+
* name: 'viewName',
|
1266
|
+
* target: me.identity,
|
1267
|
+
* bounds: {top: 10, left: 10, width: 200, height: 200}
|
1268
|
+
* });
|
1269
|
+
* }
|
1270
|
+
*
|
1271
|
+
* createView()
|
1272
|
+
* .then(view => view.navigate('https://example.com'))
|
1273
|
+
* .then(() => console.log('navigation complete'))
|
1274
|
+
* .catch(err => console.log(err));
|
1275
|
+
* ```
|
1276
|
+
*
|
1277
|
+
* Window:
|
1278
|
+
* ```js
|
1279
|
+
* async function navigate() {
|
1280
|
+
* const win = await fin.Window.getCurrent();
|
1281
|
+
* return await win.navigate('https://cdn.openfin.co/docs/javascript/stable/tutorial-Window.navigate.html');
|
1282
|
+
* }
|
1283
|
+
* navigate().then(() => console.log('Navigate to tutorial')).catch(err => console.log(err));
|
1284
|
+
* ```
|
1285
|
+
* @experimental
|
1286
|
+
* @remarks
|
1287
|
+
* `WebContents` refers to shared functionality between {@link OpenFin.Window} and {@link OpenFin.View}.
|
1288
|
+
* We do not expose an explicit superclass for this functionality, but it does have its own
|
1289
|
+
* {@link OpenFin.WebContentsEvents event namespace}.
|
1954
1290
|
*/
|
1955
1291
|
navigate(url) {
|
1956
1292
|
return this.wire.sendAction('navigate-window', { ...this.identity, url }).then(() => undefined);
|
@@ -2795,18 +2131,11 @@ var hasRequiredInstance$2;
|
|
2795
2131
|
function requireInstance$2 () {
|
2796
2132
|
if (hasRequiredInstance$2) return Instance$5;
|
2797
2133
|
hasRequiredInstance$2 = 1;
|
2798
|
-
var __classPrivateFieldGet = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
2799
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
2800
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
2801
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
2802
|
-
};
|
2803
2134
|
var _View_providerChannelClient;
|
2804
2135
|
Object.defineProperty(Instance$5, "__esModule", { value: true });
|
2805
2136
|
Instance$5.View = void 0;
|
2806
2137
|
const transport_errors_1 = transportErrors;
|
2807
2138
|
const lazy_1 = lazy;
|
2808
|
-
const layout_entities_1 = layoutEntities;
|
2809
|
-
const layout_constants_1 = layout_constants;
|
2810
2139
|
const main_1 = main;
|
2811
2140
|
const window_1 = requireWindow();
|
2812
2141
|
/**
|
@@ -3124,7 +2453,7 @@ function requireInstance$2 () {
|
|
3124
2453
|
return ack.payload.data;
|
3125
2454
|
};
|
3126
2455
|
/**
|
3127
|
-
* Retrieves the
|
2456
|
+
* Retrieves the OpenFin.Layout instance for the Window the View is attached to.
|
3128
2457
|
*
|
3129
2458
|
* @example
|
3130
2459
|
* ```js
|
@@ -3140,29 +2469,7 @@ function requireInstance$2 () {
|
|
3140
2469
|
this.wire.sendAction('view-get-parent-layout', { ...this.identity }).catch(() => {
|
3141
2470
|
// don't expose
|
3142
2471
|
});
|
3143
|
-
|
3144
|
-
let layoutWindowIdentity = layoutWindow.identity;
|
3145
|
-
// TODO: CORE-1857 - when we tearout active layout or drag a view out of a window, the above identity includes the whole window info.
|
3146
|
-
if (layoutWindowIdentity.identity) {
|
3147
|
-
layoutWindowIdentity = layoutWindowIdentity.identity;
|
3148
|
-
}
|
3149
|
-
try {
|
3150
|
-
const providerChannelClient = await __classPrivateFieldGet(this, _View_providerChannelClient, "f").getValue();
|
3151
|
-
const client = await layout_entities_1.LayoutNode.newLayoutEntitiesClient(providerChannelClient, layout_constants_1.LAYOUT_CONTROLLER_ID, layoutWindowIdentity);
|
3152
|
-
const layoutIdentity = await client.getLayoutIdentityForViewOrThrow(this.identity);
|
3153
|
-
return this.fin.Platform.Layout.wrap(layoutIdentity);
|
3154
|
-
}
|
3155
|
-
catch (e) {
|
3156
|
-
const allowedErrors = [
|
3157
|
-
'No action registered at target for',
|
3158
|
-
'getLayoutIdentityForViewOrThrow is not a function'
|
3159
|
-
];
|
3160
|
-
if (!allowedErrors.some((m) => e.message.includes(m))) {
|
3161
|
-
throw e;
|
3162
|
-
}
|
3163
|
-
// fallback logic for missing endpoint
|
3164
|
-
return this.fin.Platform.Layout.wrap(layoutWindowIdentity);
|
3165
|
-
}
|
2472
|
+
return this.fin.Platform.Layout.getLayoutByViewIdentity(this.identity);
|
3166
2473
|
};
|
3167
2474
|
/**
|
3168
2475
|
* Gets the View's options.
|
@@ -3278,11 +2585,8 @@ function requireInstance$2 () {
|
|
3278
2585
|
// don't expose
|
3279
2586
|
});
|
3280
2587
|
try {
|
3281
|
-
const
|
3282
|
-
|
3283
|
-
const client = await layout_entities_1.LayoutNode.newLayoutEntitiesClient(providerChannelClient, layout_constants_1.LAYOUT_CONTROLLER_ID, layoutWindow.identity);
|
3284
|
-
const stackDefinition = (await client.getStackByView(this.identity));
|
3285
|
-
return layout_entities_1.LayoutNode.getEntity(stackDefinition, client);
|
2588
|
+
const layout = await this.getParentLayout();
|
2589
|
+
return layout.getStackByViewIdentity(this.identity);
|
3286
2590
|
}
|
3287
2591
|
catch (error) {
|
3288
2592
|
throw new transport_errors_1.RuntimeError({ reason: 'This view does not belong to a stack.', error });
|
@@ -6053,13 +5357,6 @@ class System extends base_1$i.EmitterBase {
|
|
6053
5357
|
constructor(wire) {
|
6054
5358
|
super(wire, 'system');
|
6055
5359
|
}
|
6056
|
-
/**
|
6057
|
-
* Dispatch an event to the webcontents that created the notification.
|
6058
|
-
* Only works for notifications that have been intercepted in the same runtime.
|
6059
|
-
*/
|
6060
|
-
async dispatchNotificationAction(notificationId, { action }) {
|
6061
|
-
await this.wire.sendAction('dispatch-notification-action', { notificationId, action });
|
6062
|
-
}
|
6063
5360
|
sendExternalProcessRequest(action, options) {
|
6064
5361
|
return new Promise((resolve, reject) => {
|
6065
5362
|
const exitEventKey = 'external-process-exited';
|
@@ -6328,7 +5625,9 @@ class System extends base_1$i.EmitterBase {
|
|
6328
5625
|
.then(({ payload }) => payload.data);
|
6329
5626
|
}
|
6330
5627
|
/**
|
6331
|
-
* Get
|
5628
|
+
* Get currently focused Window.
|
5629
|
+
* If a View currently has focus, returns the identity of View's parent Window.
|
5630
|
+
* Use {@link Window._Window#getFocusedContent Window.getFocusedContent} to directly access currently focused Window or View.
|
6332
5631
|
*
|
6333
5632
|
* @example
|
6334
5633
|
* ```js
|
@@ -6338,6 +5637,17 @@ class System extends base_1$i.EmitterBase {
|
|
6338
5637
|
getFocusedWindow() {
|
6339
5638
|
return this.wire.sendAction('get-focused-window').then(({ payload }) => payload.data);
|
6340
5639
|
}
|
5640
|
+
/**
|
5641
|
+
* Get currently focused content. Returns identity of entity with `entityType`.
|
5642
|
+
*
|
5643
|
+
* @example
|
5644
|
+
* ```js
|
5645
|
+
* fin.System.getFocusedContent().then(contentIdentity => console.log(contentIdentity)).catch(err => console.log(err));
|
5646
|
+
* ```
|
5647
|
+
*/
|
5648
|
+
getFocusedContent() {
|
5649
|
+
return this.wire.sendAction('get-focused-content').then(({ payload }) => payload.data);
|
5650
|
+
}
|
6341
5651
|
/**
|
6342
5652
|
* Returns information about the given app's certification status
|
6343
5653
|
*
|
@@ -7901,6 +7211,22 @@ class System extends base_1$i.EmitterBase {
|
|
7901
7211
|
async setDomainSettings(domainSettings) {
|
7902
7212
|
await this.wire.sendAction('set-domain-settings', { domainSettings, ...this.identity });
|
7903
7213
|
}
|
7214
|
+
/**
|
7215
|
+
* Attempts to install and enable extensions for the security realm. Users may want to call this function in response
|
7216
|
+
* to an `extensions-install-failed` event. Only extensions allowed by every application on the current security realm
|
7217
|
+
* will be installed/enabled.
|
7218
|
+
*/
|
7219
|
+
async refreshExtensions() {
|
7220
|
+
const { payload } = await this.wire.sendAction('refresh-extensions');
|
7221
|
+
return payload.data;
|
7222
|
+
}
|
7223
|
+
/**
|
7224
|
+
* Gets the currently-installed
|
7225
|
+
*/
|
7226
|
+
async getInstalledExtensions() {
|
7227
|
+
const { payload } = await this.wire.sendAction('get-installed-extensions');
|
7228
|
+
return payload.data;
|
7229
|
+
}
|
7904
7230
|
}
|
7905
7231
|
system.System = System;
|
7906
7232
|
|
@@ -8322,12 +7648,12 @@ class ChannelError extends Error {
|
|
8322
7648
|
}
|
8323
7649
|
channelError.ChannelError = ChannelError;
|
8324
7650
|
|
8325
|
-
var __classPrivateFieldGet$
|
7651
|
+
var __classPrivateFieldGet$d = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
8326
7652
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
8327
7653
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
8328
7654
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
8329
7655
|
};
|
8330
|
-
var __classPrivateFieldSet$
|
7656
|
+
var __classPrivateFieldSet$c = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
8331
7657
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
8332
7658
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
8333
7659
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
@@ -8371,7 +7697,7 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
8371
7697
|
static closeChannelByEndpointId(id) {
|
8372
7698
|
const channel = channelClientsByEndpointId.get(id);
|
8373
7699
|
if (channel) {
|
8374
|
-
__classPrivateFieldGet$
|
7700
|
+
__classPrivateFieldGet$d(channel, _ChannelClient_close, "f").call(channel);
|
8375
7701
|
}
|
8376
7702
|
}
|
8377
7703
|
/**
|
@@ -8382,7 +7708,7 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
8382
7708
|
for (const channelClient of channelClientsByEndpointId.values()) {
|
8383
7709
|
if (channelClient.providerIdentity.channelId === eventPayload.channelId) {
|
8384
7710
|
channelClient.disconnectListener(eventPayload);
|
8385
|
-
__classPrivateFieldGet$
|
7711
|
+
__classPrivateFieldGet$d(channelClient, _ChannelClient_close, "f").call(channelClient);
|
8386
7712
|
}
|
8387
7713
|
}
|
8388
7714
|
}
|
@@ -8397,12 +7723,12 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
8397
7723
|
this.processAction = (action, payload, senderIdentity) => super.processAction(action, payload, senderIdentity);
|
8398
7724
|
_ChannelClient_close.set(this, () => {
|
8399
7725
|
channelClientsByEndpointId.delete(this.endpointId);
|
8400
|
-
__classPrivateFieldGet$
|
7726
|
+
__classPrivateFieldGet$d(this, _ChannelClient_strategy, "f").close();
|
8401
7727
|
});
|
8402
|
-
__classPrivateFieldSet$
|
7728
|
+
__classPrivateFieldSet$c(this, _ChannelClient_protectedObj, new channel_1$1.ProtectedItems(routingInfo, close), "f");
|
8403
7729
|
this.disconnectListener = () => undefined;
|
8404
7730
|
this.endpointId = routingInfo.endpointId;
|
8405
|
-
__classPrivateFieldSet$
|
7731
|
+
__classPrivateFieldSet$c(this, _ChannelClient_strategy, strategy, "f");
|
8406
7732
|
channelClientsByEndpointId.set(this.endpointId, this);
|
8407
7733
|
strategy.receive(this.processAction);
|
8408
7734
|
}
|
@@ -8410,7 +7736,7 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
8410
7736
|
* a read-only provider identity
|
8411
7737
|
*/
|
8412
7738
|
get providerIdentity() {
|
8413
|
-
const protectedObj = __classPrivateFieldGet$
|
7739
|
+
const protectedObj = __classPrivateFieldGet$d(this, _ChannelClient_protectedObj, "f");
|
8414
7740
|
return protectedObj.providerIdentity;
|
8415
7741
|
}
|
8416
7742
|
/**
|
@@ -8439,9 +7765,9 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
8439
7765
|
* ```
|
8440
7766
|
*/
|
8441
7767
|
async dispatch(action, payload) {
|
8442
|
-
if (__classPrivateFieldGet$
|
7768
|
+
if (__classPrivateFieldGet$d(this, _ChannelClient_strategy, "f").isEndpointConnected(this.providerIdentity.channelId)) {
|
8443
7769
|
const callSites = transport_errors_1$2.RuntimeError.getCallSite();
|
8444
|
-
return __classPrivateFieldGet$
|
7770
|
+
return __classPrivateFieldGet$d(this, _ChannelClient_strategy, "f").send(this.providerIdentity.channelId, action, payload).catch((e) => {
|
8445
7771
|
throw new channel_error_1$1.ChannelError(e, action, payload, callSites);
|
8446
7772
|
});
|
8447
7773
|
}
|
@@ -8493,10 +7819,10 @@ class ChannelClient extends channel_1$1.ChannelBase {
|
|
8493
7819
|
*/
|
8494
7820
|
async disconnect() {
|
8495
7821
|
await this.sendDisconnectAction();
|
8496
|
-
__classPrivateFieldGet$
|
7822
|
+
__classPrivateFieldGet$d(this, _ChannelClient_close, "f").call(this);
|
8497
7823
|
}
|
8498
7824
|
async sendDisconnectAction() {
|
8499
|
-
const protectedObj = __classPrivateFieldGet$
|
7825
|
+
const protectedObj = __classPrivateFieldGet$d(this, _ChannelClient_protectedObj, "f");
|
8500
7826
|
await protectedObj.close();
|
8501
7827
|
}
|
8502
7828
|
/**
|
@@ -8529,13 +7855,13 @@ exhaustive.exhaustiveCheck = exhaustiveCheck;
|
|
8529
7855
|
|
8530
7856
|
var strategy$3 = {};
|
8531
7857
|
|
8532
|
-
var __classPrivateFieldSet$
|
7858
|
+
var __classPrivateFieldSet$b = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
8533
7859
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
8534
7860
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
8535
7861
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
8536
7862
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
8537
7863
|
};
|
8538
|
-
var __classPrivateFieldGet$
|
7864
|
+
var __classPrivateFieldGet$c = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
8539
7865
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
8540
7866
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
8541
7867
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
@@ -8560,7 +7886,7 @@ class ClassicStrategy {
|
|
8560
7886
|
// connection problems occur
|
8561
7887
|
_ClassicStrategy_pendingMessagesByEndpointId.set(this, new Map());
|
8562
7888
|
this.send = async (endpointId, action, payload) => {
|
8563
|
-
const to = __classPrivateFieldGet$
|
7889
|
+
const to = __classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").get(endpointId);
|
8564
7890
|
if (!to) {
|
8565
7891
|
throw new Error(`Could not locate routing info for endpoint ${endpointId}`);
|
8566
7892
|
}
|
@@ -8572,13 +7898,13 @@ class ClassicStrategy {
|
|
8572
7898
|
}
|
8573
7899
|
delete cleanId.isLocalEndpointId;
|
8574
7900
|
// grab the promise before awaiting it to save in our pending messages map
|
8575
|
-
const p = __classPrivateFieldGet$
|
7901
|
+
const p = __classPrivateFieldGet$c(this, _ClassicStrategy_wire, "f").sendAction('send-channel-message', {
|
8576
7902
|
...cleanId,
|
8577
7903
|
providerIdentity: this.providerIdentity,
|
8578
7904
|
action,
|
8579
7905
|
payload
|
8580
7906
|
});
|
8581
|
-
__classPrivateFieldGet$
|
7907
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").get(endpointId)?.add(p);
|
8582
7908
|
const raw = await p
|
8583
7909
|
.catch((error) => {
|
8584
7910
|
if ('cause' in error) {
|
@@ -8588,16 +7914,16 @@ class ClassicStrategy {
|
|
8588
7914
|
})
|
8589
7915
|
.finally(() => {
|
8590
7916
|
// clean up the pending promise
|
8591
|
-
__classPrivateFieldGet$
|
7917
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").get(endpointId)?.delete(p);
|
8592
7918
|
});
|
8593
7919
|
return raw.payload.data.result;
|
8594
7920
|
};
|
8595
7921
|
this.close = async () => {
|
8596
7922
|
this.messageReceiver.removeEndpoint(this.providerIdentity.channelId, this.endpointId);
|
8597
|
-
[...__classPrivateFieldGet$
|
8598
|
-
__classPrivateFieldSet$
|
7923
|
+
[...__classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").keys()].forEach((id) => this.closeEndpoint(id));
|
7924
|
+
__classPrivateFieldSet$b(this, _ClassicStrategy_endpointIdentityMap, new Map(), "f");
|
8599
7925
|
};
|
8600
|
-
__classPrivateFieldSet$
|
7926
|
+
__classPrivateFieldSet$b(this, _ClassicStrategy_wire, wire, "f");
|
8601
7927
|
}
|
8602
7928
|
onEndpointDisconnect(endpointId, listener) {
|
8603
7929
|
// Never fires for 'classic'.
|
@@ -8606,20 +7932,20 @@ class ClassicStrategy {
|
|
8606
7932
|
this.messageReceiver.addEndpoint(listener, this.providerIdentity.channelId, this.endpointId);
|
8607
7933
|
}
|
8608
7934
|
async closeEndpoint(endpointId) {
|
8609
|
-
const id = __classPrivateFieldGet$
|
8610
|
-
__classPrivateFieldGet$
|
8611
|
-
const pendingSet = __classPrivateFieldGet$
|
7935
|
+
const id = __classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").get(endpointId);
|
7936
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").delete(endpointId);
|
7937
|
+
const pendingSet = __classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").get(endpointId);
|
8612
7938
|
pendingSet?.forEach((p) => {
|
8613
7939
|
const errorMsg = `Channel connection with identity uuid: ${id?.uuid} / name: ${id?.name} / endpointId: ${endpointId} no longer connected.`;
|
8614
7940
|
p.cancel(new Error(errorMsg));
|
8615
7941
|
});
|
8616
7942
|
}
|
8617
7943
|
isEndpointConnected(endpointId) {
|
8618
|
-
return __classPrivateFieldGet$
|
7944
|
+
return __classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").has(endpointId);
|
8619
7945
|
}
|
8620
7946
|
addEndpoint(endpointId, payload) {
|
8621
|
-
__classPrivateFieldGet$
|
8622
|
-
__classPrivateFieldGet$
|
7947
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_endpointIdentityMap, "f").set(endpointId, payload.endpointIdentity);
|
7948
|
+
__classPrivateFieldGet$c(this, _ClassicStrategy_pendingMessagesByEndpointId, "f").set(endpointId, new Set());
|
8623
7949
|
}
|
8624
7950
|
isValidEndpointPayload(payload) {
|
8625
7951
|
return (typeof payload?.endpointIdentity?.endpointId === 'string' ||
|
@@ -8654,12 +7980,12 @@ function errorToPOJO(error) {
|
|
8654
7980
|
}
|
8655
7981
|
errors.errorToPOJO = errorToPOJO;
|
8656
7982
|
|
8657
|
-
var __classPrivateFieldGet$
|
7983
|
+
var __classPrivateFieldGet$b = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
8658
7984
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
8659
7985
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
8660
7986
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
8661
7987
|
};
|
8662
|
-
var __classPrivateFieldSet$
|
7988
|
+
var __classPrivateFieldSet$a = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
8663
7989
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
8664
7990
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
8665
7991
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
@@ -8694,8 +8020,8 @@ class RTCEndpoint {
|
|
8694
8020
|
if (this.rtc.rtcClient.connectionState !== 'connected') {
|
8695
8021
|
this.rtc.rtcClient.removeEventListener('connectionstatechange', this.connectionStateChangeHandler);
|
8696
8022
|
this.close();
|
8697
|
-
if (__classPrivateFieldGet$
|
8698
|
-
__classPrivateFieldGet$
|
8023
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f")) {
|
8024
|
+
__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f").call(this);
|
8699
8025
|
}
|
8700
8026
|
}
|
8701
8027
|
};
|
@@ -8743,9 +8069,9 @@ class RTCEndpoint {
|
|
8743
8069
|
data = new TextDecoder().decode(e.data);
|
8744
8070
|
}
|
8745
8071
|
const { messageId, action, payload } = JSON.parse(data);
|
8746
|
-
if (__classPrivateFieldGet$
|
8072
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_processAction, "f")) {
|
8747
8073
|
try {
|
8748
|
-
const res = await __classPrivateFieldGet$
|
8074
|
+
const res = await __classPrivateFieldGet$b(this, _RTCEndpoint_processAction, "f").call(this, action, payload, endpointIdentity);
|
8749
8075
|
this.rtc.channels.response.send(JSON.stringify({
|
8750
8076
|
messageId,
|
8751
8077
|
payload: res,
|
@@ -8779,25 +8105,25 @@ class RTCEndpoint {
|
|
8779
8105
|
datachannel.onclose = (e) => {
|
8780
8106
|
[...this.responseMap.values()].forEach((promise) => promise.reject(new Error('RTCDataChannel closed unexpectedly, this is most commonly caused by message size. Note: RTC Channels have a message size limit of ~255kB.')));
|
8781
8107
|
this.close();
|
8782
|
-
if (__classPrivateFieldGet$
|
8783
|
-
__classPrivateFieldGet$
|
8108
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f")) {
|
8109
|
+
__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f").call(this);
|
8784
8110
|
}
|
8785
8111
|
};
|
8786
8112
|
});
|
8787
8113
|
}
|
8788
8114
|
onDisconnect(listener) {
|
8789
|
-
if (!__classPrivateFieldGet$
|
8790
|
-
__classPrivateFieldSet$
|
8115
|
+
if (!__classPrivateFieldGet$b(this, _RTCEndpoint_disconnectListener, "f")) {
|
8116
|
+
__classPrivateFieldSet$a(this, _RTCEndpoint_disconnectListener, listener, "f");
|
8791
8117
|
}
|
8792
8118
|
else {
|
8793
8119
|
throw new Error('RTCEndpoint disconnectListener cannot be set twice.');
|
8794
8120
|
}
|
8795
8121
|
}
|
8796
8122
|
receive(listener) {
|
8797
|
-
if (__classPrivateFieldGet$
|
8123
|
+
if (__classPrivateFieldGet$b(this, _RTCEndpoint_processAction, "f")) {
|
8798
8124
|
throw new Error('You have already set a listener for this RTC Endpoint.');
|
8799
8125
|
}
|
8800
|
-
__classPrivateFieldSet$
|
8126
|
+
__classPrivateFieldSet$a(this, _RTCEndpoint_processAction, listener, "f");
|
8801
8127
|
}
|
8802
8128
|
get connected() {
|
8803
8129
|
return this.rtc.rtcClient.connectionState === 'connected';
|
@@ -8808,12 +8134,12 @@ _RTCEndpoint_processAction = new WeakMap(), _RTCEndpoint_disconnectListener = ne
|
|
8808
8134
|
|
8809
8135
|
var strategy$1 = {};
|
8810
8136
|
|
8811
|
-
var __classPrivateFieldGet$
|
8137
|
+
var __classPrivateFieldGet$a = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
8812
8138
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
8813
8139
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
8814
8140
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
8815
8141
|
};
|
8816
|
-
var __classPrivateFieldSet$
|
8142
|
+
var __classPrivateFieldSet$9 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
8817
8143
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
8818
8144
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
8819
8145
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
@@ -8834,11 +8160,11 @@ class EndpointStrategy {
|
|
8834
8160
|
return this.getEndpointById(endpointId).send(action, payload);
|
8835
8161
|
};
|
8836
8162
|
this.close = async () => {
|
8837
|
-
if (__classPrivateFieldGet$
|
8838
|
-
__classPrivateFieldGet$
|
8839
|
-
__classPrivateFieldSet$
|
8163
|
+
if (__classPrivateFieldGet$a(this, _EndpointStrategy_connected, "f")) {
|
8164
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").forEach((endpoint) => endpoint.close());
|
8165
|
+
__classPrivateFieldSet$9(this, _EndpointStrategy_endpointMap, new Map(), "f");
|
8840
8166
|
}
|
8841
|
-
__classPrivateFieldSet$
|
8167
|
+
__classPrivateFieldSet$9(this, _EndpointStrategy_connected, false, "f");
|
8842
8168
|
};
|
8843
8169
|
this.isValidEndpointPayload = validateEndpoint;
|
8844
8170
|
}
|
@@ -8846,39 +8172,39 @@ class EndpointStrategy {
|
|
8846
8172
|
this.getEndpointById(endpointId).onDisconnect(listener);
|
8847
8173
|
}
|
8848
8174
|
receive(listener) {
|
8849
|
-
if (__classPrivateFieldGet$
|
8175
|
+
if (__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f")) {
|
8850
8176
|
throw new Error(`You have already set a listener for this ${this.StrategyName} Strategy`);
|
8851
8177
|
}
|
8852
|
-
__classPrivateFieldSet$
|
8178
|
+
__classPrivateFieldSet$9(this, _EndpointStrategy_processAction, listener, "f");
|
8853
8179
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
8854
|
-
__classPrivateFieldGet$
|
8180
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").forEach((endpoint) => endpoint.receive(__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f")));
|
8855
8181
|
}
|
8856
8182
|
getEndpointById(endpointId) {
|
8857
|
-
const endpoint = __classPrivateFieldGet$
|
8183
|
+
const endpoint = __classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").get(endpointId);
|
8858
8184
|
if (!endpoint) {
|
8859
8185
|
throw new Error(`Client with endpoint id ${endpointId} is not connected`);
|
8860
8186
|
}
|
8861
8187
|
return endpoint;
|
8862
8188
|
}
|
8863
8189
|
get connected() {
|
8864
|
-
return __classPrivateFieldGet$
|
8190
|
+
return __classPrivateFieldGet$a(this, _EndpointStrategy_connected, "f");
|
8865
8191
|
}
|
8866
8192
|
isEndpointConnected(endpointId) {
|
8867
|
-
return __classPrivateFieldGet$
|
8193
|
+
return __classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").has(endpointId);
|
8868
8194
|
}
|
8869
8195
|
addEndpoint(endpointId, payload) {
|
8870
|
-
if (!__classPrivateFieldGet$
|
8196
|
+
if (!__classPrivateFieldGet$a(this, _EndpointStrategy_connected, "f")) {
|
8871
8197
|
console.warn(`Adding endpoint to disconnected ${this.StrategyName} Strategy`);
|
8872
8198
|
return;
|
8873
8199
|
}
|
8874
8200
|
const clientStrat = new this.EndpointType(payload);
|
8875
|
-
if (__classPrivateFieldGet$
|
8876
|
-
clientStrat.receive(__classPrivateFieldGet$
|
8201
|
+
if (__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f")) {
|
8202
|
+
clientStrat.receive(__classPrivateFieldGet$a(this, _EndpointStrategy_processAction, "f"));
|
8877
8203
|
}
|
8878
|
-
__classPrivateFieldGet$
|
8204
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").set(endpointId, clientStrat);
|
8879
8205
|
}
|
8880
8206
|
async closeEndpoint(endpointId) {
|
8881
|
-
__classPrivateFieldGet$
|
8207
|
+
__classPrivateFieldGet$a(this, _EndpointStrategy_endpointMap, "f").delete(endpointId);
|
8882
8208
|
}
|
8883
8209
|
}
|
8884
8210
|
strategy$1.EndpointStrategy = EndpointStrategy;
|
@@ -9060,12 +8386,12 @@ function runtimeUuidMeetsMinimumRuntimeVersion(runtimeUuid, minVersion) {
|
|
9060
8386
|
}
|
9061
8387
|
runtimeVersioning.runtimeUuidMeetsMinimumRuntimeVersion = runtimeUuidMeetsMinimumRuntimeVersion;
|
9062
8388
|
|
9063
|
-
var __classPrivateFieldGet$
|
8389
|
+
var __classPrivateFieldGet$9 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
9064
8390
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
9065
8391
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
9066
8392
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
9067
8393
|
};
|
9068
|
-
var __classPrivateFieldSet$
|
8394
|
+
var __classPrivateFieldSet$8 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
9069
8395
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
9070
8396
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
9071
8397
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
@@ -9109,18 +8435,18 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9109
8435
|
* a read-only array containing all the identities of connecting clients.
|
9110
8436
|
*/
|
9111
8437
|
get connections() {
|
9112
|
-
return [...__classPrivateFieldGet$
|
8438
|
+
return [...__classPrivateFieldGet$9(this, _ChannelProvider_connections, "f")];
|
9113
8439
|
}
|
9114
8440
|
static handleClientDisconnection(channel, payload) {
|
9115
8441
|
const removeById = channel.connections.find((identity) => identity.endpointId === payload.endpointId);
|
9116
8442
|
if (removeById) {
|
9117
|
-
__classPrivateFieldGet$
|
8443
|
+
__classPrivateFieldGet$9(channel, _ChannelProvider_removeEndpoint, "f").call(channel, removeById);
|
9118
8444
|
}
|
9119
8445
|
else {
|
9120
8446
|
const multipleRemoves = channel.connections.filter((identity) => {
|
9121
8447
|
return identity.uuid === payload.uuid && identity.name === payload.name;
|
9122
8448
|
});
|
9123
|
-
multipleRemoves.forEach(__classPrivateFieldGet$
|
8449
|
+
multipleRemoves.forEach(__classPrivateFieldGet$9(channel, _ChannelProvider_removeEndpoint, "f"));
|
9124
8450
|
}
|
9125
8451
|
channel.disconnectListener(payload);
|
9126
8452
|
}
|
@@ -9137,8 +8463,8 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9137
8463
|
_ChannelProvider_strategy.set(this, void 0);
|
9138
8464
|
_ChannelProvider_removeEndpoint.set(this, (identity) => {
|
9139
8465
|
const remainingConnections = this.connections.filter((clientIdentity) => clientIdentity.endpointId !== identity.endpointId);
|
9140
|
-
__classPrivateFieldGet$
|
9141
|
-
__classPrivateFieldSet$
|
8466
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").closeEndpoint(identity.endpointId);
|
8467
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_connections, remainingConnections, "f");
|
9142
8468
|
});
|
9143
8469
|
// Must be bound.
|
9144
8470
|
this.processAction = async (action, payload, senderIdentity) => {
|
@@ -9152,17 +8478,17 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9152
8478
|
return super.processAction(action, payload, senderIdentity);
|
9153
8479
|
};
|
9154
8480
|
_ChannelProvider_close.set(this, () => {
|
9155
|
-
__classPrivateFieldGet$
|
8481
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").close();
|
9156
8482
|
const remove = ChannelProvider.removalMap.get(this);
|
9157
8483
|
if (remove) {
|
9158
8484
|
remove();
|
9159
8485
|
}
|
9160
8486
|
});
|
9161
|
-
__classPrivateFieldSet$
|
8487
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_protectedObj, new channel_1.ProtectedItems(providerIdentity, close), "f");
|
9162
8488
|
this.connectListener = () => undefined;
|
9163
8489
|
this.disconnectListener = () => undefined;
|
9164
|
-
__classPrivateFieldSet$
|
9165
|
-
__classPrivateFieldSet$
|
8490
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_connections, [], "f");
|
8491
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_strategy, strategy, "f");
|
9166
8492
|
strategy.receive(this.processAction);
|
9167
8493
|
}
|
9168
8494
|
/**
|
@@ -9193,16 +8519,16 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9193
8519
|
*/
|
9194
8520
|
dispatch(to, action, payload) {
|
9195
8521
|
const endpointId = to.endpointId ?? this.getEndpointIdForOpenFinId(to, action);
|
9196
|
-
if (endpointId && __classPrivateFieldGet$
|
8522
|
+
if (endpointId && __classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").isEndpointConnected(endpointId)) {
|
9197
8523
|
const callSites = transport_errors_1$1.RuntimeError.getCallSite();
|
9198
|
-
return __classPrivateFieldGet$
|
8524
|
+
return __classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").send(endpointId, action, payload).catch((e) => {
|
9199
8525
|
throw new channel_error_1.ChannelError(e, action, payload, callSites);
|
9200
8526
|
});
|
9201
8527
|
}
|
9202
8528
|
return Promise.reject(new Error(`Client connection with identity uuid: ${to.uuid} / name: ${to.name} / endpointId: ${endpointId} no longer connected.`));
|
9203
8529
|
}
|
9204
8530
|
async processConnection(senderId, payload) {
|
9205
|
-
__classPrivateFieldGet$
|
8531
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_connections, "f").push(senderId);
|
9206
8532
|
return this.connectListener(senderId, payload);
|
9207
8533
|
}
|
9208
8534
|
/**
|
@@ -9225,7 +8551,7 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9225
8551
|
* ```
|
9226
8552
|
*/
|
9227
8553
|
publish(action, payload) {
|
9228
|
-
return this.connections.map((to) => __classPrivateFieldGet$
|
8554
|
+
return this.connections.map((to) => __classPrivateFieldGet$9(this, _ChannelProvider_strategy, "f").send(to.endpointId, action, payload));
|
9229
8555
|
}
|
9230
8556
|
/**
|
9231
8557
|
* Register a listener that is called on every new client connection.
|
@@ -9299,11 +8625,11 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9299
8625
|
* ```
|
9300
8626
|
*/
|
9301
8627
|
async destroy() {
|
9302
|
-
const protectedObj = __classPrivateFieldGet$
|
8628
|
+
const protectedObj = __classPrivateFieldGet$9(this, _ChannelProvider_protectedObj, "f");
|
9303
8629
|
protectedObj.providerIdentity;
|
9304
|
-
__classPrivateFieldSet$
|
8630
|
+
__classPrivateFieldSet$8(this, _ChannelProvider_connections, [], "f");
|
9305
8631
|
await protectedObj.close();
|
9306
|
-
__classPrivateFieldGet$
|
8632
|
+
__classPrivateFieldGet$9(this, _ChannelProvider_close, "f").call(this);
|
9307
8633
|
}
|
9308
8634
|
/**
|
9309
8635
|
* Returns an array with info on every Client connected to the Provider
|
@@ -9373,7 +8699,7 @@ class ChannelProvider extends channel_1.ChannelBase {
|
|
9373
8699
|
getEndpointIdForOpenFinId(clientIdentity, action) {
|
9374
8700
|
const matchingConnections = this.connections.filter((c) => c.name === clientIdentity.name && c.uuid === clientIdentity.uuid);
|
9375
8701
|
if (matchingConnections.length >= 2) {
|
9376
|
-
const protectedObj = __classPrivateFieldGet$
|
8702
|
+
const protectedObj = __classPrivateFieldGet$9(this, _ChannelProvider_protectedObj, "f");
|
9377
8703
|
const { uuid, name } = clientIdentity;
|
9378
8704
|
const providerUuid = protectedObj?.providerIdentity.uuid;
|
9379
8705
|
const providerName = protectedObj?.providerIdentity.name;
|
@@ -9585,13 +8911,13 @@ class CombinedStrategy {
|
|
9585
8911
|
}
|
9586
8912
|
strategy.default = CombinedStrategy;
|
9587
8913
|
|
9588
|
-
var __classPrivateFieldSet$
|
8914
|
+
var __classPrivateFieldSet$7 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
9589
8915
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
9590
8916
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
9591
8917
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
9592
8918
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
9593
8919
|
};
|
9594
|
-
var __classPrivateFieldGet$
|
8920
|
+
var __classPrivateFieldGet$8 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
9595
8921
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
9596
8922
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
9597
8923
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
@@ -9640,8 +8966,8 @@ class ConnectionManager extends base_1$f.Base {
|
|
9640
8966
|
};
|
9641
8967
|
this.providerMap = new Map();
|
9642
8968
|
this.protocolManager = new protocol_manager_1.ProtocolManager(this.wire.environment.type === 'node' ? ['classic'] : ['rtc', 'classic']);
|
9643
|
-
__classPrivateFieldSet$
|
9644
|
-
__classPrivateFieldSet$
|
8969
|
+
__classPrivateFieldSet$7(this, _ConnectionManager_messageReceiver, new message_receiver_1.MessageReceiver(wire), "f");
|
8970
|
+
__classPrivateFieldSet$7(this, _ConnectionManager_rtcConnectionManager, new ice_manager_1.RTCICEManager(wire), "f");
|
9645
8971
|
wire.registerMessageHandler(this.onmessage.bind(this));
|
9646
8972
|
}
|
9647
8973
|
createProvider(options, providerIdentity) {
|
@@ -9652,7 +8978,7 @@ class ConnectionManager extends base_1$f.Base {
|
|
9652
8978
|
case 'rtc':
|
9653
8979
|
return new strategy_2.RTCStrategy();
|
9654
8980
|
case 'classic':
|
9655
|
-
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$
|
8981
|
+
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$8(this, _ConnectionManager_messageReceiver, "f"),
|
9656
8982
|
// Providers do not have an endpointId, use channelId as endpointId in the strategy.
|
9657
8983
|
providerIdentity.channelId, providerIdentity);
|
9658
8984
|
default:
|
@@ -9688,7 +9014,7 @@ class ConnectionManager extends base_1$f.Base {
|
|
9688
9014
|
const supportedProtocols = await Promise.all(protocols.map(async (type) => {
|
9689
9015
|
switch (type) {
|
9690
9016
|
case 'rtc': {
|
9691
|
-
const { rtcClient, channels, offer, rtcConnectionId, channelsOpened } = await __classPrivateFieldGet$
|
9017
|
+
const { rtcClient, channels, offer, rtcConnectionId, channelsOpened } = await __classPrivateFieldGet$8(this, _ConnectionManager_rtcConnectionManager, "f").startClientOffer();
|
9692
9018
|
rtcPacket = { rtcClient, channels, channelsOpened };
|
9693
9019
|
return {
|
9694
9020
|
type: 'rtc',
|
@@ -9715,18 +9041,18 @@ class ConnectionManager extends base_1$f.Base {
|
|
9715
9041
|
routingInfo.endpointId = this.wire.environment.getNextMessageId();
|
9716
9042
|
// For New Clients connecting to Old Providers. To prevent multi-dispatching and publishing, we delete previously-connected
|
9717
9043
|
// clients that are in the same context as the newly-connected client.
|
9718
|
-
__classPrivateFieldGet$
|
9044
|
+
__classPrivateFieldGet$8(this, _ConnectionManager_messageReceiver, "f").checkForPreviousClientConnection(routingInfo.channelId);
|
9719
9045
|
}
|
9720
9046
|
const answer = routingInfo.answer ?? {
|
9721
9047
|
supportedProtocols: [{ type: 'classic', version: 1 }]
|
9722
9048
|
};
|
9723
9049
|
const createStrategyFromAnswer = async (protocol) => {
|
9724
9050
|
if (protocol.type === 'rtc' && rtcPacket) {
|
9725
|
-
await __classPrivateFieldGet$
|
9051
|
+
await __classPrivateFieldGet$8(this, _ConnectionManager_rtcConnectionManager, "f").finishClientOffer(rtcPacket.rtcClient, protocol.payload.answer, rtcPacket.channelsOpened);
|
9726
9052
|
return new strategy_2.RTCStrategy();
|
9727
9053
|
}
|
9728
9054
|
if (protocol.type === 'classic') {
|
9729
|
-
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$
|
9055
|
+
return new strategy_1.ClassicStrategy(this.wire, __classPrivateFieldGet$8(this, _ConnectionManager_messageReceiver, "f"), routingInfo.endpointId, routingInfo);
|
9730
9056
|
}
|
9731
9057
|
return null;
|
9732
9058
|
};
|
@@ -9794,7 +9120,7 @@ class ConnectionManager extends base_1$f.Base {
|
|
9794
9120
|
clientAnswer = await overlappingProtocols.reduce(async (accumP, protocolToUse) => {
|
9795
9121
|
const answer = await accumP;
|
9796
9122
|
if (protocolToUse.type === 'rtc') {
|
9797
|
-
const { answer: rtcAnswer, rtcClient, channels } = await __classPrivateFieldGet$
|
9123
|
+
const { answer: rtcAnswer, rtcClient, channels } = await __classPrivateFieldGet$8(this, _ConnectionManager_rtcConnectionManager, "f").createProviderAnswer(protocolToUse.payload.rtcConnectionId, protocolToUse.payload.offer);
|
9798
9124
|
answer.supportedProtocols.push({
|
9799
9125
|
type: 'rtc',
|
9800
9126
|
version: strategy_2.RTCInfo.version,
|
@@ -9842,13 +9168,13 @@ _ConnectionManager_messageReceiver = new WeakMap(), _ConnectionManager_rtcConnec
|
|
9842
9168
|
*
|
9843
9169
|
* @packageDocumentation
|
9844
9170
|
*/
|
9845
|
-
var __classPrivateFieldSet$
|
9171
|
+
var __classPrivateFieldSet$6 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
9846
9172
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
9847
9173
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
9848
9174
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
9849
9175
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
9850
9176
|
};
|
9851
|
-
var __classPrivateFieldGet$
|
9177
|
+
var __classPrivateFieldGet$7 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
9852
9178
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
9853
9179
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
9854
9180
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
@@ -9905,11 +9231,11 @@ class Channel extends base_1$e.EmitterBase {
|
|
9905
9231
|
client_1.ChannelClient.handleProviderDisconnect(eventPayload);
|
9906
9232
|
}),
|
9907
9233
|
this.on('connected', (...args) => {
|
9908
|
-
__classPrivateFieldGet$
|
9234
|
+
__classPrivateFieldGet$7(this, _Channel_internalEmitter, "f").emit('connected', ...args);
|
9909
9235
|
})
|
9910
9236
|
]).catch(() => new Error('error setting up channel connection listeners'));
|
9911
9237
|
}));
|
9912
|
-
__classPrivateFieldSet$
|
9238
|
+
__classPrivateFieldSet$6(this, _Channel_connectionManager, new connection_manager_1.ConnectionManager(wire), "f");
|
9913
9239
|
}
|
9914
9240
|
/**
|
9915
9241
|
*
|
@@ -9984,7 +9310,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
9984
9310
|
resolve(true);
|
9985
9311
|
}
|
9986
9312
|
};
|
9987
|
-
__classPrivateFieldGet$
|
9313
|
+
__classPrivateFieldGet$7(this, _Channel_internalEmitter, "f").on('connected', connectedListener);
|
9988
9314
|
});
|
9989
9315
|
try {
|
9990
9316
|
if (retryInfo.count > 0) {
|
@@ -10016,7 +9342,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
10016
9342
|
finally {
|
10017
9343
|
retryInfo.count += 1;
|
10018
9344
|
// in case of other errors, remove our listener
|
10019
|
-
__classPrivateFieldGet$
|
9345
|
+
__classPrivateFieldGet$7(this, _Channel_internalEmitter, "f").removeListener('connected', connectedListener);
|
10020
9346
|
}
|
10021
9347
|
} while (shouldWait); // If we're waiting we retry the above loop
|
10022
9348
|
// Should wait was false, no channel was found.
|
@@ -10075,12 +9401,12 @@ class Channel extends base_1$e.EmitterBase {
|
|
10075
9401
|
async connect(channelName, options = {}) {
|
10076
9402
|
// Make sure we don't connect before listeners are set up
|
10077
9403
|
// This also errors if we're not in OpenFin, ensuring we don't run unnecessary code
|
10078
|
-
await __classPrivateFieldGet$
|
9404
|
+
await __classPrivateFieldGet$7(this, _Channel_readyToConnect, "f").getValue();
|
10079
9405
|
if (!channelName || typeof channelName !== 'string') {
|
10080
9406
|
throw new Error('Please provide a channelName string to connect to a channel.');
|
10081
9407
|
}
|
10082
9408
|
const opts = { wait: true, ...this.wire.environment.getDefaultChannelOptions().connect, ...options };
|
10083
|
-
const { offer, rtc: rtcPacket } = await __classPrivateFieldGet$
|
9409
|
+
const { offer, rtc: rtcPacket } = await __classPrivateFieldGet$7(this, _Channel_connectionManager, "f").createClientOffer(opts);
|
10084
9410
|
let connectionUrl;
|
10085
9411
|
if (this.fin.me.isFrame || this.fin.me.isView || this.fin.me.isWindow) {
|
10086
9412
|
connectionUrl = (await this.fin.me.getInfo()).url;
|
@@ -10092,7 +9418,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
10092
9418
|
connectionUrl
|
10093
9419
|
};
|
10094
9420
|
const routingInfo = await this.safeConnect(channelName, opts.wait, connectPayload);
|
10095
|
-
const strategy = await __classPrivateFieldGet$
|
9421
|
+
const strategy = await __classPrivateFieldGet$7(this, _Channel_connectionManager, "f").createClientStrategy(rtcPacket, routingInfo);
|
10096
9422
|
const channel = new client_1.ChannelClient(routingInfo, () => client_1.ChannelClient.wireClose(this.wire, routingInfo, routingInfo.endpointId), strategy);
|
10097
9423
|
// It is the client's responsibility to handle endpoint disconnection to the provider.
|
10098
9424
|
// If the endpoint dies, the client will force a disconnection through the core.
|
@@ -10161,7 +9487,7 @@ class Channel extends base_1$e.EmitterBase {
|
|
10161
9487
|
throw new Error('Please provide a channelName to create a channel');
|
10162
9488
|
}
|
10163
9489
|
const { payload: { data: providerIdentity } } = await this.wire.sendAction('create-channel', { channelName });
|
10164
|
-
const channel = __classPrivateFieldGet$
|
9490
|
+
const channel = __classPrivateFieldGet$7(this, _Channel_connectionManager, "f").createProvider(options, providerIdentity);
|
10165
9491
|
// TODO: fix typing (internal)
|
10166
9492
|
// @ts-expect-error
|
10167
9493
|
this.on('client-disconnected', (eventPayload) => {
|
@@ -11052,19 +10378,23 @@ var Factory$3 = {};
|
|
11052
10378
|
|
11053
10379
|
var Instance$2 = {};
|
11054
10380
|
|
11055
|
-
var
|
10381
|
+
var __classPrivateFieldSet$5 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
10382
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
10383
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
10384
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
10385
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
10386
|
+
};
|
10387
|
+
var __classPrivateFieldGet$6 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
11056
10388
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
11057
10389
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
11058
10390
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11059
10391
|
};
|
11060
|
-
var _Platform_connectToProvider;
|
10392
|
+
var _Platform_channelName, _Platform_connectToProvider;
|
11061
10393
|
Object.defineProperty(Instance$2, "__esModule", { value: true });
|
11062
10394
|
Instance$2.Platform = void 0;
|
11063
10395
|
/* eslint-disable import/prefer-default-export, no-undef */
|
11064
10396
|
const base_1$6 = base;
|
11065
10397
|
const validate_1$1 = validate;
|
11066
|
-
// Reuse clients to avoid overwriting already-registered client in provider
|
11067
|
-
const clientMap = new Map();
|
11068
10398
|
/** Manages the life cycle of windows and views in the application.
|
11069
10399
|
*
|
11070
10400
|
* Enables taking snapshots of itself and applying them to restore a previous configuration
|
@@ -11075,34 +10405,40 @@ class Platform extends base_1$6.EmitterBase {
|
|
11075
10405
|
* @internal
|
11076
10406
|
*/
|
11077
10407
|
// eslint-disable-next-line no-shadow
|
11078
|
-
constructor(identity,
|
10408
|
+
constructor(wire, identity, channelName = `custom-frame-${identity.uuid}`) {
|
11079
10409
|
// we piggyback off of application event emitter because from the core's perspective platform is just an app.
|
11080
|
-
super(
|
11081
|
-
|
10410
|
+
super(wire, 'application', identity.uuid);
|
10411
|
+
/**
|
10412
|
+
* @internal
|
10413
|
+
*/
|
10414
|
+
_Platform_channelName.set(this, void 0);
|
10415
|
+
this.getClient = (identity = this.identity) => {
|
10416
|
+
if (identity.uuid !== this.identity.uuid) {
|
10417
|
+
// I have no idea why we allow passing in a different identity, but we do.
|
10418
|
+
// Doing this above the analytics call so we only register one call.
|
10419
|
+
return new Platform(this.wire, identity).getClient();
|
10420
|
+
}
|
11082
10421
|
this.wire.sendAction('platform-get-client', this.identity).catch((e) => {
|
11083
10422
|
// don't expose
|
11084
10423
|
});
|
11085
|
-
|
11086
|
-
|
11087
|
-
|
11088
|
-
const clientPromise = __classPrivateFieldGet$5(this, _Platform_connectToProvider, "f").call(this, uuid);
|
11089
|
-
clientMap.set(uuid, clientPromise);
|
10424
|
+
if (!Platform.clientMap.has(__classPrivateFieldGet$6(this, _Platform_channelName, "f"))) {
|
10425
|
+
const clientPromise = __classPrivateFieldGet$6(this, _Platform_connectToProvider, "f").call(this);
|
10426
|
+
Platform.clientMap.set(__classPrivateFieldGet$6(this, _Platform_channelName, "f"), clientPromise);
|
11090
10427
|
}
|
11091
10428
|
// we set it above
|
11092
10429
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
11093
|
-
return clientMap.get(
|
10430
|
+
return Platform.clientMap.get(__classPrivateFieldGet$6(this, _Platform_channelName, "f"));
|
11094
10431
|
};
|
11095
|
-
_Platform_connectToProvider.set(this, async (
|
10432
|
+
_Platform_connectToProvider.set(this, async () => {
|
11096
10433
|
try {
|
11097
|
-
const
|
11098
|
-
const client = await this._channel.connect(channelName, { wait: false });
|
10434
|
+
const client = await this._channel.connect(__classPrivateFieldGet$6(this, _Platform_channelName, "f"), { wait: false });
|
11099
10435
|
client.onDisconnection(() => {
|
11100
|
-
clientMap.delete(
|
10436
|
+
Platform.clientMap.delete(__classPrivateFieldGet$6(this, _Platform_channelName, "f"));
|
11101
10437
|
});
|
11102
10438
|
return client;
|
11103
10439
|
}
|
11104
10440
|
catch (e) {
|
11105
|
-
clientMap.delete(
|
10441
|
+
Platform.clientMap.delete(__classPrivateFieldGet$6(this, _Platform_channelName, "f"));
|
11106
10442
|
throw new Error('The targeted Platform is not currently running. Listen for application-started event for the given Uuid.');
|
11107
10443
|
}
|
11108
10444
|
});
|
@@ -11115,7 +10451,8 @@ class Platform extends base_1$6.EmitterBase {
|
|
11115
10451
|
if (errorMsg) {
|
11116
10452
|
throw new Error(errorMsg);
|
11117
10453
|
}
|
11118
|
-
this
|
10454
|
+
__classPrivateFieldSet$5(this, _Platform_channelName, channelName, "f");
|
10455
|
+
this._channel = this.fin.InterApplicationBus.Channel;
|
11119
10456
|
this.identity = { uuid: identity.uuid };
|
11120
10457
|
this.Layout = this.fin.Platform.Layout;
|
11121
10458
|
this.Application = this.fin.Application.wrapSync(this.identity);
|
@@ -11786,136 +11123,806 @@ class Platform extends base_1$6.EmitterBase {
|
|
11786
11123
|
* ```
|
11787
11124
|
* @experimental
|
11788
11125
|
*/
|
11789
|
-
async setWindowContext(context = {}, target) {
|
11790
|
-
this.wire.sendAction('platform-set-window-context', this.identity).catch((e) => {
|
11791
|
-
// don't expose
|
11126
|
+
async setWindowContext(context = {}, target) {
|
11127
|
+
this.wire.sendAction('platform-set-window-context', this.identity).catch((e) => {
|
11128
|
+
// don't expose
|
11129
|
+
});
|
11130
|
+
if (!context) {
|
11131
|
+
throw new Error('Please provide a serializable object or string to set the context.');
|
11132
|
+
}
|
11133
|
+
const client = await this.getClient();
|
11134
|
+
const { entityType } = target ? await this.fin.System.getEntityInfo(target.uuid, target.name) : this.fin.me;
|
11135
|
+
await client.dispatch('set-window-context', {
|
11136
|
+
context,
|
11137
|
+
entityType,
|
11138
|
+
target: target || { uuid: this.fin.me.uuid, name: this.fin.me.name }
|
11139
|
+
});
|
11140
|
+
}
|
11141
|
+
/**
|
11142
|
+
* Get the context context of a host window that was previously set using {@link Platform#setWindowContext setWindowContext}.
|
11143
|
+
* The context will be saved in any platform snapshots. Returns a promise that resolves to the context.
|
11144
|
+
* @param target - A target window or view may optionally be provided. If no target is provided, target will be
|
11145
|
+
* the current window (if called from a Window) or the current host window (if called from a View).
|
11146
|
+
*
|
11147
|
+
* @remarks This method can be called from the window itself, or from any child view. Context data is shared
|
11148
|
+
* by all entities within a window.
|
11149
|
+
*
|
11150
|
+
* @example
|
11151
|
+
*
|
11152
|
+
* Retrieving context from current window:
|
11153
|
+
* ```js
|
11154
|
+
* const platform = fin.Platform.getCurrentSync();
|
11155
|
+
* const customContext = { answer: 42 };
|
11156
|
+
* await platform.setWindowContext(customContext);
|
11157
|
+
*
|
11158
|
+
* const myContext = await platform.getWindowContext();
|
11159
|
+
* console.log(myContext); // { answer: 42 }
|
11160
|
+
* ```
|
11161
|
+
*
|
11162
|
+
* Retrieving the context of another window or view:
|
11163
|
+
* ```js
|
11164
|
+
* const platform = fin.Platform.getCurrentSync();
|
11165
|
+
*
|
11166
|
+
* const windowOrViewIdentity = { uuid: fin.me.uuid, name: 'nameOfWindowOrView' };
|
11167
|
+
*
|
11168
|
+
* const targetWindowContext = await platform.getWindowContext(windowOrViewIdentity);
|
11169
|
+
* console.log(targetWindowContext); // context of target window
|
11170
|
+
* ```
|
11171
|
+
* @experimental
|
11172
|
+
*/
|
11173
|
+
async getWindowContext(target) {
|
11174
|
+
this.wire.sendAction('platform-get-window-context', this.identity).catch((e) => {
|
11175
|
+
// don't expose
|
11176
|
+
});
|
11177
|
+
const client = await this.getClient();
|
11178
|
+
const { entityType } = target ? await this.fin.System.getEntityInfo(target.uuid, target.name) : this.fin.me;
|
11179
|
+
return client.dispatch('get-window-context', {
|
11180
|
+
target: target || { uuid: this.fin.me.uuid, name: this.fin.me.name },
|
11181
|
+
entityType
|
11182
|
+
});
|
11183
|
+
}
|
11184
|
+
/**
|
11185
|
+
* Closes a window. If enableBeforeUnload is enabled in the Platform options, any beforeunload handler set on Views will fire
|
11186
|
+
* This behavior can be disabled by setting skipBeforeUnload to false in the options parameter.
|
11187
|
+
* @param winId
|
11188
|
+
* @param options
|
11189
|
+
*
|
11190
|
+
* @remarks This method works by setting a `close-requested` handler on the Platform Window. If you have your own `close-requested` handler set on the Platform Window as well,
|
11191
|
+
* it is recommended to move that logic over to the [PlatformProvider.closeWindow]{@link PlatformProvider#closeWindow} override to ensure it runs when the Window closes.
|
11192
|
+
*
|
11193
|
+
* @example
|
11194
|
+
*
|
11195
|
+
* ```js
|
11196
|
+
* // Close the current Window inside a Window context
|
11197
|
+
* const platform = await fin.Platform.getCurrent();
|
11198
|
+
* platform.closeWindow(fin.me.identity);
|
11199
|
+
*
|
11200
|
+
* // Close the Window from inside a View context
|
11201
|
+
* const platform = await fin.Platform.getCurrent();
|
11202
|
+
* const parentWindow = await fin.me.getCurrentWindow();
|
11203
|
+
* platform.closeWindow(parentWindow.identity);
|
11204
|
+
*
|
11205
|
+
* // Close the Window and do not fire the before unload handler on Views
|
11206
|
+
* const platform = await fin.Platform.getCurrent();
|
11207
|
+
* platform.closeWindow(fin.me.identity, { skipBeforeUnload: true });
|
11208
|
+
* ```
|
11209
|
+
* @experimental
|
11210
|
+
*/
|
11211
|
+
async closeWindow(windowId, options = { skipBeforeUnload: false }) {
|
11212
|
+
this.wire.sendAction('platform-close-window', this.identity).catch((e) => {
|
11213
|
+
// don't expose
|
11214
|
+
});
|
11215
|
+
const client = await this.getClient();
|
11216
|
+
return client.dispatch('close-window', { windowId, options });
|
11217
|
+
}
|
11218
|
+
}
|
11219
|
+
Instance$2.Platform = Platform;
|
11220
|
+
_Platform_channelName = new WeakMap(), _Platform_connectToProvider = new WeakMap();
|
11221
|
+
/**
|
11222
|
+
* @internal
|
11223
|
+
* Reuse clients to avoid overwriting already-registered client in provider
|
11224
|
+
* This ensures that only channel client is created per channel name per `fin` instance
|
11225
|
+
*/
|
11226
|
+
Platform.clientMap = new Map();
|
11227
|
+
|
11228
|
+
var layout = {};
|
11229
|
+
|
11230
|
+
var Factory$2 = {};
|
11231
|
+
|
11232
|
+
var Instance$1 = {};
|
11233
|
+
|
11234
|
+
var commonUtils = {};
|
11235
|
+
|
11236
|
+
Object.defineProperty(commonUtils, "__esModule", { value: true });
|
11237
|
+
commonUtils.overrideFromComposables = commonUtils.isValidPresetType = void 0;
|
11238
|
+
function isValidPresetType(type) {
|
11239
|
+
switch (type) {
|
11240
|
+
case 'columns':
|
11241
|
+
case 'grid':
|
11242
|
+
case 'rows':
|
11243
|
+
case 'tabs':
|
11244
|
+
return true;
|
11245
|
+
default:
|
11246
|
+
return false;
|
11247
|
+
}
|
11248
|
+
}
|
11249
|
+
commonUtils.isValidPresetType = isValidPresetType;
|
11250
|
+
function overrideFromComposables(...overrides) {
|
11251
|
+
return (base) => overrides.reduceRight((p, c) => (b) => c(p(b)), (x) => x)(base);
|
11252
|
+
}
|
11253
|
+
commonUtils.overrideFromComposables = overrideFromComposables;
|
11254
|
+
commonUtils.default = { isValidPresetType };
|
11255
|
+
|
11256
|
+
var layoutEntities = {};
|
11257
|
+
|
11258
|
+
var apiExposer$1 = {};
|
11259
|
+
|
11260
|
+
var apiConsumer = {};
|
11261
|
+
|
11262
|
+
Object.defineProperty(apiConsumer, "__esModule", { value: true });
|
11263
|
+
apiConsumer.ApiConsumer = void 0;
|
11264
|
+
/**
|
11265
|
+
* Consumer for apis exposed with {@see ApiExposer}.
|
11266
|
+
*
|
11267
|
+
* A strategy that matches the strategy used to expose a target API must be provided.
|
11268
|
+
*/
|
11269
|
+
class ApiConsumer {
|
11270
|
+
// eslint-disable-next-line
|
11271
|
+
constructor(strategy) {
|
11272
|
+
this.strategy = strategy;
|
11273
|
+
/**
|
11274
|
+
* Consumes an api exposed using a given transport strategy, and generates a client
|
11275
|
+
* for easy, type safe consumption of that client.
|
11276
|
+
* @param options Strategy specific consumption options.
|
11277
|
+
* @returns An api client matching the given type.
|
11278
|
+
*/
|
11279
|
+
this.consume = async (options) => {
|
11280
|
+
const exposedProperties = await this.strategy.getExposedFunctions(options);
|
11281
|
+
return exposedProperties.reduce((client, prop) => ({
|
11282
|
+
...client,
|
11283
|
+
[prop.key]: this.strategy.createFunction(prop, options)
|
11284
|
+
}), {});
|
11285
|
+
};
|
11286
|
+
}
|
11287
|
+
}
|
11288
|
+
apiConsumer.ApiConsumer = ApiConsumer;
|
11289
|
+
|
11290
|
+
var apiExposer = {};
|
11291
|
+
|
11292
|
+
var decorators = {};
|
11293
|
+
|
11294
|
+
Object.defineProperty(decorators, "__esModule", { value: true });
|
11295
|
+
decorators.expose = decorators.getExposedProperties = void 0;
|
11296
|
+
const exposedProperties = Symbol('exposedProperties');
|
11297
|
+
const getExposedProperties = (target) => {
|
11298
|
+
return target[exposedProperties] || target.prototype[exposedProperties] || [];
|
11299
|
+
};
|
11300
|
+
decorators.getExposedProperties = getExposedProperties;
|
11301
|
+
/**
|
11302
|
+
* Indicates that a class member function can be exposed using {@link ApiExposer}.
|
11303
|
+
* @param options Options specific to the strategy used in {@link ApiExposer}
|
11304
|
+
*/
|
11305
|
+
// Returns any as decorator typing is weird.
|
11306
|
+
const expose = (options) => (target, key, descriptor) => {
|
11307
|
+
target[exposedProperties] = target[exposedProperties] || [];
|
11308
|
+
target[exposedProperties].push({ key, descriptor, options });
|
11309
|
+
};
|
11310
|
+
decorators.expose = expose;
|
11311
|
+
|
11312
|
+
Object.defineProperty(apiExposer, "__esModule", { value: true });
|
11313
|
+
apiExposer.ApiExposer = void 0;
|
11314
|
+
const decorators_1 = decorators;
|
11315
|
+
/**
|
11316
|
+
* Exposes api services on the transport of choice.
|
11317
|
+
*/
|
11318
|
+
class ApiExposer {
|
11319
|
+
/**
|
11320
|
+
* @param strategy The expose strategy to use to expose instances.
|
11321
|
+
*/
|
11322
|
+
// eslint-disable-next-line
|
11323
|
+
constructor(strategy) {
|
11324
|
+
this.strategy = strategy;
|
11325
|
+
/**
|
11326
|
+
* Exposes an instance of a given api on
|
11327
|
+
* @param instance Instance of a class which has been decorated to indicate which functions can be exposed.
|
11328
|
+
* @param instanceOptions Transport strategy specific options to use when exposing.
|
11329
|
+
*/
|
11330
|
+
this.exposeInstance = async (instance, instanceOptions) => {
|
11331
|
+
const exposableProps = (0, decorators_1.getExposedProperties)(instance);
|
11332
|
+
const exposedProps = await Promise.all(exposableProps.map(async ({ key, options }) => {
|
11333
|
+
const customConsumptionOptions = await this.strategy.exposeFunction(instance[key].bind(instance), {
|
11334
|
+
key,
|
11335
|
+
options,
|
11336
|
+
meta: instanceOptions
|
11337
|
+
});
|
11338
|
+
return {
|
11339
|
+
key,
|
11340
|
+
options: customConsumptionOptions
|
11341
|
+
};
|
11342
|
+
}));
|
11343
|
+
await this.strategy.exposeMeta(instanceOptions, exposedProps);
|
11344
|
+
};
|
11345
|
+
}
|
11346
|
+
;
|
11347
|
+
}
|
11348
|
+
apiExposer.ApiExposer = ApiExposer;
|
11349
|
+
|
11350
|
+
var strategies = {};
|
11351
|
+
|
11352
|
+
var openfinChannels = {};
|
11353
|
+
|
11354
|
+
var channelsConsumer = {};
|
11355
|
+
|
11356
|
+
Object.defineProperty(channelsConsumer, "__esModule", { value: true });
|
11357
|
+
channelsConsumer.ChannelsConsumer = void 0;
|
11358
|
+
class ChannelsConsumer {
|
11359
|
+
// eslint-disable-next-line
|
11360
|
+
constructor(channel) {
|
11361
|
+
this.channel = channel;
|
11362
|
+
this.getExposedFunctions = async (options) => {
|
11363
|
+
const { id } = options;
|
11364
|
+
const { props } = await this.channel.dispatch(`api-meta:${id}`);
|
11365
|
+
return props;
|
11366
|
+
};
|
11367
|
+
this.createFunction = (prop) => (...args) => {
|
11368
|
+
const { action } = prop.options;
|
11369
|
+
return this.channel.dispatch(action, { args });
|
11370
|
+
};
|
11371
|
+
}
|
11372
|
+
;
|
11373
|
+
}
|
11374
|
+
channelsConsumer.ChannelsConsumer = ChannelsConsumer;
|
11375
|
+
|
11376
|
+
var channelsExposer = {};
|
11377
|
+
|
11378
|
+
Object.defineProperty(channelsExposer, "__esModule", { value: true });
|
11379
|
+
channelsExposer.ChannelsExposer = void 0;
|
11380
|
+
class ChannelsExposer {
|
11381
|
+
// eslint-disable-next-line
|
11382
|
+
constructor(channelProviderOrClient) {
|
11383
|
+
this.channelProviderOrClient = channelProviderOrClient;
|
11384
|
+
this.exposeFunction = async (target, config) => {
|
11385
|
+
const { key, options, meta } = config;
|
11386
|
+
const { id } = meta;
|
11387
|
+
const action = `${id}.${options?.action || key}`;
|
11388
|
+
await this.channelProviderOrClient.register(action, async ({ args }) => {
|
11389
|
+
return target(...args);
|
11390
|
+
});
|
11391
|
+
return { action };
|
11392
|
+
};
|
11393
|
+
this.exposeMeta = async ({ id }, props) => {
|
11394
|
+
const action = `api-meta:${id}`;
|
11395
|
+
await this.channelProviderOrClient.register(action, () => ({ props }));
|
11396
|
+
};
|
11397
|
+
}
|
11398
|
+
}
|
11399
|
+
channelsExposer.ChannelsExposer = ChannelsExposer;
|
11400
|
+
|
11401
|
+
(function (exports) {
|
11402
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
11403
|
+
if (k2 === undefined) k2 = k;
|
11404
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
11405
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
11406
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
11407
|
+
}
|
11408
|
+
Object.defineProperty(o, k2, desc);
|
11409
|
+
}) : (function(o, m, k, k2) {
|
11410
|
+
if (k2 === undefined) k2 = k;
|
11411
|
+
o[k2] = m[k];
|
11412
|
+
}));
|
11413
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
11414
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
11415
|
+
};
|
11416
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
11417
|
+
__exportStar(channelsConsumer, exports);
|
11418
|
+
__exportStar(channelsExposer, exports);
|
11419
|
+
} (openfinChannels));
|
11420
|
+
|
11421
|
+
(function (exports) {
|
11422
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
11423
|
+
if (k2 === undefined) k2 = k;
|
11424
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
11425
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
11426
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
11427
|
+
}
|
11428
|
+
Object.defineProperty(o, k2, desc);
|
11429
|
+
}) : (function(o, m, k, k2) {
|
11430
|
+
if (k2 === undefined) k2 = k;
|
11431
|
+
o[k2] = m[k];
|
11432
|
+
}));
|
11433
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
11434
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
11435
|
+
};
|
11436
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
11437
|
+
__exportStar(openfinChannels, exports);
|
11438
|
+
} (strategies));
|
11439
|
+
|
11440
|
+
(function (exports) {
|
11441
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
11442
|
+
if (k2 === undefined) k2 = k;
|
11443
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
11444
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
11445
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
11446
|
+
}
|
11447
|
+
Object.defineProperty(o, k2, desc);
|
11448
|
+
}) : (function(o, m, k, k2) {
|
11449
|
+
if (k2 === undefined) k2 = k;
|
11450
|
+
o[k2] = m[k];
|
11451
|
+
}));
|
11452
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
11453
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
11454
|
+
};
|
11455
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
11456
|
+
__exportStar(apiConsumer, exports);
|
11457
|
+
__exportStar(apiExposer, exports);
|
11458
|
+
__exportStar(strategies, exports);
|
11459
|
+
__exportStar(decorators, exports);
|
11460
|
+
} (apiExposer$1));
|
11461
|
+
|
11462
|
+
var channelApiRelay = {};
|
11463
|
+
|
11464
|
+
Object.defineProperty(channelApiRelay, "__esModule", { value: true });
|
11465
|
+
channelApiRelay.createRelayedDispatch = channelApiRelay.relayChannelClientApi = void 0;
|
11466
|
+
const EXPECTED_ERRORS = [
|
11467
|
+
'no longer connected',
|
11468
|
+
'RTCDataChannel closed unexpectedly',
|
11469
|
+
'The client you are trying to dispatch from is disconnected from the target provider',
|
11470
|
+
];
|
11471
|
+
// Checks possible error messages that we want to trap, client error message can originate
|
11472
|
+
// from ChannelProvider::dispatch OR ClassicStrategy::closeEndpoint OR RTCEndPoint::dataChannel::onclose
|
11473
|
+
const isDisconnectedError = (errorMsg) => {
|
11474
|
+
return EXPECTED_ERRORS.some(e => errorMsg.includes(e));
|
11475
|
+
};
|
11476
|
+
/**
|
11477
|
+
* @internal
|
11478
|
+
* Create a channel relay for a given channel exposition, allowing a single provider to route
|
11479
|
+
* actions to the designated clients.
|
11480
|
+
*
|
11481
|
+
* Designed to be used in conjunction with @expose
|
11482
|
+
*
|
11483
|
+
* @param channelProvider The channel provider to relay the actions on.
|
11484
|
+
* @param config Determines which actions to relay. Please ensure action prefix matches the exposed api.
|
11485
|
+
*/
|
11486
|
+
const relayChannelClientApi = async (channelProvider, relayId) => {
|
11487
|
+
channelProvider.register(`relay:${relayId}`, ({ action, target, payload }) => {
|
11488
|
+
return channelProvider.dispatch(target, action, payload);
|
11489
|
+
});
|
11490
|
+
await Promise.resolve();
|
11491
|
+
};
|
11492
|
+
channelApiRelay.relayChannelClientApi = relayChannelClientApi;
|
11493
|
+
const createRelayedDispatch = (client, target, relayId, relayErrorMsg) => async (action, payload) => {
|
11494
|
+
try {
|
11495
|
+
return await client.dispatch(`relay:${relayId}`, {
|
11496
|
+
action,
|
11497
|
+
payload,
|
11498
|
+
target
|
11792
11499
|
});
|
11793
|
-
|
11794
|
-
|
11500
|
+
}
|
11501
|
+
catch (e) {
|
11502
|
+
if (isDisconnectedError(e.message) && relayErrorMsg) {
|
11503
|
+
throw new Error(relayErrorMsg);
|
11795
11504
|
}
|
11796
|
-
|
11797
|
-
const { entityType } = target ? await this.fin.System.getEntityInfo(target.uuid, target.name) : this.fin.me;
|
11798
|
-
await client.dispatch('set-window-context', {
|
11799
|
-
context,
|
11800
|
-
entityType,
|
11801
|
-
target: target || { uuid: this.fin.me.uuid, name: this.fin.me.name }
|
11802
|
-
});
|
11505
|
+
throw e;
|
11803
11506
|
}
|
11507
|
+
};
|
11508
|
+
channelApiRelay.createRelayedDispatch = createRelayedDispatch;
|
11509
|
+
|
11510
|
+
var __classPrivateFieldSet$4 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
11511
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
11512
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
11513
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
11514
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
11515
|
+
};
|
11516
|
+
var __classPrivateFieldGet$5 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
11517
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
11518
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
11519
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11520
|
+
};
|
11521
|
+
var _LayoutNode_client, _TabStack_client, _ColumnOrRow_client;
|
11522
|
+
Object.defineProperty(layoutEntities, "__esModule", { value: true });
|
11523
|
+
layoutEntities.ColumnOrRow = layoutEntities.TabStack = layoutEntities.LayoutNode = void 0;
|
11524
|
+
const api_exposer_1 = apiExposer$1;
|
11525
|
+
const channel_api_relay_1 = channelApiRelay;
|
11526
|
+
/*
|
11527
|
+
This file includes LayoutNode, ColumnOrRow and TabStack classes, which are all closely
|
11528
|
+
intertwined, and share members via parent abstract class LayoutNode. To prevent circular
|
11529
|
+
refs, we define and export all the classes here.
|
11530
|
+
*/
|
11531
|
+
/**
|
11532
|
+
* @ignore
|
11533
|
+
* @internal
|
11534
|
+
* Supplies an ApiClient for {@link LayoutEntitiesController} and helper methods
|
11535
|
+
* for the entities {@link TabStack} AND {@link ColumnOrRow} to use.
|
11536
|
+
*/
|
11537
|
+
class LayoutNode {
|
11804
11538
|
/**
|
11805
|
-
*
|
11806
|
-
*
|
11807
|
-
* @param target - A target window or view may optionally be provided. If no target is provided, target will be
|
11808
|
-
* the current window (if called from a Window) or the current host window (if called from a View).
|
11809
|
-
*
|
11810
|
-
* @remarks This method can be called from the window itself, or from any child view. Context data is shared
|
11811
|
-
* by all entities within a window.
|
11812
|
-
*
|
11813
|
-
* @example
|
11814
|
-
*
|
11815
|
-
* Retrieving context from current window:
|
11816
|
-
* ```js
|
11817
|
-
* const platform = fin.Platform.getCurrentSync();
|
11818
|
-
* const customContext = { answer: 42 };
|
11819
|
-
* await platform.setWindowContext(customContext);
|
11820
|
-
*
|
11821
|
-
* const myContext = await platform.getWindowContext();
|
11822
|
-
* console.log(myContext); // { answer: 42 }
|
11823
|
-
* ```
|
11824
|
-
*
|
11825
|
-
* Retrieving the context of another window or view:
|
11826
|
-
* ```js
|
11827
|
-
* const platform = fin.Platform.getCurrentSync();
|
11828
|
-
*
|
11829
|
-
* const windowOrViewIdentity = { uuid: fin.me.uuid, name: 'nameOfWindowOrView' };
|
11830
|
-
*
|
11831
|
-
* const targetWindowContext = await platform.getWindowContext(windowOrViewIdentity);
|
11832
|
-
* console.log(targetWindowContext); // context of target window
|
11833
|
-
* ```
|
11834
|
-
* @experimental
|
11539
|
+
* @internal
|
11540
|
+
* @ignore
|
11835
11541
|
*/
|
11836
|
-
|
11837
|
-
|
11838
|
-
|
11839
|
-
|
11840
|
-
|
11841
|
-
|
11842
|
-
|
11843
|
-
|
11844
|
-
|
11845
|
-
|
11542
|
+
constructor(client, entityId) {
|
11543
|
+
/**
|
11544
|
+
* @ignore
|
11545
|
+
* @internal
|
11546
|
+
* ApiClient for {@link LayoutEntitiesController}
|
11547
|
+
*/
|
11548
|
+
_LayoutNode_client.set(this, void 0);
|
11549
|
+
/**
|
11550
|
+
* Checks if the TabStack or ColumnOrRow is the root content item
|
11551
|
+
*
|
11552
|
+
* @example
|
11553
|
+
* ```js
|
11554
|
+
* if (!fin.me.isView) {
|
11555
|
+
* throw new Error('Not running in a platform View.');
|
11556
|
+
* }
|
11557
|
+
*
|
11558
|
+
* const stack = await fin.me.getCurrentStack();
|
11559
|
+
* const isRoot = await stack.isRoot();
|
11560
|
+
* // The TabStack is root: false
|
11561
|
+
* console.log(`The TabStack is root: ${isRoot}`);
|
11562
|
+
*
|
11563
|
+
* // Retrieves the parent ColumnOrRow
|
11564
|
+
* const parent = await stack.getParent();
|
11565
|
+
* const parentIsRoot = await parent.isRoot();
|
11566
|
+
* // The parent ColumnOrRow is root: true
|
11567
|
+
* console.log(`The parent ColumnOrRow is root: ${parentIsRoot}`);
|
11568
|
+
* ```
|
11569
|
+
*/
|
11570
|
+
this.isRoot = () => __classPrivateFieldGet$5(this, _LayoutNode_client, "f").isRoot(this.entityId);
|
11571
|
+
/**
|
11572
|
+
* Checks if the TabStack or ColumnOrRow exists
|
11573
|
+
*
|
11574
|
+
* @example
|
11575
|
+
* ```js
|
11576
|
+
* if (!fin.me.isView) {
|
11577
|
+
* throw new Error('Not running in a platform View.');
|
11578
|
+
* }
|
11579
|
+
*
|
11580
|
+
* const stack = await fin.me.getCurrentStack();
|
11581
|
+
* // Retrieves the parent ColumnOrRow
|
11582
|
+
* const columnOrRow = await stack.getParent();
|
11583
|
+
* let exists = await stack.exists();
|
11584
|
+
* // or
|
11585
|
+
* let exists = await columnOrRow.exists();
|
11586
|
+
* // The entity exists: true
|
11587
|
+
* console.log(`The entity exists: ${exists}`);
|
11588
|
+
* ```
|
11589
|
+
*/
|
11590
|
+
this.exists = () => __classPrivateFieldGet$5(this, _LayoutNode_client, "f").exists(this.entityId);
|
11591
|
+
/**
|
11592
|
+
* Retrieves the parent of the TabStack or ColumnOrRow
|
11593
|
+
*
|
11594
|
+
* @example
|
11595
|
+
* ```js
|
11596
|
+
* if (!fin.me.isView) {
|
11597
|
+
* throw new Error('Not running in a platform View.');
|
11598
|
+
* }
|
11599
|
+
*
|
11600
|
+
* const stack = await fin.me.getCurrentStack();
|
11601
|
+
* // Retrieves the parent ColumnOrRow
|
11602
|
+
* const columnOrRow = await stack.getParent();
|
11603
|
+
*
|
11604
|
+
* // undefined if entity is the root item
|
11605
|
+
* let parent = await columnOrRow.getParent();
|
11606
|
+
* // or
|
11607
|
+
* let parent = await stack.getParent();
|
11608
|
+
* ```
|
11609
|
+
*/
|
11610
|
+
this.getParent = async () => {
|
11611
|
+
const parent = await __classPrivateFieldGet$5(this, _LayoutNode_client, "f").getParent(this.entityId);
|
11612
|
+
if (!parent) {
|
11613
|
+
return undefined;
|
11614
|
+
}
|
11615
|
+
return LayoutNode.getEntity(parent, __classPrivateFieldGet$5(this, _LayoutNode_client, "f"));
|
11616
|
+
};
|
11617
|
+
/**
|
11618
|
+
* Creates a new TabStack adjacent to the given TabStack or ColumnOrRow. Inputs can be new views to create, or existing views.
|
11619
|
+
*
|
11620
|
+
* Known Issue: If the number of views to add overflows the tab-container, the added views will be set as active
|
11621
|
+
* during each render, and then placed at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
11622
|
+
* This means the views you pass to createAdjacentStack() may not render in the order given by the array.
|
11623
|
+
* Until fixed, this problem can be avoided only if your window is wide enough to fit creating all the views in the tabstack.
|
11624
|
+
*
|
11625
|
+
* @param views The views that will populate the new TabStack.
|
11626
|
+
* @param options Additional options that control new TabStack creation.
|
11627
|
+
* @returns The newly-created TabStack.
|
11628
|
+
*
|
11629
|
+
* @example
|
11630
|
+
* ```js
|
11631
|
+
* if (!fin.me.isView) {
|
11632
|
+
* throw new Error('Not running in a platform View.');
|
11633
|
+
* }
|
11634
|
+
*
|
11635
|
+
* const stack = await fin.me.getCurrentStack();
|
11636
|
+
* const columnOrRow = await stack.getParent();
|
11637
|
+
*
|
11638
|
+
* // Create view references by supplying a 'name' and 'url'
|
11639
|
+
* const views = [
|
11640
|
+
* // if 'name' is undefined, one will be generated
|
11641
|
+
* // if 'url' is undefined, it will default the view URL to 'about:blank'
|
11642
|
+
* { name: 'google-view', url: 'http://google.com/'},
|
11643
|
+
* { name: 'of-developers-view', url: 'http://developers.openfin.co/'},
|
11644
|
+
* ];
|
11645
|
+
*
|
11646
|
+
* // Create a view beforehand to be included in the new tab stack
|
11647
|
+
* const outsideView = await fin.View.create({
|
11648
|
+
* name: 'outside-bloomberg-view',
|
11649
|
+
* url: 'https://bloomberg.com/',
|
11650
|
+
* target: fin.me.identity,
|
11651
|
+
* });
|
11652
|
+
*
|
11653
|
+
* // Views to add can be identities, or the reference views mentioned above
|
11654
|
+
* const viewsToAdd = [outsideView.identity, ...views];
|
11655
|
+
*
|
11656
|
+
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
11657
|
+
* let stackFrom = await columnOrRow.createAdjacentStack(viewsToAdd, { position: 'right' });
|
11658
|
+
* // Or
|
11659
|
+
* let newStack = await stack.createAdjacentStack(viewsToAdd, { position: 'right' });
|
11660
|
+
* console.log(`A new TabStack created to the right has ${newStack.length} views in it`);
|
11661
|
+
*
|
11662
|
+
* ```
|
11663
|
+
* @experimental
|
11664
|
+
*/
|
11665
|
+
this.createAdjacentStack = async (views, options) => {
|
11666
|
+
const entityId = await __classPrivateFieldGet$5(this, _LayoutNode_client, "f").createAdjacentStack(this.entityId, views, options);
|
11667
|
+
return LayoutNode.getEntity({ entityId, type: 'stack' }, __classPrivateFieldGet$5(this, _LayoutNode_client, "f"));
|
11668
|
+
};
|
11669
|
+
/**
|
11670
|
+
* Retrieves the adjacent TabStacks of the given TabStack or ColumnOrRow.
|
11671
|
+
*
|
11672
|
+
* @param edge Edge whose adjacent TabStacks will be returned.
|
11673
|
+
*
|
11674
|
+
* @example
|
11675
|
+
* ```js
|
11676
|
+
* if (!fin.me.isView) {
|
11677
|
+
* throw new Error('Not running in a platform View.');
|
11678
|
+
* }
|
11679
|
+
*
|
11680
|
+
* const stack = await fin.me.getCurrentStack();
|
11681
|
+
* const columnOrRow = await stack.getParent();
|
11682
|
+
* // Possible position inputs: 'right' | 'left' | 'top' | 'bottom'
|
11683
|
+
* let rightStacks = await columnOrRow.getAdjacentStacks('right');
|
11684
|
+
* let leftStacks = await columnOrRow.getAdjacentStacks('left');
|
11685
|
+
* // or
|
11686
|
+
* let rightStacks = await stack.getAdjacentStacks('right');
|
11687
|
+
* let leftStacks = await stack.getAdjacentStacks('left');
|
11688
|
+
*
|
11689
|
+
* console.log(`The entity has ${rightStacks.length} stacks to the right, and ${leftStacks.length} stacks to the left`);
|
11690
|
+
*
|
11691
|
+
* ```
|
11692
|
+
* @experimental
|
11693
|
+
*/
|
11694
|
+
this.getAdjacentStacks = async (edge) => {
|
11695
|
+
const adjacentStacks = await __classPrivateFieldGet$5(this, _LayoutNode_client, "f").getAdjacentStacks({
|
11696
|
+
targetId: this.entityId,
|
11697
|
+
edge
|
11698
|
+
});
|
11699
|
+
return adjacentStacks.map((stack) => LayoutNode.getEntity({
|
11700
|
+
type: 'stack',
|
11701
|
+
entityId: stack.entityId
|
11702
|
+
}, __classPrivateFieldGet$5(this, _LayoutNode_client, "f")));
|
11703
|
+
};
|
11704
|
+
__classPrivateFieldSet$4(this, _LayoutNode_client, client, "f");
|
11705
|
+
this.entityId = entityId;
|
11706
|
+
}
|
11707
|
+
}
|
11708
|
+
layoutEntities.LayoutNode = LayoutNode;
|
11709
|
+
_LayoutNode_client = new WeakMap();
|
11710
|
+
/**
|
11711
|
+
* @ignore
|
11712
|
+
* @internal
|
11713
|
+
* Encapsulates Api consumption of {@link LayoutEntitiesClient} with a relayed dispatch
|
11714
|
+
* @param client
|
11715
|
+
* @param controllerId
|
11716
|
+
* @param identity
|
11717
|
+
* @returns a new instance of {@link LayoutEntitiesClient} with bound to the controllerId
|
11718
|
+
*/
|
11719
|
+
LayoutNode.newLayoutEntitiesClient = async (client, controllerId, identity) => {
|
11720
|
+
const dispatch = (0, channel_api_relay_1.createRelayedDispatch)(client, identity, 'layout-relay', 'You are trying to interact with a layout component on a window that does not exist or has been destroyed.');
|
11721
|
+
const consumer = new api_exposer_1.ApiConsumer(new api_exposer_1.ChannelsConsumer({ dispatch }));
|
11722
|
+
return consumer.consume({ id: controllerId });
|
11723
|
+
};
|
11724
|
+
LayoutNode.getEntity = (definition, client) => {
|
11725
|
+
const { entityId, type } = definition;
|
11726
|
+
switch (type) {
|
11727
|
+
case 'column':
|
11728
|
+
case 'row':
|
11729
|
+
return new ColumnOrRow(client, entityId, type);
|
11730
|
+
case 'stack':
|
11731
|
+
return new TabStack(client, entityId);
|
11732
|
+
default:
|
11733
|
+
throw new Error(`Unrecognised Layout Entity encountered ('${JSON.stringify(definition)})`);
|
11734
|
+
}
|
11735
|
+
};
|
11736
|
+
/**
|
11737
|
+
* A TabStack is used to manage the state of a stack of tabs within an OpenFin Layout.
|
11738
|
+
*/
|
11739
|
+
class TabStack extends LayoutNode {
|
11740
|
+
/** @internal */
|
11741
|
+
constructor(client, entityId) {
|
11742
|
+
super(client, entityId);
|
11743
|
+
/**
|
11744
|
+
* @internal
|
11745
|
+
* ApiClient for {@link LayoutEntitiesController}
|
11746
|
+
*/
|
11747
|
+
_TabStack_client.set(this, void 0);
|
11748
|
+
/**
|
11749
|
+
* Type of the content item. Always stack, but useful for distinguishing between a {@link TabStack} and {@link ColumnOrRow}.
|
11750
|
+
*/
|
11751
|
+
this.type = 'stack';
|
11752
|
+
/**
|
11753
|
+
* Retrieves a list of all views belonging to this {@link TabStack}.
|
11754
|
+
*
|
11755
|
+
* Known Issue: If adding a view overflows the tab-container width, the added view will be set as active
|
11756
|
+
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
11757
|
+
* If that happens and then getViews() is called, it will return the identities in a different order than
|
11758
|
+
* than the currently rendered tab order.
|
11759
|
+
*
|
11760
|
+
*
|
11761
|
+
* @throws If the {@link TabStack} has been destroyed.
|
11762
|
+
* @example
|
11763
|
+
* ```js
|
11764
|
+
* if (!fin.me.isView) {
|
11765
|
+
* throw new Error('Not running in a platform View.');
|
11766
|
+
* }
|
11767
|
+
*
|
11768
|
+
* const stack = await fin.me.getCurrentStack();
|
11769
|
+
* // Alternatively, you can wrap any view and get the stack from there
|
11770
|
+
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
11771
|
+
* // const stack = await viewFromSomewhere.getCurrentStack();
|
11772
|
+
* const views = await stack.getViews();
|
11773
|
+
* console.log(`Stack contains ${views.length} view(s)`);
|
11774
|
+
* ```
|
11775
|
+
* @experimental
|
11776
|
+
*/
|
11777
|
+
this.getViews = () => __classPrivateFieldGet$5(this, _TabStack_client, "f").getStackViews(this.entityId);
|
11778
|
+
/**
|
11779
|
+
* Adds or creates a view in this {@link TabStack}.
|
11780
|
+
*
|
11781
|
+
* @remarks Known Issue: If adding a view overflows the tab-container, the added view will be set as active
|
11782
|
+
* and rendered at the front of the tab-stack, while the underlying order of tabs will remain unchanged.
|
11783
|
+
*
|
11784
|
+
* @param view The identity of an existing view to add, or options to create a view.
|
11785
|
+
* @param options Optional view options: index number used to insert the view into the stack at that index. Defaults to 0 (front of the stack)
|
11786
|
+
* @returns Resolves with the {@link OpenFin.Identity identity} of the added view.
|
11787
|
+
* @throws If the view does not exist or fails to create.
|
11788
|
+
* @throws If the {@link TabStack} has been destroyed.
|
11789
|
+
* @example
|
11790
|
+
* ```js
|
11791
|
+
* if (!fin.me.isView) {
|
11792
|
+
* throw new Error('Not running in a platform View.');
|
11793
|
+
* }
|
11794
|
+
*
|
11795
|
+
* const stack = await fin.me.getCurrentStack();
|
11796
|
+
* // Alternatively, you can wrap any view and get the stack from there
|
11797
|
+
* // const viewFromSomewhere = fin.View.wrapSync(someView.identity);
|
11798
|
+
* // const stack = await viewFromSomewhere.getCurrentStack();
|
11799
|
+
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
11800
|
+
* console.log('Identity of the google view just added', { googleViewIdentity });
|
11801
|
+
* // pass in { index: number } to set the index in the stack. Here 1 means, end of the stack (defaults to 0)
|
11802
|
+
* const appleViewIdentity = await stack.addView({ name: 'apple-view', url: 'http://apple.com/' }, { index: 1 });
|
11803
|
+
* console.log('Identity of the apple view just added', { appleViewIdentity });
|
11804
|
+
* ```
|
11805
|
+
* @experimental
|
11806
|
+
*/
|
11807
|
+
this.addView = async (view, options = { index: 0 }) => __classPrivateFieldGet$5(this, _TabStack_client, "f").addViewToStack(this.entityId, view, options);
|
11808
|
+
/**
|
11809
|
+
* Removes a view from this {@link TabStack}.
|
11810
|
+
*
|
11811
|
+
* @remarks Throws an exception if the view identity does not exist or was already destroyed.
|
11812
|
+
*
|
11813
|
+
* @param view - Identity of the view to remove.
|
11814
|
+
* @throws If the view does not exist or does not belong to the stack.
|
11815
|
+
* @throws If the {@link TabStack} has been destroyed.
|
11816
|
+
*
|
11817
|
+
* @example
|
11818
|
+
* ```js
|
11819
|
+
* if (!fin.me.isView) {
|
11820
|
+
* throw new Error('Not running in a platform View.');
|
11821
|
+
* }
|
11822
|
+
*
|
11823
|
+
* const stack = await fin.me.getCurrentStack();
|
11824
|
+
* const googleViewIdentity = await stack.addView({ name: 'google-view', url: 'http://google.com/' });
|
11825
|
+
*
|
11826
|
+
* await stack.removeView(googleViewIdentity);
|
11827
|
+
*
|
11828
|
+
* try {
|
11829
|
+
* await stack.removeView(googleViewIdentity);
|
11830
|
+
* } catch (error) {
|
11831
|
+
* // Tried to remove a view ('google-view') which does not belong to the stack.
|
11832
|
+
* console.log(error);
|
11833
|
+
* }
|
11834
|
+
* ```
|
11835
|
+
*/
|
11836
|
+
this.removeView = async (view) => {
|
11837
|
+
await __classPrivateFieldGet$5(this, _TabStack_client, "f").removeViewFromStack(this.entityId, view);
|
11838
|
+
};
|
11839
|
+
/**
|
11840
|
+
* Sets the active view of the {@link TabStack} without focusing it.
|
11841
|
+
* @param view - Identity of the view to activate.
|
11842
|
+
* @returns Promise which resolves with void once the view has been activated.
|
11843
|
+
* @throws If the {@link TabStack} has been destroyed.
|
11844
|
+
* @throws If the view does not exist.
|
11845
|
+
* @example
|
11846
|
+
* Change the active tab of a known View's TabStack:
|
11847
|
+
* ```js
|
11848
|
+
* const targetView = fin.View.wrapSync({ uuid: 'uuid', name: 'view-name' });
|
11849
|
+
* const stack = await targetView.getCurrentStack();
|
11850
|
+
* await stack.setActiveView(targetView.identity);
|
11851
|
+
* ```
|
11852
|
+
*
|
11853
|
+
* Set the current View as active within its TabStack:
|
11854
|
+
* ```js
|
11855
|
+
* const stack = await fin.me.getCurrentStack();
|
11856
|
+
* await stack.setActiveView(fin.me.identity);
|
11857
|
+
* ```
|
11858
|
+
* @experimental
|
11859
|
+
*/
|
11860
|
+
this.setActiveView = async (view) => {
|
11861
|
+
await __classPrivateFieldGet$5(this, _TabStack_client, "f").setStackActiveView(this.entityId, view);
|
11862
|
+
};
|
11863
|
+
__classPrivateFieldSet$4(this, _TabStack_client, client, "f");
|
11846
11864
|
}
|
11865
|
+
}
|
11866
|
+
layoutEntities.TabStack = TabStack;
|
11867
|
+
_TabStack_client = new WeakMap();
|
11868
|
+
/**
|
11869
|
+
* A ColumnOrRow is used to manage the state of Column and Rows within an OpenFin Layout.
|
11870
|
+
*/
|
11871
|
+
class ColumnOrRow extends LayoutNode {
|
11847
11872
|
/**
|
11848
|
-
*
|
11849
|
-
* This behavior can be disabled by setting skipBeforeUnload to false in the options parameter.
|
11850
|
-
* @param winId
|
11851
|
-
* @param options
|
11852
|
-
*
|
11853
|
-
* @remarks This method works by setting a `close-requested` handler on the Platform Window. If you have your own `close-requested` handler set on the Platform Window as well,
|
11854
|
-
* it is recommended to move that logic over to the [PlatformProvider.closeWindow]{@link PlatformProvider#closeWindow} override to ensure it runs when the Window closes.
|
11855
|
-
*
|
11856
|
-
* @example
|
11857
|
-
*
|
11858
|
-
* ```js
|
11859
|
-
* // Close the current Window inside a Window context
|
11860
|
-
* const platform = await fin.Platform.getCurrent();
|
11861
|
-
* platform.closeWindow(fin.me.identity);
|
11862
|
-
*
|
11863
|
-
* // Close the Window from inside a View context
|
11864
|
-
* const platform = await fin.Platform.getCurrent();
|
11865
|
-
* const parentWindow = await fin.me.getCurrentWindow();
|
11866
|
-
* platform.closeWindow(parentWindow.identity);
|
11867
|
-
*
|
11868
|
-
* // Close the Window and do not fire the before unload handler on Views
|
11869
|
-
* const platform = await fin.Platform.getCurrent();
|
11870
|
-
* platform.closeWindow(fin.me.identity, { skipBeforeUnload: true });
|
11871
|
-
* ```
|
11872
|
-
* @experimental
|
11873
|
+
* @internal
|
11873
11874
|
*/
|
11874
|
-
|
11875
|
-
|
11876
|
-
|
11877
|
-
|
11878
|
-
|
11879
|
-
|
11875
|
+
constructor(client, entityId, type) {
|
11876
|
+
super(client, entityId);
|
11877
|
+
/**
|
11878
|
+
* @ignore
|
11879
|
+
* @internal
|
11880
|
+
* ApiClient for {@link LayoutEntitiesController}
|
11881
|
+
*/
|
11882
|
+
_ColumnOrRow_client.set(this, void 0);
|
11883
|
+
/**
|
11884
|
+
* Retrieves the content array of the ColumnOrRow
|
11885
|
+
*
|
11886
|
+
* @example
|
11887
|
+
* ```js
|
11888
|
+
* if (!fin.me.isView) {
|
11889
|
+
* throw new Error('Not running in a platform View.');
|
11890
|
+
* }
|
11891
|
+
*
|
11892
|
+
* const stack = await fin.me.getCurrentStack();
|
11893
|
+
* // Retrieves the parent ColumnOrRow
|
11894
|
+
* const columnOrRow = await stack.getParent();
|
11895
|
+
*
|
11896
|
+
* // returns [TabStack]
|
11897
|
+
* const contentArray = await columnOrRow.getContent();
|
11898
|
+
* console.log(`The ColumnOrRow has ${contentArray.length} item(s)`);
|
11899
|
+
* ```
|
11900
|
+
*/
|
11901
|
+
this.getContent = async () => {
|
11902
|
+
const contentItemEntities = await __classPrivateFieldGet$5(this, _ColumnOrRow_client, "f").getContent(this.entityId);
|
11903
|
+
return contentItemEntities.map((entity) => LayoutNode.getEntity(entity, __classPrivateFieldGet$5(this, _ColumnOrRow_client, "f")));
|
11904
|
+
};
|
11905
|
+
__classPrivateFieldSet$4(this, _ColumnOrRow_client, client, "f");
|
11906
|
+
this.type = type;
|
11880
11907
|
}
|
11881
11908
|
}
|
11882
|
-
|
11883
|
-
|
11884
|
-
|
11885
|
-
var layout = {};
|
11886
|
-
|
11887
|
-
var Factory$2 = {};
|
11888
|
-
|
11889
|
-
var Instance$1 = {};
|
11909
|
+
layoutEntities.ColumnOrRow = ColumnOrRow;
|
11910
|
+
_ColumnOrRow_client = new WeakMap();
|
11890
11911
|
|
11891
|
-
var
|
11912
|
+
var layout_constants = {};
|
11892
11913
|
|
11893
|
-
Object.defineProperty(
|
11894
|
-
|
11895
|
-
|
11896
|
-
|
11897
|
-
|
11898
|
-
case 'grid':
|
11899
|
-
case 'rows':
|
11900
|
-
case 'tabs':
|
11901
|
-
return true;
|
11902
|
-
default:
|
11903
|
-
return false;
|
11904
|
-
}
|
11905
|
-
}
|
11906
|
-
commonUtils.isValidPresetType = isValidPresetType;
|
11907
|
-
function overrideFromComposables(...overrides) {
|
11908
|
-
return (base) => overrides.reduceRight((p, c) => (b) => c(p(b)), (x) => x)(base);
|
11909
|
-
}
|
11910
|
-
commonUtils.overrideFromComposables = overrideFromComposables;
|
11911
|
-
commonUtils.default = { isValidPresetType };
|
11914
|
+
Object.defineProperty(layout_constants, "__esModule", { value: true });
|
11915
|
+
layout_constants.DEFAULT_LAYOUT_KEY = layout_constants.LAYOUT_CONTROLLER_ID = void 0;
|
11916
|
+
layout_constants.LAYOUT_CONTROLLER_ID = 'layout-entities';
|
11917
|
+
// TODO: eventually export this somehow
|
11918
|
+
layout_constants.DEFAULT_LAYOUT_KEY = '__default__';
|
11912
11919
|
|
11913
11920
|
var __classPrivateFieldGet$4 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
11914
11921
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
11915
11922
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
11916
11923
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11917
11924
|
};
|
11918
|
-
var _Layout_layoutClient;
|
11925
|
+
var _Layout_instances, _Layout_layoutClient, _Layout_forwardLayoutAction;
|
11919
11926
|
Object.defineProperty(Instance$1, "__esModule", { value: true });
|
11920
11927
|
Instance$1.Layout = void 0;
|
11921
11928
|
const lazy_1 = lazy;
|
@@ -12057,12 +12064,19 @@ const layout_constants_1$1 = layout_constants;
|
|
12057
12064
|
* ```
|
12058
12065
|
*/
|
12059
12066
|
class Layout extends base_1$5.Base {
|
12067
|
+
/**
|
12068
|
+
* @internal
|
12069
|
+
*/
|
12070
|
+
static getClient(layout) {
|
12071
|
+
return __classPrivateFieldGet$4(layout, _Layout_layoutClient, "f").getValue();
|
12072
|
+
}
|
12060
12073
|
/**
|
12061
12074
|
* @internal
|
12062
12075
|
*/
|
12063
12076
|
// eslint-disable-next-line no-shadow
|
12064
12077
|
constructor(identity, wire) {
|
12065
12078
|
super(wire);
|
12079
|
+
_Layout_instances.add(this);
|
12066
12080
|
/**
|
12067
12081
|
* @internal
|
12068
12082
|
* Lazily constructed {@link LayoutEntitiesClient} bound to this platform's client and identity
|
@@ -12281,9 +12295,71 @@ class Layout extends base_1$5.Base {
|
|
12281
12295
|
const root = await client.getRoot('layoutName' in this.identity ? this.identity : undefined);
|
12282
12296
|
return layout_entities_1.LayoutNode.getEntity(root, client);
|
12283
12297
|
}
|
12298
|
+
/**
|
12299
|
+
* Retrieves the OpenFin.TabStack instance which the View belongs to.
|
12300
|
+
*
|
12301
|
+
* @example
|
12302
|
+
* ```js
|
12303
|
+
* const viewIdentity = { uuid: 'uuid', name: 'view-name' };
|
12304
|
+
* const stack = await fin.View.wrapSync(viewIdentity).getStackByViewIdentity(viewIdentity);
|
12305
|
+
* console.log(await stack.getViews());
|
12306
|
+
* ```
|
12307
|
+
*/
|
12308
|
+
async getStackByViewIdentity(identity) {
|
12309
|
+
this.wire.sendAction('layout-get-stack-by-view').catch(() => {
|
12310
|
+
// don't expose
|
12311
|
+
});
|
12312
|
+
const client = await __classPrivateFieldGet$4(this, _Layout_layoutClient, "f").getValue();
|
12313
|
+
const stack = await client.getStackByView(identity);
|
12314
|
+
if (!stack) {
|
12315
|
+
throw new Error(`No stack found for view: ${identity.uuid}/${identity.name}`);
|
12316
|
+
}
|
12317
|
+
return layout_entities_1.LayoutNode.getEntity(stack, client);
|
12318
|
+
}
|
12319
|
+
/**
|
12320
|
+
* Adds a view to the platform layout. Behaves like @link{Platform#createView} with the current layout as the target.
|
12321
|
+
*
|
12322
|
+
* @param viewOptions - The options for creating the view.
|
12323
|
+
* @param options - Optional parameters for adding the view.
|
12324
|
+
* @param options.location - The location where the view should be added.
|
12325
|
+
* @param options.targetView - The target view to which the new view should be added.
|
12326
|
+
* @returns A promise that resolves to an object containing the identity of the added view.
|
12327
|
+
*/
|
12328
|
+
async addView(viewOptions, { location, targetView } = {}) {
|
12329
|
+
this.wire.sendAction('layout-add-view').catch((e) => {
|
12330
|
+
// don't expose
|
12331
|
+
});
|
12332
|
+
const { identity } = await __classPrivateFieldGet$4(this, _Layout_instances, "m", _Layout_forwardLayoutAction).call(this, 'layout-add-view', {
|
12333
|
+
viewOptions,
|
12334
|
+
location,
|
12335
|
+
targetView
|
12336
|
+
});
|
12337
|
+
return { identity };
|
12338
|
+
}
|
12339
|
+
/**
|
12340
|
+
* Closes a view by its identity. Throws an error if the view does not belong to the current layout.
|
12341
|
+
* Behaves like @link{Platform#closeView} but only closes the view if it belongs the current layout.
|
12342
|
+
*
|
12343
|
+
* @param viewIdentity - The identity of the view to close.
|
12344
|
+
* @returns A promise that resolves when the view is closed.
|
12345
|
+
*/
|
12346
|
+
async closeView(viewIdentity) {
|
12347
|
+
this.wire.sendAction('layout-close-view').catch((e) => {
|
12348
|
+
// don't expose
|
12349
|
+
});
|
12350
|
+
await __classPrivateFieldGet$4(this, _Layout_instances, "m", _Layout_forwardLayoutAction).call(this, 'layout-close-view', { viewIdentity });
|
12351
|
+
}
|
12284
12352
|
}
|
12285
12353
|
Instance$1.Layout = Layout;
|
12286
|
-
_Layout_layoutClient = new WeakMap()
|
12354
|
+
_Layout_layoutClient = new WeakMap(), _Layout_instances = new WeakSet(), _Layout_forwardLayoutAction =
|
12355
|
+
/**
|
12356
|
+
* @internal
|
12357
|
+
* Use to type-guard actions sent to the layout via the provider.
|
12358
|
+
*/
|
12359
|
+
async function _Layout_forwardLayoutAction(action, payload) {
|
12360
|
+
const client = await this.platform.getClient();
|
12361
|
+
return client.dispatch(action, { target: this.identity, opts: payload });
|
12362
|
+
};
|
12287
12363
|
|
12288
12364
|
var __classPrivateFieldGet$3 = (commonjsGlobal && commonjsGlobal.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
12289
12365
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
@@ -12474,7 +12550,7 @@ class LayoutModule extends base_1$4.Base {
|
|
12474
12550
|
this.wire.sendAction('layout-get-current').catch((e) => {
|
12475
12551
|
// don't expose
|
12476
12552
|
});
|
12477
|
-
if (!this.fin.me.isWindow) {
|
12553
|
+
if (this.wire.environment.type === 'openfin' && !this.fin.me.isWindow) {
|
12478
12554
|
throw new Error('You are not in a Window context. Only Windows can have a Layout.');
|
12479
12555
|
}
|
12480
12556
|
const { uuid, name } = this.fin.me;
|
@@ -12497,12 +12573,54 @@ class LayoutModule extends base_1$4.Base {
|
|
12497
12573
|
this.wire.sendAction('layout-get-current-sync').catch((e) => {
|
12498
12574
|
// don't expose
|
12499
12575
|
});
|
12500
|
-
if (!this.fin.me.isWindow) {
|
12576
|
+
if (this.wire.environment.type === 'openfin' && !this.fin.me.isWindow) {
|
12501
12577
|
throw new Error('You are not in a Window context. Only Windows can have a Layout.');
|
12502
12578
|
}
|
12503
12579
|
const { uuid, name } = this.fin.me;
|
12504
12580
|
return this.wrapSync({ uuid, name });
|
12505
12581
|
}
|
12582
|
+
/**
|
12583
|
+
* Retrieves the OpenFin.Layout instance for the Window the View is attached to.
|
12584
|
+
*
|
12585
|
+
* @example
|
12586
|
+
* ```js
|
12587
|
+
* const viewIdentity = { uuid: 'uuid', name: 'view-name' };
|
12588
|
+
* const layout = await fin.Platform.Layout.getLayoutByViewIdentity(viewIdentity);
|
12589
|
+
* console.log(await layout.getCurrentViews());
|
12590
|
+
* ```
|
12591
|
+
*/
|
12592
|
+
async getLayoutByViewIdentity(viewIdentity) {
|
12593
|
+
this.wire.sendAction('layout-get-by-view-identity').catch(() => {
|
12594
|
+
// don't expose
|
12595
|
+
});
|
12596
|
+
const winIdentity = await this.wire.environment.getViewWindowIdentity(this.fin, viewIdentity);
|
12597
|
+
let layoutWindowIdentity = winIdentity;
|
12598
|
+
// TODO: CORE-1857 - when we tearout active layout or drag a view out of a window, the above identity includes the whole window info.
|
12599
|
+
if (layoutWindowIdentity.identity) {
|
12600
|
+
layoutWindowIdentity = layoutWindowIdentity.identity;
|
12601
|
+
}
|
12602
|
+
try {
|
12603
|
+
const layoutWindow = this.wrapSync(layoutWindowIdentity);
|
12604
|
+
const client = await Instance_1$2.Layout.getClient(layoutWindow);
|
12605
|
+
const layoutIdentity = await client.getLayoutIdentityForViewOrThrow(viewIdentity);
|
12606
|
+
return this.wrapSync(layoutIdentity);
|
12607
|
+
}
|
12608
|
+
catch (e) {
|
12609
|
+
const allowedErrors = [
|
12610
|
+
'No action registered at target for',
|
12611
|
+
'getLayoutIdentityForViewOrThrow is not a function'
|
12612
|
+
];
|
12613
|
+
if (!allowedErrors.some((m) => e.message.includes(m))) {
|
12614
|
+
throw e;
|
12615
|
+
}
|
12616
|
+
// If a view is attached to provider window, return null
|
12617
|
+
if (layoutWindowIdentity.uuid === layoutWindowIdentity.name) {
|
12618
|
+
throw new Error(`View identity ${JSON.stringify(viewIdentity)} is not attached to any layout in provider window ${JSON.stringify(layoutWindowIdentity)}.`);
|
12619
|
+
}
|
12620
|
+
// fallback logic for missing endpoint in older runtimes
|
12621
|
+
return this.wrapSync(layoutWindowIdentity);
|
12622
|
+
}
|
12623
|
+
}
|
12506
12624
|
}
|
12507
12625
|
Factory$2.LayoutModule = LayoutModule;
|
12508
12626
|
_LayoutModule_layoutInitializationAttempted = new WeakMap(), _LayoutModule_layoutManager = new WeakMap(), _LayoutModule_getLayoutManagerSpy = new WeakMap(), _LayoutModule_instances = new WeakSet(), _LayoutModule_getSafeLayoutManager = function _LayoutModule_getSafeLayoutManager(method) {
|
@@ -12639,7 +12757,7 @@ class PlatformModule extends base_1$3.Base {
|
|
12639
12757
|
this.wire.sendAction('platform-wrap').catch((e) => {
|
12640
12758
|
// don't expose
|
12641
12759
|
});
|
12642
|
-
return new Instance_1$1.Platform({ uuid: identity.uuid }
|
12760
|
+
return new Instance_1$1.Platform(this.wire, { uuid: identity.uuid });
|
12643
12761
|
}
|
12644
12762
|
/**
|
12645
12763
|
* Synchronously returns a Platform object that represents an existing platform.
|
@@ -12656,7 +12774,7 @@ class PlatformModule extends base_1$3.Base {
|
|
12656
12774
|
this.wire.sendAction('platform-wrap-sync').catch((e) => {
|
12657
12775
|
// don't expose
|
12658
12776
|
});
|
12659
|
-
return new Instance_1$1.Platform({ uuid: identity.uuid }
|
12777
|
+
return new Instance_1$1.Platform(this.wire, { uuid: identity.uuid });
|
12660
12778
|
}
|
12661
12779
|
/**
|
12662
12780
|
* Asynchronously returns a Platform object that represents the current platform.
|
@@ -17540,6 +17658,9 @@ class MockEnvironment {
|
|
17540
17658
|
async getInteropInfo() {
|
17541
17659
|
throw new Error(me_1.environmentUnsupportedMessage);
|
17542
17660
|
}
|
17661
|
+
async getViewWindowIdentity() {
|
17662
|
+
throw new Error(me_1.environmentUnsupportedMessage);
|
17663
|
+
}
|
17543
17664
|
getDefaultChannelOptions() {
|
17544
17665
|
throw new Error(me_1.environmentUnsupportedMessage);
|
17545
17666
|
}
|