@gorilla-engine-sdk/ge-session-presets-lib 0.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,590 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PresetManager = void 0;
4
+ const { platform } = require('os');
5
+ const fs = require("fs-extra");
6
+ const path = require("path");
7
+ const crypto = require("crypto");
8
+ const SessionAndPresetsError_1 = require("./errors/SessionAndPresetsError");
9
+ const utils_1 = require("./utils/utils");
10
+ const _1 = require(".");
11
+ class PresetManager {
12
+ config;
13
+ state;
14
+ _isLoadingSession = false;
15
+ get isLoadingSession() {
16
+ return this._isLoadingSession;
17
+ }
18
+ _loadedSession = false;
19
+ get loadedSession() {
20
+ return this._loadedSession;
21
+ }
22
+ get sessionInvolved() {
23
+ return this._isLoadingSession || this._loadedSession;
24
+ }
25
+ _isDirtySessionLoad = false;
26
+ get isDirtySessionLoad() {
27
+ return this._isDirtySessionLoad;
28
+ }
29
+ set isDirtySessionLoad(dirty) {
30
+ if (this.config.debug)
31
+ console.log(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: set isDirtySessionLoad: ${dirty}`);
32
+ this._isDirtySessionLoad = dirty;
33
+ }
34
+ _sessionCount = 0;
35
+ get sessionCount() {
36
+ return this._sessionCount;
37
+ }
38
+ incrementSessionCount() {
39
+ this._sessionCount++;
40
+ }
41
+ constructor(config) {
42
+ this.config = config;
43
+ }
44
+ setState(state) {
45
+ this.state = state;
46
+ }
47
+ getInstrument() {
48
+ return this.state?.instrument;
49
+ }
50
+ saveSession(additionalStateString, preset) {
51
+ if (this.config.debug)
52
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: saveSession`);
53
+ if (!this.getInstrument()) {
54
+ if (this.config.debug)
55
+ console.log(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: No Instrument Loaded!!!`);
56
+ return additionalStateString;
57
+ }
58
+ if (!this.state) {
59
+ return additionalStateString;
60
+ }
61
+ let stateToSave = this.createPreset(true);
62
+ if (this.config.retainUIScale) {
63
+ try {
64
+ stateToSave['uiScale'] = GorillaEngine.UI.getControlById('root')['uiScale'];
65
+ }
66
+ catch (err) { }
67
+ }
68
+ // add the current preset path to session
69
+ stateToSave['preset'] = preset?.filePath;
70
+ if (this.config.debug)
71
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: saveSession stateToSave['preset']: ${stateToSave['preset']}`);
72
+ stateToSave['workingState'] = {
73
+ presetChanged: this.state.presetChanged,
74
+ presetChangeLog: this.state.presetChangeLog,
75
+ };
76
+ /// no sessionId yet? -> generate uuid and save
77
+ if (!this.state.sessionId) {
78
+ const uuid = crypto.randomUUID();
79
+ if (this.config.debug)
80
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: saveSession no sessionId generated yet, use ${uuid}`);
81
+ Object.assign(this.state, { sessionId: uuid });
82
+ }
83
+ /// always add to save
84
+ Object.assign(stateToSave, { sessionId: this.state.sessionId });
85
+ const additionalState = JSON.parse(additionalStateString);
86
+ Object.assign(additionalState, stateToSave);
87
+ for (const hookIn of this._additionalSaveSession)
88
+ hookIn(this.getInstrument(), additionalState);
89
+ return JSON.stringify(additionalState);
90
+ }
91
+ registerLoadSession(stateString) {
92
+ return stateString;
93
+ }
94
+ async loadSession(stateJSON) {
95
+ if (this.config.debug)
96
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: loadSession`);
97
+ this._isDirtySessionLoad = false;
98
+ try {
99
+ this._isLoadingSession = true;
100
+ for (const hookIn of this._additionalPreLoadSession)
101
+ await hookIn(this.getInstrument(), stateJSON);
102
+ if (this.config.debug)
103
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: loadSession - FINISHED PRE-HOOK-INS`);
104
+ await this.loadPreset(stateJSON, undefined, true);
105
+ let midiAssignments = stateJSON['additionalState']?.midiAssignments;
106
+ if (midiAssignments && this.getInstrument())
107
+ this.getInstrument().setMIDICCstate(midiAssignments);
108
+ for (const hookIn of this._additionalLoadSession)
109
+ await hookIn(this.getInstrument(), stateJSON, this._isDirtySessionLoad);
110
+ if (this.config.retainUIScale && stateJSON['uiScale'])
111
+ try {
112
+ GorillaEngine.UI.getControlById('root')['uiScale'] = stateJSON['uiScale'];
113
+ }
114
+ catch (err) {
115
+ console.error(err);
116
+ }
117
+ this._isLoadingSession = false;
118
+ this._loadedSession = true;
119
+ if (this.config.debug)
120
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: loadSession - FINISHED`);
121
+ return stateJSON;
122
+ }
123
+ catch (err) {
124
+ this._isLoadingSession = false;
125
+ this._loadedSession = false;
126
+ if (this.config.debug)
127
+ console.error(err);
128
+ if (err instanceof SessionAndPresetsError_1.SessionAndPresetsError)
129
+ throw err;
130
+ else
131
+ throw new SessionAndPresetsError_1.SessionAndPresetsError(SessionAndPresetsError_1.SessionAndPresetsErrorTypes.loadingSession, 'Error loading session!', `The session could not be restored. ${err}`, { cause: err });
132
+ }
133
+ }
134
+ async loadPresets(dirs) {
135
+ if (this.config.debug)
136
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: loadPresets`);
137
+ const presets = [];
138
+ const lp = async (dir, baseDir) => {
139
+ try {
140
+ fs.ensureDirSync(dir.path, {
141
+ recursive: true,
142
+ });
143
+ const files = await fs.readdir(dir.path);
144
+ if (!files.length)
145
+ return;
146
+ for (const file of files) {
147
+ const fullPath = path.join(dir.path, file);
148
+ if (fs.lstatSync(fullPath).isDirectory()) {
149
+ await lp({
150
+ path: fullPath,
151
+ type: dir.type,
152
+ additionalData: dir.additionalData,
153
+ }, baseDir);
154
+ }
155
+ else {
156
+ if (path.basename(fullPath, path.extname(fullPath)) !== '.DS_Store') {
157
+ const preset = await this.createPresetItem(file, dir, dir.path, baseDir);
158
+ presets.push(preset);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ catch (err) {
164
+ if (err instanceof SessionAndPresetsError_1.SessionAndPresetsError)
165
+ throw err;
166
+ else
167
+ throw new SessionAndPresetsError_1.SessionAndPresetsError(SessionAndPresetsError_1.SessionAndPresetsErrorTypes.presetsLoading, 'Presets Loading Error!!', `An error occured trying to load presets. ${err}`, { cause: err });
168
+ }
169
+ };
170
+ for (const dir of dirs)
171
+ await lp(dir, dir.path);
172
+ return presets;
173
+ }
174
+ async createPresetItem(file, dir, presetsDir, baseDir) {
175
+ let category;
176
+ if (presetsDir.replace(baseDir, '') !== '') {
177
+ category = presetsDir
178
+ .replace(baseDir, '')
179
+ .substring(1)
180
+ .replace(platform() === 'win32' ? /\\/g : '/', '|');
181
+ }
182
+ const fullPath = path.join(presetsDir, file);
183
+ const preset = {
184
+ uuid: (0, utils_1.createHash)(fullPath),
185
+ type: dir.type,
186
+ filePath: fullPath,
187
+ fileName: path.basename(fullPath),
188
+ name: `${path.basename(fullPath, path.extname(fullPath))}`,
189
+ subFolderPath: presetsDir.replace(baseDir, '').substring(1),
190
+ category: category,
191
+ additionalData: structuredClone(dir.additionalData),
192
+ };
193
+ for (const hookIn of this._additionalCreatePresetItem)
194
+ await hookIn(preset);
195
+ return preset;
196
+ }
197
+ /*
198
+ PRESET LOADING
199
+ */
200
+ async loadPreset(presetObj, presetItem, sessionRestore = false, isInitialPreset = false) {
201
+ if (this.config.debug)
202
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: loadPreset sessionRestore: ${sessionRestore} isInitialPreset: ${isInitialPreset} - START`);
203
+ for (const hookIn of this._additionalPreLoadPreset) {
204
+ if (isInitialPreset && this.sessionInvolved) {
205
+ this.isDirtySessionLoad = true;
206
+ break;
207
+ }
208
+ await hookIn(this.getInstrument(), presetObj, presetItem, sessionRestore);
209
+ }
210
+ if (isInitialPreset && this.sessionInvolved) {
211
+ this.isDirtySessionLoad = true;
212
+ return false;
213
+ }
214
+ this.applyPresetInstrumentState(this.getInstrument(), presetObj.dsp_settings, sessionRestore, isInitialPreset);
215
+ for (const hookIn of this._additionalLoadPreset) {
216
+ if (isInitialPreset && this.sessionInvolved) {
217
+ this.isDirtySessionLoad = true;
218
+ break;
219
+ }
220
+ await hookIn(this.getInstrument(), presetObj, sessionRestore);
221
+ }
222
+ return true;
223
+ }
224
+ async loadPresetFromSource(source, isInitialPreset = false, instStateToRetain) {
225
+ // chack if youre (filePath) exists
226
+ if (await fs.exists(source)) {
227
+ // Find preset
228
+ const preset = this.state.presets.find((item) => item.filePath === source);
229
+ // Read preset file
230
+ const fileAsString = await fs.readFile(source, 'utf8');
231
+ const parsedPreset = JSON.parse(fileAsString);
232
+ if (isInitialPreset && this.sessionInvolved)
233
+ return;
234
+ for (const hookIn of this._additionalPreLoadPresetFromSource) {
235
+ if (isInitialPreset && this.sessionInvolved) {
236
+ this.isDirtySessionLoad = true;
237
+ break;
238
+ }
239
+ await hookIn(this.getInstrument(), preset, parsedPreset, isInitialPreset);
240
+ }
241
+ if (isInitialPreset && this.sessionInvolved) {
242
+ this.isDirtySessionLoad = true;
243
+ return;
244
+ }
245
+ if (instStateToRetain && instStateToRetain.length > 0) {
246
+ const dspSettings = parsedPreset['dsp_settings'];
247
+ for (let i = 0; i < instStateToRetain.length; i++) {
248
+ const findItem = (item) => item.key === instStateToRetain[i].key;
249
+ const parsedPresetItem = dspSettings.find(findItem);
250
+ // if it does not exist in preset data, add it. Could be a property not flagged to retain
251
+ if (!parsedPresetItem) {
252
+ dspSettings.push(instStateToRetain[i]);
253
+ }
254
+ else {
255
+ const itemIndex = dspSettings.findIndex(findItem);
256
+ dspSettings[itemIndex] = instStateToRetain[i];
257
+ }
258
+ }
259
+ }
260
+ await this.loadPreset(parsedPreset, preset, false, isInitialPreset);
261
+ for (const hookIn of this._additionalLoadPresetFromSource) {
262
+ if (isInitialPreset && this.sessionInvolved) {
263
+ this.isDirtySessionLoad = true;
264
+ break;
265
+ }
266
+ await hookIn(this.getInstrument(), preset, parsedPreset, isInitialPreset);
267
+ }
268
+ return true;
269
+ }
270
+ else {
271
+ throw new SessionAndPresetsError_1.SessionAndPresetsError(SessionAndPresetsError_1.SessionAndPresetsErrorTypes.presetFileNotFound, `Unable to load preset!`, `The preset to be loaded could not be found. ${source}`, { source: source });
272
+ }
273
+ }
274
+ /*
275
+ PRESET CREATION
276
+ */
277
+ createPreset(sessionRestore = false) {
278
+ //if(this.config.debug) console.debug(`PresetManager: createPreset sessionRestore: ${sessionRestore}`);
279
+ try {
280
+ // the preset object
281
+ const presetObj = {
282
+ general: this.createPresetHeader(),
283
+ dsp_settings: this.createPresetInstrumentState(this.getInstrument(), sessionRestore),
284
+ };
285
+ for (const hookIn of this._additionalCreatePreset)
286
+ hookIn(this.getInstrument(), presetObj, sessionRestore);
287
+ return presetObj;
288
+ }
289
+ catch (err) {
290
+ if (this.config.debug)
291
+ console.error(err);
292
+ if (err instanceof SessionAndPresetsError_1.SessionAndPresetsError)
293
+ throw err;
294
+ else
295
+ throw new SessionAndPresetsError_1.SessionAndPresetsError(SessionAndPresetsError_1.SessionAndPresetsErrorTypes.presetCreation, 'Presets Creation Error!', `An error occured trying to create the preset. ${err}`, { cause: err, sessionRestore: sessionRestore });
296
+ }
297
+ }
298
+ createPresetHeader() {
299
+ return {
300
+ pluginVersion: GorillaEngine.getBuildInformation().version,
301
+ buildNumber: GorillaEngine.getBuildInformation().buildNumber,
302
+ manufacturer: GorillaEngine.getManufacturerName(),
303
+ pluginName: GorillaEngine.getPluginName(),
304
+ date: new Date(),
305
+ };
306
+ }
307
+ createPresetInstrumentState(instrument, sessionRestore) {
308
+ const instState = [];
309
+ for (const key in this.getInstrument()) {
310
+ const p = this.getInstrument()[key];
311
+ if (p instanceof Function) {
312
+ }
313
+ else if (p !== undefined && p !== null) {
314
+ if (p.persistence &&
315
+ (sessionRestore ? p.persistence.saveInSession : p.persistence.saveInPreset)) {
316
+ const saveProps = this.getInstrumentParam(this.getInstrument(), key, sessionRestore);
317
+ if (saveProps)
318
+ instState.push(saveProps);
319
+ }
320
+ }
321
+ }
322
+ return instState;
323
+ }
324
+ getInstrumentParam(instrument, key, sessionRestore) {
325
+ const p = this.getInstrument()[key];
326
+ if (p.persistence &&
327
+ (sessionRestore ? p.persistence.saveInSession : p.persistence.saveInPreset)) {
328
+ const saveProps = {
329
+ key: key,
330
+ controlType: p.controlType,
331
+ normValue: p.normValue,
332
+ value: p.value,
333
+ valueText: p.text,
334
+ maxValue: p.maxValue,
335
+ minValue: p.minValue,
336
+ resolution: p.resolution,
337
+ };
338
+ if (p.steps.length > 0) {
339
+ saveProps['isArray'] = true;
340
+ saveProps['stepsLength'] = p.steps.length;
341
+ }
342
+ for (const hookIn of this._additionalGetInstrumentParam)
343
+ hookIn(this.getInstrument(), key, saveProps, sessionRestore);
344
+ return saveProps;
345
+ }
346
+ return false;
347
+ }
348
+ applyPresetInstrumentState(instrument, instStateFromPreset, sessionRestore, isInitialPreset = false) {
349
+ if (this.config.debug)
350
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: applyPresetInstrumentState sessionRestore: ${sessionRestore} isLoadingSession: ${this._isLoadingSession} loadedSession: ${this._loadedSession}`);
351
+ if (!Array.isArray(instStateFromPreset)) {
352
+ if (this.config.debug)
353
+ console.error(`PresetManager: applyPresetInstrumentState - malformed state`);
354
+ if (this.config.debug)
355
+ console.error(instStateFromPreset);
356
+ /*throw new SessionAndPresetsError(
357
+ SessionAndPresetsErrorTypes.presetInstrumentFormat,
358
+ 'Preset Format Error',
359
+ `The instrument state ot this preset is not compatible with the parsing alogrithm! `
360
+ );*/
361
+ return;
362
+ }
363
+ let startedRecalling = false;
364
+ try {
365
+ const recallFirst = Object.keys(this.getInstrument()).filter((prop) => this.getInstrument()[prop].persistence &&
366
+ (sessionRestore
367
+ ? this.getInstrument()[prop].persistence.saveInSession
368
+ : this.getInstrument()[prop].persistence.saveInPreset) &&
369
+ this.getInstrument()[prop].persistence.recallFirst);
370
+ const recallLast = Object.keys(this.getInstrument()).filter((prop) => this.getInstrument()[prop].persistence &&
371
+ (sessionRestore
372
+ ? this.getInstrument()[prop].persistence.saveInSession
373
+ : this.getInstrument()[prop].persistence.saveInPreset) &&
374
+ this.getInstrument()[prop].persistence.recallLast);
375
+ this.getInstrument().startRecallingParameterState();
376
+ startedRecalling = true;
377
+ for (const param of recallFirst) {
378
+ this.setInstrumentParam(this.getInstrument(), instStateFromPreset, param, sessionRestore, isInitialPreset);
379
+ }
380
+ for (const key in this.getInstrument()) {
381
+ if (this.getInstrument()[key] instanceof Function) {
382
+ }
383
+ else if (!recallFirst.find((k) => k === key) && !recallLast.find((k) => k === key)) {
384
+ this.setInstrumentParam(this.getInstrument(), instStateFromPreset, key, sessionRestore, isInitialPreset);
385
+ }
386
+ }
387
+ for (const param of recallLast) {
388
+ this.setInstrumentParam(this.getInstrument(), instStateFromPreset, param, sessionRestore, isInitialPreset);
389
+ }
390
+ this.getInstrument().endRecallingParameterState();
391
+ }
392
+ catch (err) {
393
+ if (this.getInstrument() && startedRecalling)
394
+ this.getInstrument().endRecallingParameterState();
395
+ if (this.config.debug)
396
+ console.error(err);
397
+ throw new SessionAndPresetsError_1.SessionAndPresetsError(SessionAndPresetsError_1.SessionAndPresetsErrorTypes.applyInstrumentState, 'Error Applying Instrument State!', `Could not apply instrument state stored in preset.`, { cause: err, instStateFromPreset: instStateFromPreset });
398
+ }
399
+ if (this.config.debug)
400
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: applyPresetInstrumentState sessionRestore: ${sessionRestore} isLoadingSession: ${this._isLoadingSession} loadedSession: ${this._loadedSession} - FINISHED`);
401
+ }
402
+ setInstrumentParam(instrument, instStateFromPreset, key, sessionRestore, isInitialPreset = false) {
403
+ if (isInitialPreset && this.sessionInvolved) {
404
+ this.isDirtySessionLoad = true;
405
+ if (this.config.debug)
406
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: setInstrumentParam sessionRestore: ${sessionRestore} isLoadingSession: ${this._isLoadingSession} loadedSession: ${this._loadedSession} - ABORT & FLAG SESSION DIRTY`);
407
+ return;
408
+ }
409
+ const instProperty = this.getInstrument()[key];
410
+ if (!instProperty)
411
+ return;
412
+ if (instProperty.persistence &&
413
+ (sessionRestore
414
+ ? instProperty.persistence.saveInSession
415
+ : instProperty.persistence.saveInPreset)) {
416
+ const presetProperty = instStateFromPreset.find((item) => item.key === key);
417
+ if (presetProperty && Object.keys(presetProperty).length === 4) {
418
+ // old preset format
419
+ instProperty.normValueAsync = presetProperty.value;
420
+ }
421
+ else if (presetProperty) {
422
+ // if key exists in preset
423
+ if (presetProperty.isArray) {
424
+ // if property contains array/steps
425
+ const valueIndex = instProperty.steps.indexOf(presetProperty.valueText);
426
+ if (valueIndex >= 0) {
427
+ // found in array
428
+ instProperty.valueAsync = valueIndex;
429
+ }
430
+ else {
431
+ instProperty.normValueAsync = presetProperty.normValue;
432
+ }
433
+ }
434
+ else if (instProperty.minValue !== presetProperty.minValue ||
435
+ instProperty.maxValue !== presetProperty.maxValue) {
436
+ // min or max value differ between inst & preset, set value instead of normValue FOR NOW!
437
+ instProperty.valueAsync = presetProperty.value;
438
+ }
439
+ else {
440
+ instProperty.normValueAsync = presetProperty.normValue;
441
+ }
442
+ }
443
+ else {
444
+ // if not exist in preset, write default value
445
+ instProperty.normValueAsync = instProperty.defaultValue;
446
+ }
447
+ for (const hookIn of this._additionalSetInstrumentParam) {
448
+ if (isInitialPreset && this.sessionInvolved) {
449
+ this.isDirtySessionLoad = true;
450
+ return;
451
+ }
452
+ hookIn(this.getInstrument(), key, presetProperty, sessionRestore);
453
+ }
454
+ }
455
+ }
456
+ /*
457
+ SAVING & DELETING OF PRESET
458
+ */
459
+ async savePreset(filePath) {
460
+ const fileObj = {
461
+ filePath: filePath,
462
+ };
463
+ if (this.config.debug)
464
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: savePreset filePath: ${fileObj.filePath}`);
465
+ for (const hookIn of this._additionalPreSavePreset)
466
+ await hookIn(this.getInstrument(), fileObj);
467
+ const preset = await this.createPreset(false);
468
+ try {
469
+ await fs.outputFile(filePath, JSON.stringify(preset));
470
+ for (const hookIn of this._additionalSavePreset)
471
+ await hookIn(this.getInstrument(), preset, fileObj);
472
+ }
473
+ catch (err) {
474
+ if (err instanceof SessionAndPresetsError_1.SessionAndPresetsError)
475
+ throw err;
476
+ else
477
+ throw new SessionAndPresetsError_1.SessionAndPresetsError(SessionAndPresetsError_1.SessionAndPresetsErrorTypes.presetSaving, 'Presets Saving Error!', `The preset could not be saved. ${filePath} ${err}`, { cause: err, filePath: filePath, preset: preset });
478
+ }
479
+ }
480
+ async saveAsPreset(filePath) { }
481
+ async deletePreset(filePath) {
482
+ if (this.config.debug)
483
+ console.debug(`${_1.GE_SESSION_PRESETS_LIB} PresetManager: deletePreset filePath: ${filePath}`);
484
+ fs.unlinkSync(filePath);
485
+ //if (this._additionalDeletePreset) await this._additionalDeletePreset(instrument)
486
+ }
487
+ /*
488
+ Additional Hook-In Logic
489
+ */
490
+ _additionalSaveSession = [];
491
+ setAdditionalSaveSession(additionalSaveSession) {
492
+ this._additionalSaveSession.push(additionalSaveSession);
493
+ }
494
+ removeAdditionalSaveSession(additionalSaveSession) {
495
+ this._additionalSaveSession.splice(this._additionalSaveSession.indexOf(additionalSaveSession), 1);
496
+ }
497
+ _additionalPreLoadSession = [];
498
+ setAdditionalPreLoadSession(additionalPreLoadSession) {
499
+ this._additionalPreLoadSession.push(additionalPreLoadSession);
500
+ }
501
+ removeAdditionalPreLoadSession(additionalPreLoadSession) {
502
+ this._additionalPreLoadSession.splice(this._additionalPreLoadSession.indexOf(additionalPreLoadSession), 1);
503
+ }
504
+ _additionalLoadSession = [];
505
+ setAdditionalLoadSession(additionalLoadSession) {
506
+ this._additionalLoadSession.push(additionalLoadSession);
507
+ }
508
+ removeAdditionalLoadSession(additionalLoadSession) {
509
+ this._additionalLoadSession.splice(this._additionalLoadSession.indexOf(additionalLoadSession), 1);
510
+ }
511
+ _additionalCreatePresetItem = [];
512
+ setAdditionalCreatePresetItem(additionalCreatePresetItem) {
513
+ this._additionalCreatePresetItem.push(additionalCreatePresetItem);
514
+ }
515
+ removeAdditionalCreatePresetItem(additionalCreatePresetItem) {
516
+ this._additionalCreatePresetItem.splice(this._additionalCreatePresetItem.indexOf(additionalCreatePresetItem), 1);
517
+ }
518
+ _additionalPreLoadPreset = [];
519
+ setAdditionalPreLoadPreset(additionalPreLoadPreset) {
520
+ this._additionalPreLoadPreset.push(additionalPreLoadPreset);
521
+ }
522
+ removeAdditionalPreLoadPreset(additionalPreLoadPreset) {
523
+ this._additionalPreLoadPreset.splice(this._additionalPreLoadPreset.indexOf(additionalPreLoadPreset), 1);
524
+ }
525
+ _additionalLoadPreset = [];
526
+ setAdditionalLoadPreset(additionalLoadPreset) {
527
+ this._additionalLoadPreset.push(additionalLoadPreset);
528
+ }
529
+ removeAdditionalLoadPreset(additionalLoadPreset) {
530
+ this._additionalLoadPreset.splice(this._additionalLoadPreset.indexOf(additionalLoadPreset), 1);
531
+ }
532
+ _additionalPreLoadPresetFromSource = [];
533
+ setAdditionalPreLoadPresetFromSource(additionalPreLoadPresetFromSource) {
534
+ this._additionalPreLoadPresetFromSource.push(additionalPreLoadPresetFromSource);
535
+ }
536
+ removeAdditionalPreLoadPresetFromSource(additionalPreLoadPresetFromSource) {
537
+ this._additionalPreLoadPresetFromSource.splice(this._additionalPreLoadPresetFromSource.indexOf(additionalPreLoadPresetFromSource), 1);
538
+ }
539
+ _additionalLoadPresetFromSource = [];
540
+ setAdditionalLoadPresetFromSource(additionalLoadPresetFromSource) {
541
+ this._additionalLoadPresetFromSource.push(additionalLoadPresetFromSource);
542
+ }
543
+ removeAdditionalLoadPresetFromSource(additionalLoadPresetFromSource) {
544
+ this._additionalLoadPresetFromSource.splice(this._additionalLoadPresetFromSource.indexOf(additionalLoadPresetFromSource), 1);
545
+ }
546
+ _additionalCreatePreset = [];
547
+ setAdditionalCreatePreset(additionalCreatePreset) {
548
+ this._additionalCreatePreset.push(additionalCreatePreset);
549
+ }
550
+ removeAdditionalCreatePreset(additionalCreatePreset) {
551
+ this._additionalCreatePreset.splice(this._additionalCreatePreset.indexOf(additionalCreatePreset), 1);
552
+ }
553
+ _additionalGetInstrumentParam = [];
554
+ setAdditionalGetInstrumentParam(additionalGetInstrumentParam) {
555
+ this._additionalGetInstrumentParam.push(additionalGetInstrumentParam);
556
+ }
557
+ removeAdditionalGetInstrumentParam(additionalGetInstrumentParam) {
558
+ this._additionalGetInstrumentParam.splice(this._additionalGetInstrumentParam.indexOf(additionalGetInstrumentParam), 1);
559
+ }
560
+ _additionalSetInstrumentParam = [];
561
+ setAdditionalSetInstrumentParam(additionalSetInstrumentParam) {
562
+ this._additionalSetInstrumentParam.push(additionalSetInstrumentParam);
563
+ }
564
+ removeAdditionalSetInstrumentParam(additionalSetInstrumentParam) {
565
+ this._additionalSetInstrumentParam.splice(this._additionalSetInstrumentParam.indexOf(additionalSetInstrumentParam), 1);
566
+ }
567
+ _additionalPreSavePreset = [];
568
+ setAdditionalPreSavePreset(additionalPreSavePreset) {
569
+ this._additionalPreSavePreset.push(additionalPreSavePreset);
570
+ }
571
+ removeAdditionalPreSavePreset(additionalPreSavePreset) {
572
+ this._additionalPreSavePreset.splice(this._additionalPreSavePreset.indexOf(additionalPreSavePreset), 1);
573
+ }
574
+ _additionalSavePreset = [];
575
+ setAdditionalSavePreset(additionalSavePreset) {
576
+ this._additionalSavePreset.push(additionalSavePreset);
577
+ }
578
+ removeAdditionalSavePreset(additionalSavePreset) {
579
+ this._additionalSavePreset.splice(this._additionalSavePreset.indexOf(additionalSavePreset), 1);
580
+ }
581
+ _additionalDeletePreset = [];
582
+ setAdditionalDeletePreset(additionalDeletePreset) {
583
+ this._additionalDeletePreset.push(additionalDeletePreset);
584
+ }
585
+ removeAdditionalDeletePreset(additionalDeletePreset) {
586
+ this._additionalDeletePreset.splice(this._additionalDeletePreset.indexOf(additionalDeletePreset), 1);
587
+ }
588
+ }
589
+ exports.PresetManager = PresetManager;
590
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlc2V0TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QcmVzZXRNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsK0JBQWdDO0FBQ2hDLDZCQUE4QjtBQUM5QixpQ0FBa0M7QUFzQmxDLDRFQUd5QztBQUN6Qyx5Q0FBMkM7QUFDM0Msd0JBQTJDO0FBRTNDLE1BQWEsYUFBYTtJQUN4QixNQUFNLENBQTBCO0lBQ2hDLEtBQUssQ0FBeUI7SUFFdEIsaUJBQWlCLEdBQVksS0FBSyxDQUFDO0lBQzNDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFTyxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ3hDLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDdkQsQ0FBQztJQUVPLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUM3QyxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxLQUFjO1FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyx5QkFBc0IsMkNBQTJDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRU8sYUFBYSxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FB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
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export type SessionAndPresetsErrorsProps = {};
3
+ export declare function SessionAndPresetsErrors(props: SessionAndPresetsErrorsProps): React.JSX.Element;