Object.defineProperty(exports, "__esModule", { value: true });
exports.ZoomOSC_Basic = void 0;
var node_osc_1 = require("node-osc");
exports.ZoomOSC_Basic = {
    handleAction: function (oscAction) {
        return function (ActionAPI) {
            ActionAPI.onExecute(function (properties, status, deck) {
                return exports.ZoomOSC_Basic.onExecute(ActionAPI, oscAction, properties, status, deck);
            });
            ActionAPI.onOpenEditor(exports.ZoomOSC_Basic.onOpenEditor);
        };
    },
    onExecute: function (ActionAPI, oscAction, properties, status, deck) {
        if (properties.connectionID != undefined && properties.connectionID.length > 0) {
            var connection = ActionAPI.getConnection('zoomosc', properties.connectionID);
            if (connection) {
                var ip = connection.properties.ip;
                var port = connection.properties.port;
                var header = connection.properties.header;
                var client = new node_osc_1.Client(ip, port);
                client.send("/".concat(header, "/").concat(properties.target, "/").concat(oscAction), properties.targetValue, function () {
                    status("OSC Action ".concat(oscAction, " has been called with ").concat(properties.targetValue), 'info');
                    client.close();
                });
            }
            else
                status('Connection does not exist', 'error');
        }
        else
            status('No connectionID specified', 'error');
    },
    onOpenEditor: function (EditorAPI, properties) {
        var connectionID = properties.connectionID != undefined ? properties.connectionID : 'none';
        var target = properties.target != undefined ? properties.target : 'userName';
        var targetValue = properties.targetValue != undefined ? properties.targetValue : '';
        var connectionField = {
            id: 'connectionID',
            name: 'Connection',
            type: 'connection',
            connectionType: 'zoomosc',
            value: connectionID
        };
        var targetField = {
            id: 'target',
            name: 'Target',
            type: 'select',
            value: target,
            values: [
                { id: 'userName', text: 'By username' },
                { id: 'targetID', text: 'By target id' },
                { id: 'zoomID', text: 'By Zoom id' },
                { id: 'galIndex', text: 'By gallery index' },
                { id: 'me', text: 'Me' },
                { id: 'all', text: 'All' }
            ]
        };
        var targetValueField = {
            id: 'targetValue',
            name: 'Value',
            type: 'text',
            value: targetValue
        };
        EditorAPI.onFieldChanges(function (fields) {
            var fieldObject = EditorAPI.tools.objectifyFieldsValues(fields);
            EditorAPI.saveProperties({
                connectionID: fieldObject.connectionID,
                target: fieldObject.target,
                targetValue: fieldObject.targetValue
            });
        });
        EditorAPI.setFields([
            connectionField,
            targetField,
            targetValueField
        ]);
    }
};
//# sourceMappingURL=basic.js.map