UNPKG

reaper-osc

Version:
177 lines 6.19 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LastRegion = exports.Region = void 0; /** * Contains classes for Reaper regions * @module */ const Notify_1 = require("./Notify"); const Commands_1 = require("./Client/Commands"); /** A region in the current device region bank */ let Region = class Region { /** * @param slotIndex The 1-based slot index within the current device region bank * @param send A callback used to send typed commands to Reaper */ constructor(slotIndex, _send) { this.slotIndex = slotIndex; this._send = _send; this._name = ''; /** The user-assigned region number (as shown in Reaper's UI), or empty string if not yet populated */ this._number = ''; this._time = 0; this._length = 0; } /** The region's name */ get name() { return this._name; } /** * The user-assigned region number (as shown in Reaper's UI). * This is a string because Reaper sends it as a string (e.g. "1", "2"). * Empty string if not yet populated. */ get number() { return this._number; } /** The region's start time in seconds */ get time() { return this._time; } /** The region's length in seconds */ get length() { return this._length; } /** * Handle a typed incoming event * @param event The event to handle */ handleEvent(event) { switch (event.type) { case 'region:name': if (event.slotIndex === this.slotIndex) this._name = event.name; break; case 'region:number': if (event.slotIndex === this.slotIndex) this._number = event.number; break; case 'region:time': if (event.slotIndex === this.slotIndex) this._time = event.time; break; case 'region:length': if (event.slotIndex === this.slotIndex) this._length = event.length; break; } } // eslint-disable-next-line @typescript-eslint/no-unused-vars onPropertyChanged(property, callback) { throw new Error('not implemented'); } /** * Rename this region. Uses write-by-ID: the user-assigned region number from {@link number}. * @param name The new name for the region */ rename(name) { this._send(Commands_1.SetRegionName(parseInt(this._number), name)); } /** * Move this region to a new start time. Uses write-by-ID. * Note: moving a region may change its bank slot index on the next sync. * @param time The new start time in seconds */ setTime(time) { this._send(Commands_1.SetRegionTime(parseInt(this._number), time)); } /** * Set the length of this region. Uses write-by-ID. * @param length The new length in seconds */ setLength(length) { this._send(Commands_1.SetRegionLength(parseInt(this._number), length)); } /** * Change the user-assigned number of this region. Uses write-by-ID. * @param number The new user-assigned region number */ setNumber(number) { this._send(Commands_1.SetRegionNumber(parseInt(this._number), number)); } }; __decorate([ Notify_1.notify('name') ], Region.prototype, "_name", void 0); __decorate([ Notify_1.notify('number') ], Region.prototype, "_number", void 0); __decorate([ Notify_1.notify('time') ], Region.prototype, "_time", void 0); __decorate([ Notify_1.notify('length') ], Region.prototype, "_length", void 0); Region = __decorate([ Notify_1.notifyOnPropertyChanged ], Region); exports.Region = Region; /** The most recently entered region during playback */ let LastRegion = class LastRegion { constructor() { this._name = ''; this._number = ''; this._time = 0; this._length = 0; } /** The region's name */ get name() { return this._name; } /** * The user-assigned region number (as shown in Reaper's UI). * Empty string if no region has been entered yet. */ get number() { return this._number; } /** The region's start time in seconds */ get time() { return this._time; } /** The region's length in seconds */ get length() { return this._length; } /** * Handle a typed incoming event * @param event The event to handle */ handleEvent(event) { switch (event.type) { case 'lastRegion:name': this._name = event.name; break; case 'lastRegion:number': this._number = event.number; break; case 'lastRegion:time': this._time = event.time; break; case 'lastRegion:length': this._length = event.length; break; } } // eslint-disable-next-line @typescript-eslint/no-unused-vars onPropertyChanged(property, callback) { throw new Error('not implemented'); } }; __decorate([ Notify_1.notify('name') ], LastRegion.prototype, "_name", void 0); __decorate([ Notify_1.notify('number') ], LastRegion.prototype, "_number", void 0); __decorate([ Notify_1.notify('time') ], LastRegion.prototype, "_time", void 0); __decorate([ Notify_1.notify('length') ], LastRegion.prototype, "_length", void 0); LastRegion = __decorate([ Notify_1.notifyOnPropertyChanged ], LastRegion); exports.LastRegion = LastRegion; //# sourceMappingURL=Region.js.map