0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-27 22:33:07 +00:00

update widgets - add hints component and adjust autocomplete logic

This commit is contained in:
Charlie Humphreys
2023-06-30 00:18:23 -05:00
parent b6d37dd825
commit 47c84d9f01
10 changed files with 327 additions and 149 deletions

View File

@@ -1,9 +1,18 @@
const React = require('react');
const ReactDOM = require('react-dom');
const { PATTERNS, FIELD_TYPE } = require('./widget-elements/constants');
require('./widget-elements/hints/hints.jsx');
module.exports = function(CodeMirror, widgets, cm) {
const { cClass, field } = require('./widget-elements')(CodeMirror);
module.exports = function(CodeMirror, widgets, cm, setHints) {
const hintsEl = document.createElement('ul');
hintsEl.id = 'hints';
hintsEl.role = 'listbox';
hintsEl.ariaExpanded = 'true';
hintsEl.className = 'CodeMirror-hints default';
hintsEl.style = 'display: none;';
document.body.append(hintsEl);
const { cClass, field } = require('./widget-elements')(CodeMirror, setHints);
const widgetOptions = widgets.map((widget)=>({
name : widget.name,
pattern : PATTERNS.widget[widget.type](widget.name),
@@ -18,8 +27,7 @@ module.exports = function(CodeMirror, widgets, cm) {
return field(cm, n, {
name : style,
type : FIELD_TYPE.STYLE,
increment : 5,
lineBreak : true
increment : 5
});
}).filter((s)=>!!s);
@@ -42,11 +50,11 @@ module.exports = function(CodeMirror, widgets, cm) {
widgetOption.createWidget(n, widget.node);
}
} else {
cm.addLineWidget(n, widgetOption.createWidget(n), {
return cm.addLineWidget(n, widgetOption.createWidget(n), {
above : false,
coverGutter : false,
noHScroll : true,
className : `snippet-options-widget ${widgetOption.name}-widget`
className : `snippet-options-widget ${widgetOption.name}-widget ${widgetOption.name}-widget-${n}`
});
}
};
@@ -59,8 +67,9 @@ module.exports = function(CodeMirror, widgets, cm) {
updateAllLineWidgets : ()=>{
for (let i = 0; i < cm.lineCount(); i++) {
const { widgets } = cm.lineInfo(i);
if(!!widgets)
if(!!widgets) {
updateLineWidgets(i);
}
}
},
updateWidgetGutter : ()=>{