init() {
        if (this.options.submission) {
            const submission = _.extend({}, this.options.submission);
            this._submission = submission;
            this._data = submission.data;
        } else {
            this._submission = this._submission || { data: {} };
        }

        // Remove any existing components.
        if (this.components && this.components.length) {
            this.destroyComponents();
            this.components = [];
        }

        if (this.component) {
            this.component.components = this.form ? this.form.components : [];
        } else {
            this.component = this.form;
        }
        this.component.type = 'form';
        this.component.input = false;

        this.addComponents();
        this.on(
            'submitButton',
            (options) => {
                this.submit(false, options).catch((e) => {
                    if (options?.instance) {
                        options.instance.loading = false;
                    }
                    return e !== false && e !== undefined && console.log(e);
                });
            },
            true
        );

        this.on(
            'checkValidity',
            (data) => this.validate(data, { dirty: true, process: 'change' }),
            true
        );
        this.on('requestUrl', (args) => this.submitUrl(args.url, args.headers), true);
        this.on('resetForm', () => this.resetValue(), true);
        this.on('deleteSubmission', () => this.deleteSubmission(), true);
        this.on('refreshData', () => this.updateValue(), true);

        if (this.shouldCallFormController) {
              this.executeFormController();
        }

        return this.formReady;
    }
Build the form.
@returns {Promise} - The promise that is triggered when the form is built.