Source

SubTextPart.js

import { CallbackType, RequestHelper } from "./helper/module";

export class SubTextPart {
    /** @type {any} */
    #txSubTextPart

    /** @type {string=} */
    #data;
    get data() { return this.#data; }
    /** @type {number=} */
    #id;
    get id() { return this.#id; }
    /** @type {string=} */
    #text;
    get text() { return this.#text; }

    /**
     * Wrapper für TXTextControl.SubTextPart
     * @param {any} txSubTextPart 
     */
    constructor(txSubTextPart) {
        this.#txSubTextPart = txSubTextPart;
        this.#bindCallbacks();
    }

    /**
     * binding callback functions
     */
    #bindCallbacks() {
        this.#txSubTextPart.getData = this.#txSubTextPart.getData.bind(this.#txSubTextPart);
        this.#txSubTextPart.getID = this.#txSubTextPart.getID.bind(this.#txSubTextPart);
        this.#txSubTextPart.getText = this.#txSubTextPart.getText.bind(this.#txSubTextPart);
    }

    /**
     * Gets additional data of the subtextpart
     * @returns {Promise<string>}
     */
    async getData() {
        if (this.#data == null || typeof this.#data === 'undefined') {
            let result = await RequestHelper.Promise(this.#txSubTextPart.getData,
                CallbackType.RequestStringCallback,
                CallbackType.ErrorCallback);
            this.#data = result;
        }
        return /** @type {string} */(this.#data);
    }

    /**
     * Gets the text which is contained within a text field
     * @returns {Promise<string>}
     */
    async getText() {
        if (this.#text == null || typeof this.#text === 'undefined') {
            let result = await RequestHelper.Promise(this.#txSubTextPart.getText,
                CallbackType.RequestStringCallback,
                CallbackType.ErrorCallback);
            this.#text = result;
        }
        return /** @type {string} */(this.#text);
    }

    /**
     * Gets an identifier for a subtextpart
     * @returns {Promise<number>}
     */
    async getID() {
        if (this.#id == null || typeof this.#id === 'undefined') {
            let result = await RequestHelper.Promise(this.#txSubTextPart.getID,
                CallbackType.RequestNumberCallback,
                CallbackType.ErrorCallback);
            this.#id = result;
        }
        return /** @type {number} */(this.#id);
    }

    // getID: (
    //     callback: RequestNumberCallback,
    //     errorCallback?: ErrorCallback
    //   ) => void;
    //   getData: (
    //     callback: RequestStringCallback,
    //     errorCallback?: ErrorCallback
    //   ) => void;
    //   getText: (
    //     callback: RequestStringCallback,
    //     errorCallback?: ErrorCallback
    //   ) => void;

}