"use strict"; /** * Wysiwyg_Input - WYSIWYG editor widget using Quill * * Implements the form widget interface: * - val() - Get/set HTML content * - seed() - Fills with random content */ class Wysiwyg_Input extends Form_Input_Abstract { on_create() { this.quill = null; } on_ready() { // Wait for Quill to be loaded, then initialize const that = this; quill_ready(function () { that._initialize_quill(); }); } _initialize_quill() { // Initialize Quill editor this.quill = new Quill(this.$sid('editor')[0], { theme: 'snow', placeholder: this.args.placeholder || 'Enter text...', modules: { toolbar: [[{ 'header': [1, 2, 3, false] }], ['bold', 'italic', 'underline', 'strike'], ['blockquote', 'code-block'], [{ 'list': 'ordered' }, { 'list': 'bullet' }], [{ 'indent': '-1' }, { 'indent': '+1' }], ['link', 'image'], ['clean']] } }); // Update hidden input on text change const that = this; this.quill.on('text-change', function () { that.$sid('hidden_input').val(that.quill.root.innerHTML); }); } /** * val() - Get or set HTML content * @param {string} [value] - If provided, sets the HTML content * @returns {string} The HTML content when called as getter */ val(value) { if (arguments.length === 0) { // Getter if (!this.quill) return ''; return this.quill.root.innerHTML; } else { // Setter if (!this.quill) { // Quill not ready yet, wait and try again const that = this; setTimeout(() => that.val(value), 100); return; } if (value) { this.quill.root.innerHTML = value; this.$sid('hidden_input').val(value); } } } /** * Seed - Fill with random content for testing */ async seed() { if (!this.quill) return; const sample_content = `
This is a sample paragraph with bold text and italic text.
Another paragraph with a sample link.
`; this.val(sample_content); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXeXNpd3lnX0lucHV0IiwiRm9ybV9JbnB1dF9BYnN0cmFjdCIsIm9uX2NyZWF0ZSIsInF1aWxsIiwib25fcmVhZHkiLCJ0aGF0IiwicXVpbGxfcmVhZHkiLCJfaW5pdGlhbGl6ZV9xdWlsbCIsIlF1aWxsIiwiJGlkIiwidGhlbWUiLCJwbGFjZWhvbGRlciIsImFyZ3MiLCJtb2R1bGVzIiwidG9vbGJhciIsIm9uIiwidmFsIiwicm9vdCIsImlubmVySFRNTCIsInZhbHVlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2V0VGltZW91dCIsInNlZWQiLCJzYW1wbGVfY29udGVudCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL2lucHV0cy93eXNpd3lnX2lucHV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV3lzaXd5Z19JbnB1dCAtIFdZU0lXWUcgZWRpdG9yIHdpZGdldCB1c2luZyBRdWlsbFxuICpcbiAqIEltcGxlbWVudHMgdGhlIGZvcm0gd2lkZ2V0IGludGVyZmFjZTpcbiAqIC0gdmFsKCkgLSBHZXQvc2V0IEhUTUwgY29udGVudFxuICogLSBzZWVkKCkgLSBGaWxscyB3aXRoIHJhbmRvbSBjb250ZW50XG4gKi9cbmNsYXNzIFd5c2l3eWdfSW5wdXQgZXh0ZW5kcyBGb3JtX0lucHV0X0Fic3RyYWN0IHtcbiAgICBvbl9jcmVhdGUoKSB7XG4gICAgICAgIHRoaXMucXVpbGwgPSBudWxsO1xuICAgIH1cblxuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBXYWl0IGZvciBRdWlsbCB0byBiZSBsb2FkZWQsIHRoZW4gaW5pdGlhbGl6ZVxuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgcXVpbGxfcmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGF0Ll9pbml0aWFsaXplX3F1aWxsKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9pbml0aWFsaXplX3F1aWxsKCkge1xuICAgICAgICAvLyBJbml0aWFsaXplIFF1aWxsIGVkaXRvclxuICAgICAgICB0aGlzLnF1aWxsID0gbmV3IFF1aWxsKHRoaXMuJGlkKCdlZGl0b3InKVswXSwge1xuICAgICAgICAgICAgdGhlbWU6ICdzbm93JyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmFyZ3MucGxhY2Vob2xkZXIgfHwgJ0VudGVyIHRleHQuLi4nLFxuICAgICAgICAgICAgbW9kdWxlczoge1xuICAgICAgICAgICAgICAgIHRvb2xiYXI6IFtcbiAgICAgICAgICAgICAgICAgICAgW3sgJ2hlYWRlcic6IFsxLCAyLCAzLCBmYWxzZV0gfV0sXG4gICAgICAgICAgICAgICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLFxuICAgICAgICAgICAgICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxuICAgICAgICAgICAgICAgICAgICBbeyAnbGlzdCc6ICdvcmRlcmVkJ30sIHsgJ2xpc3QnOiAnYnVsbGV0JyB9XSxcbiAgICAgICAgICAgICAgICAgICAgW3sgJ2luZGVudCc6ICctMSd9LCB7ICdpbmRlbnQnOiAnKzEnIH1dLFxuICAgICAgICAgICAgICAgICAgICBbJ2xpbmsnLCAnaW1hZ2UnXSxcbiAgICAgICAgICAgICAgICAgICAgWydjbGVhbiddXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVcGRhdGUgaGlkZGVuIGlucHV0IG9uIHRleHQgY2hhbmdlXG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGlzLnF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhhdC4kaWQoJ2hpZGRlbl9pbnB1dCcpLnZhbCh0aGF0LnF1aWxsLnJvb3QuaW5uZXJIVE1MKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdmFsKCkgLSBHZXQgb3Igc2V0IEhUTUwgY29udGVudFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdmFsdWVdIC0gSWYgcHJvdmlkZWQsIHNldHMgdGhlIEhUTUwgY29udGVudFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBIVE1MIGNvbnRlbnQgd2hlbiBjYWxsZWQgYXMgZ2V0dGVyXG4gICAgICovXG4gICAgdmFsKHZhbHVlKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBHZXR0ZXJcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWlsbCkgcmV0dXJuICcnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVpbGwucm9vdC5pbm5lckhUTUw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTZXR0ZXJcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWlsbCkge1xuICAgICAgICAgICAgICAgIC8vIFF1aWxsIG5vdCByZWFkeSB5ZXQsIHdhaXQgYW5kIHRyeSBhZ2FpblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhhdC52YWwodmFsdWUpLCAxMDApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5yb290LmlubmVySFRNTCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuJGlkKCdoaWRkZW5faW5wdXQnKS52YWwodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VlZCAtIEZpbGwgd2l0aCByYW5kb20gY29udGVudCBmb3IgdGVzdGluZ1xuICAgICAqL1xuICAgIGFzeW5jIHNlZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5xdWlsbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNhbXBsZV9jb250ZW50ID0gYFxuICAgICAgICAgICAgPGgyPlNhbXBsZSBIZWFkaW5nPC9oMj5cbiAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBzYW1wbGUgcGFyYWdyYXBoIHdpdGggPHN0cm9uZz5ib2xkIHRleHQ8L3N0cm9uZz4gYW5kIDxlbT5pdGFsaWMgdGV4dDwvZW0+LjwvcD5cbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICA8bGk+Rmlyc3QgYnVsbGV0IHBvaW50PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+U2Vjb25kIGJ1bGxldCBwb2ludDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlRoaXJkIGJ1bGxldCBwb2ludDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPHA+QW5vdGhlciBwYXJhZ3JhcGggd2l0aCA8YSBocmVmPVwiI1wiPmEgc2FtcGxlIGxpbms8L2E+LjwvcD5cbiAgICAgICAgYDtcblxuICAgICAgICB0aGlzLnZhbChzYW1wbGVfY29udGVudCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsYUFBYSxTQUFTQyxtQkFBbUIsQ0FBQztFQUM1Q0MsU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsSUFBSSxDQUFDQyxLQUFLLEdBQUcsSUFBSTtFQUNyQjtFQUVBQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtJQUNBLE1BQU1DLElBQUksR0FBRyxJQUFJO0lBQ2pCQyxXQUFXLENBQUMsWUFBVztNQUNuQkQsSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQztFQUNOO0VBRUFBLGlCQUFpQkEsQ0FBQSxFQUFHO0lBQ2hCO0lBQ0EsSUFBSSxDQUFDSixLQUFLLEdBQUcsSUFBSUssS0FBSyxDQUFDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQzFDQyxLQUFLLEVBQUUsTUFBTTtNQUNiQyxXQUFXLEVBQUUsSUFBSSxDQUFDQyxJQUFJLENBQUNELFdBQVcsSUFBSSxlQUFlO01BQ3JERSxPQUFPLEVBQUU7UUFDTEMsT0FBTyxFQUFFLENBQ0wsQ0FBQztVQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUs7UUFBRSxDQUFDLENBQUMsRUFDaEMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFDekMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQzVCLENBQUM7VUFBRSxNQUFNLEVBQUU7UUFBUyxDQUFDLEVBQUU7VUFBRSxNQUFNLEVBQUU7UUFBUyxDQUFDLENBQUMsRUFDNUMsQ0FBQztVQUFFLFFBQVEsRUFBRTtRQUFJLENBQUMsRUFBRTtVQUFFLFFBQVEsRUFBRTtRQUFLLENBQUMsQ0FBQyxFQUN2QyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFDakIsQ0FBQyxPQUFPLENBQUM7TUFFakI7SUFDSixDQUFDLENBQUM7O0lBRUY7SUFDQSxNQUFNVCxJQUFJLEdBQUcsSUFBSTtJQUNqQixJQUFJLENBQUNGLEtBQUssQ0FBQ1ksRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFXO01BQ3BDVixJQUFJLENBQUNJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQ08sR0FBRyxDQUFDWCxJQUFJLENBQUNGLEtBQUssQ0FBQ2MsSUFBSSxDQUFDQyxTQUFTLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0VBQ047O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJRixHQUFHQSxDQUFDRyxLQUFLLEVBQUU7SUFDUCxJQUFJQyxTQUFTLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDeEI7TUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRTtNQUMxQixPQUFPLElBQUksQ0FBQ0EsS0FBSyxDQUFDYyxJQUFJLENBQUNDLFNBQVM7SUFDcEMsQ0FBQyxNQUFNO01BQ0g7TUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDZixLQUFLLEVBQUU7UUFDYjtRQUNBLE1BQU1FLElBQUksR0FBRyxJQUFJO1FBQ2pCaUIsVUFBVSxDQUFDLE1BQU1qQixJQUFJLENBQUNXLEdBQUcsQ0FBQ0csS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ3RDO01BQ0o7TUFFQSxJQUFJQSxLQUFLLEVBQUU7UUFDUCxJQUFJLENBQUNoQixLQUFLLENBQUNjLElBQUksQ0FBQ0MsU0FBUyxHQUFHQyxLQUFLO1FBQ2pDLElBQUksQ0FBQ1YsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDTyxHQUFHLENBQUNHLEtBQUssQ0FBQztNQUN2QztJQUNKO0VBQ0o7O0VBRUE7QUFDSjtBQUNBO0VBQ0ksTUFBTUksSUFBSUEsQ0FBQSxFQUFHO0lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQ3BCLEtBQUssRUFBRTtJQUVqQixNQUFNcUIsY0FBYyxHQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0lBRUQsSUFBSSxDQUFDUixHQUFHLENBQUNRLGNBQWMsQ0FBQztFQUM1QjtBQUNKIiwiaWdub3JlTGlzdCI6W119