Files
rspade_system/storage-broken/rsx-tmp/babel_4b653c1727c14398c7b46fec75eca758.js
root 78553d4edf Fix code quality violations for publish
Remove unused blade settings pages not linked from UI
Convert remaining frontend pages to SPA actions
Convert settings user_settings and general to SPA actions
Convert settings profile pages to SPA actions
Convert contacts and projects add/edit pages to SPA actions
Convert clients add/edit page to SPA action with loading pattern
Refactor component scoped IDs from $id to $sid
Fix jqhtml comment syntax and implement universal error component system
Update all application code to use new unified error system
Remove all backwards compatibility - unified error system complete
Phase 5: Remove old response classes
Phase 3-4: Ajax response handler sends new format, old helpers deprecated
Phase 2: Add client-side unified error foundation
Phase 1: Add server-side unified error foundation
Add unified Ajax error response system with constants

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 04:35:01 +00:00

91 lines
8.9 KiB
JavaScript
Executable File

"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 = `
<h2>Sample Heading</h2>
<p>This is a sample paragraph with <strong>bold text</strong> and <em>italic text</em>.</p>
<ul>
<li>First bullet point</li>
<li>Second bullet point</li>
<li>Third bullet point</li>
</ul>
<p>Another paragraph with <a href="#">a sample link</a>.</p>
`;
this.val(sample_content);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXeXNpd3lnX0lucHV0IiwiRm9ybV9JbnB1dF9BYnN0cmFjdCIsIm9uX2NyZWF0ZSIsInF1aWxsIiwib25fcmVhZHkiLCJ0aGF0IiwicXVpbGxfcmVhZHkiLCJfaW5pdGlhbGl6ZV9xdWlsbCIsIlF1aWxsIiwiJGlkIiwidGhlbWUiLCJwbGFjZWhvbGRlciIsImFyZ3MiLCJtb2R1bGVzIiwidG9vbGJhciIsIm9uIiwidmFsIiwicm9vdCIsImlubmVySFRNTCIsInZhbHVlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2V0VGltZW91dCIsInNlZWQiLCJzYW1wbGVfY29udGVudCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL2lucHV0cy93eXNpd3lnX2lucHV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV3lzaXd5Z19JbnB1dCAtIFdZU0lXWUcgZWRpdG9yIHdpZGdldCB1c2luZyBRdWlsbFxuICpcbiAqIEltcGxlbWVudHMgdGhlIGZvcm0gd2lkZ2V0IGludGVyZmFjZTpcbiAqIC0gdmFsKCkgLSBHZXQvc2V0IEhUTUwgY29udGVudFxuICogLSBzZWVkKCkgLSBGaWxscyB3aXRoIHJhbmRvbSBjb250ZW50XG4gKi9cbmNsYXNzIFd5c2l3eWdfSW5wdXQgZXh0ZW5kcyBGb3JtX0lucHV0X0Fic3RyYWN0IHtcbiAgICBvbl9jcmVhdGUoKSB7XG4gICAgICAgIHRoaXMucXVpbGwgPSBudWxsO1xuICAgIH1cblxuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBXYWl0IGZvciBRdWlsbCB0byBiZSBsb2FkZWQsIHRoZW4gaW5pdGlhbGl6ZVxuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgcXVpbGxfcmVhZHkoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGF0Ll9pbml0aWFsaXplX3F1aWxsKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9pbml0aWFsaXplX3F1aWxsKCkge1xuICAgICAgICAvLyBJbml0aWFsaXplIFF1aWxsIGVkaXRvclxuICAgICAgICB0aGlzLnF1aWxsID0gbmV3IFF1aWxsKHRoaXMuJGlkKCdlZGl0b3InKVswXSwge1xuICAgICAgICAgICAgdGhlbWU6ICdzbm93JyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmFyZ3MucGxhY2Vob2xkZXIgfHwgJ0VudGVyIHRleHQuLi4nLFxuICAgICAgICAgICAgbW9kdWxlczoge1xuICAgICAgICAgICAgICAgIHRvb2xiYXI6IFtcbiAgICAgICAgICAgICAgICAgICAgW3sgJ2hlYWRlcic6IFsxLCAyLCAzLCBmYWxzZV0gfV0sXG4gICAgICAgICAgICAgICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLFxuICAgICAgICAgICAgICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxuICAgICAgICAgICAgICAgICAgICBbeyAnbGlzdCc6ICdvcmRlcmVkJ30sIHsgJ2xpc3QnOiAnYnVsbGV0JyB9XSxcbiAgICAgICAgICAgICAgICAgICAgW3sgJ2luZGVudCc6ICctMSd9LCB7ICdpbmRlbnQnOiAnKzEnIH1dLFxuICAgICAgICAgICAgICAgICAgICBbJ2xpbmsnLCAnaW1hZ2UnXSxcbiAgICAgICAgICAgICAgICAgICAgWydjbGVhbiddXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVcGRhdGUgaGlkZGVuIGlucHV0IG9uIHRleHQgY2hhbmdlXG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGlzLnF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhhdC4kaWQoJ2hpZGRlbl9pbnB1dCcpLnZhbCh0aGF0LnF1aWxsLnJvb3QuaW5uZXJIVE1MKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdmFsKCkgLSBHZXQgb3Igc2V0IEhUTUwgY29udGVudFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdmFsdWVdIC0gSWYgcHJvdmlkZWQsIHNldHMgdGhlIEhUTUwgY29udGVudFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBIVE1MIGNvbnRlbnQgd2hlbiBjYWxsZWQgYXMgZ2V0dGVyXG4gICAgICovXG4gICAgdmFsKHZhbHVlKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBHZXR0ZXJcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWlsbCkgcmV0dXJuICcnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVpbGwucm9vdC5pbm5lckhUTUw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTZXR0ZXJcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWlsbCkge1xuICAgICAgICAgICAgICAgIC8vIFF1aWxsIG5vdCByZWFkeSB5ZXQsIHdhaXQgYW5kIHRyeSBhZ2FpblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhhdC52YWwodmFsdWUpLCAxMDApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbC5yb290LmlubmVySFRNTCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuJGlkKCdoaWRkZW5faW5wdXQnKS52YWwodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VlZCAtIEZpbGwgd2l0aCByYW5kb20gY29udGVudCBmb3IgdGVzdGluZ1xuICAgICAqL1xuICAgIGFzeW5jIHNlZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5xdWlsbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNhbXBsZV9jb250ZW50ID0gYFxuICAgICAgICAgICAgPGgyPlNhbXBsZSBIZWFkaW5nPC9oMj5cbiAgICAgICAgICAgIDxwPlRoaXMgaXMgYSBzYW1wbGUgcGFyYWdyYXBoIHdpdGggPHN0cm9uZz5ib2xkIHRleHQ8L3N0cm9uZz4gYW5kIDxlbT5pdGFsaWMgdGV4dDwvZW0+LjwvcD5cbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICA8bGk+Rmlyc3QgYnVsbGV0IHBvaW50PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+U2Vjb25kIGJ1bGxldCBwb2ludDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlRoaXJkIGJ1bGxldCBwb2ludDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPHA+QW5vdGhlciBwYXJhZ3JhcGggd2l0aCA8YSBocmVmPVwiI1wiPmEgc2FtcGxlIGxpbms8L2E+LjwvcD5cbiAgICAgICAgYDtcblxuICAgICAgICB0aGlzLnZhbChzYW1wbGVfY29udGVudCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsYUFBYSxTQUFTQyxtQkFBbUIsQ0FBQztFQUM1Q0MsU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsSUFBSSxDQUFDQyxLQUFLLEdBQUcsSUFBSTtFQUNyQjtFQUVBQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtJQUNBLE1BQU1DLElBQUksR0FBRyxJQUFJO0lBQ2pCQyxXQUFXLENBQUMsWUFBVztNQUNuQkQsSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQztFQUNOO0VBRUFBLGlCQUFpQkEsQ0FBQSxFQUFHO0lBQ2hCO0lBQ0EsSUFBSSxDQUFDSixLQUFLLEdBQUcsSUFBSUssS0FBSyxDQUFDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQzFDQyxLQUFLLEVBQUUsTUFBTTtNQUNiQyxXQUFXLEVBQUUsSUFBSSxDQUFDQyxJQUFJLENBQUNELFdBQVcsSUFBSSxlQUFlO01BQ3JERSxPQUFPLEVBQUU7UUFDTEMsT0FBTyxFQUFFLENBQ0wsQ0FBQztVQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUs7UUFBRSxDQUFDLENBQUMsRUFDaEMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFDekMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQzVCLENBQUM7VUFBRSxNQUFNLEVBQUU7UUFBUyxDQUFDLEVBQUU7VUFBRSxNQUFNLEVBQUU7UUFBUyxDQUFDLENBQUMsRUFDNUMsQ0FBQztVQUFFLFFBQVEsRUFBRTtRQUFJLENBQUMsRUFBRTtVQUFFLFFBQVEsRUFBRTtRQUFLLENBQUMsQ0FBQyxFQUN2QyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFDakIsQ0FBQyxPQUFPLENBQUM7TUFFakI7SUFDSixDQUFDLENBQUM7O0lBRUY7SUFDQSxNQUFNVCxJQUFJLEdBQUcsSUFBSTtJQUNqQixJQUFJLENBQUNGLEtBQUssQ0FBQ1ksRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFXO01BQ3BDVixJQUFJLENBQUNJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQ08sR0FBRyxDQUFDWCxJQUFJLENBQUNGLEtBQUssQ0FBQ2MsSUFBSSxDQUFDQyxTQUFTLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0VBQ047O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJRixHQUFHQSxDQUFDRyxLQUFLLEVBQUU7SUFDUCxJQUFJQyxTQUFTLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDeEI7TUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDbEIsS0FBSyxFQUFFLE9BQU8sRUFBRTtNQUMxQixPQUFPLElBQUksQ0FBQ0EsS0FBSyxDQUFDYyxJQUFJLENBQUNDLFNBQVM7SUFDcEMsQ0FBQyxNQUFNO01BQ0g7TUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDZixLQUFLLEVBQUU7UUFDYjtRQUNBLE1BQU1FLElBQUksR0FBRyxJQUFJO1FBQ2pCaUIsVUFBVSxDQUFDLE1BQU1qQixJQUFJLENBQUNXLEdBQUcsQ0FBQ0csS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ3RDO01BQ0o7TUFFQSxJQUFJQSxLQUFLLEVBQUU7UUFDUCxJQUFJLENBQUNoQixLQUFLLENBQUNjLElBQUksQ0FBQ0MsU0FBUyxHQUFHQyxLQUFLO1FBQ2pDLElBQUksQ0FBQ1YsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDTyxHQUFHLENBQUNHLEtBQUssQ0FBQztNQUN2QztJQUNKO0VBQ0o7O0VBRUE7QUFDSjtBQUNBO0VBQ0ksTUFBTUksSUFBSUEsQ0FBQSxFQUFHO0lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQ3BCLEtBQUssRUFBRTtJQUVqQixNQUFNcUIsY0FBYyxHQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0lBRUQsSUFBSSxDQUFDUixHQUFHLENBQUNRLGNBQWMsQ0FBQztFQUM1QjtBQUNKIiwiaWdub3JlTGlzdCI6W119