"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MarkerOverlayPoint = void 0;
const printTree_1 = require("tree-dump/lib/printTree");
const OverlayPoint_1 = require("./OverlayPoint");
class MarkerOverlayPoint extends OverlayPoint_1.OverlayPoint {
    constructor(rga, id, anchor, marker) {
        super(rga, id, anchor);
        this.rga = rga;
        this.marker = marker;
        /**
         * Hash value of the following text contents, up until the next marker.
         */
        this.textHash = 0;
    }
    type() {
        return this.marker && this.marker.type();
    }
    data() {
        return this.marker && this.marker.data();
    }
    // ---------------------------------------------------------------- Printable
    toStringName() {
        return 'MarkerOverlayPoint';
    }
    toStringHeader(tab, lite) {
        const hash = lite ? '' : `#${this.textHash.toString(36).slice(-4)}`;
        const tag = lite ? '' : `, type = ${JSON.stringify(this.type())}`;
        return `${super.toStringHeader(tab, lite)}${lite ? '' : ' '}${hash}${tag}`;
    }
    toString(tab = '', lite) {
        return (this.toStringHeader(tab, lite) +
            (lite
                ? ''
                : (0, printTree_1.printTree)(tab, [
                    (tab) => this.marker.toString(tab),
                    ...this.layers.map((slice) => (tab) => slice.toString(tab)),
                    ...this.markers.map((slice) => (tab) => slice.toString(tab)),
                ])));
    }
}
exports.MarkerOverlayPoint = MarkerOverlayPoint;
//# sourceMappingURL=MarkerOverlayPoint.js.map