'use strict';

const events = require('../events.js');
const Point = require('./point.js');
const PointList = require('./point_list.js');

class Note extends events.EventTarget {
    constructor() {
        super();
        this._text = '…';
        this._polygon = new PointList();
    }

    get text() { return this._text; }
    get polygon() { return this._polygon; }

    set text(value) { this._text = value; }

    static fromResponse(response) {
        const note = new Note();
        note._updateFromResponse(response);
        return note;
    }

    _updateFromResponse(response) {
        this._text = response.text;
        this._polygon.clear();
        for (let point of response.polygon) {
            this._polygon.add(new Point(point[0], point[1]));
        }
    }
}

module.exports = Note;