"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;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SleepAction = void 0;
const index_js_1 = require("../model/index.js");
class SleepAction extends index_js_1.Action {
    constructor() {
        super(...arguments);
        this.delay = 1000;
    }
    async exec() {
        const timeoutAt = Date.now() + this.delay;
        while (Date.now() < timeoutAt) {
            await new Promise(r => setTimeout(r, 100));
            await this.$script.tick();
        }
    }
}
SleepAction.$type = 'Flow.sleep';
SleepAction.$icon = 'fas fa-hourglass-half';
SleepAction.$help = `
Waits for specified number of milliseconds.

This is unreliable (but easy) method of waiting for arbitrarily long processes to finish.
It is recommended to use Expect for scripting such cases, whenever it is possible to do so.

### Parameters

- delay: milliseconds to wait
`;
__decorate([
    index_js_1.params.Number({ min: 0 }),
    __metadata("design:type", Number)
], SleepAction.prototype, "delay", void 0);
exports.SleepAction = SleepAction;
//# sourceMappingURL=Flow.sleep.js.map