@wildwinter/expr-editor 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -458,6 +458,14 @@ function renderNode(node, path, ctx, parentOp, side) {
458
458
  }
459
459
  }
460
460
  }
461
+ function signToggle(current, onPick) {
462
+ const row = el("div", "exed-sign");
463
+ ["+", "-"].forEach((s) => {
464
+ const cls = `exed-signbtn${s === current ? s === "+" ? " sel-pos" : " sel-neg" : ""}`;
465
+ row.append(button(cls, s === "+" ? "+ set" : "\u2212 unset", () => onPick(s)));
466
+ });
467
+ return row;
468
+ }
461
469
  var deleteOrUnwrapNot = (ctx, path, node) => (
462
470
  // clicking the NOT pill strips it (keeps the operand)
463
471
  setNodeAt(ctx.getAst(), path, node.operand)
@@ -547,14 +555,10 @@ function flagEditor(ctx, path, node, anchor) {
547
555
  ctx.openPopover(anchor, (close) => {
548
556
  const wrap = el("div", "exed-menu");
549
557
  wrap.append(el("div", "exed-menu-head", ["Flag set?"]));
550
- const signRow = el("div", "exed-field-row");
551
- for (const s of ["+", "-"]) {
552
- signRow.append(button(`exed-opt${s === node.sign ? " sel" : ""}`, s === "+" ? "+ set" : "\u2212 unset", () => {
553
- replace(ctx, path, flagDelta(s, node.name));
554
- close();
555
- }));
556
- }
557
- wrap.append(signRow);
558
+ wrap.append(signToggle(node.sign, (s) => {
559
+ replace(ctx, path, flagDelta(s, node.name));
560
+ close();
561
+ }));
558
562
  const names = (entry?.enumValues ?? []).filter((n) => !used.includes(n));
559
563
  if (names.length) {
560
564
  wrap.append(el("div", "exed-menu-head", ["Flag"]));
@@ -1164,21 +1168,15 @@ function mountExpressionEditor(host, opts) {
1164
1168
  let sign = "+";
1165
1169
  const wrap = el("div", "exed-menu");
1166
1170
  wrap.append(el("div", "exed-menu-head", ["Add flag"]));
1167
- const signRow = el("div", "exed-field-row");
1171
+ const signHost = el("div");
1168
1172
  const drawSign = () => {
1169
- signRow.replaceChildren(
1170
- button(`exed-opt${sign === "+" ? " sel" : ""}`, "+ set", () => {
1171
- sign = "+";
1172
- drawSign();
1173
- }),
1174
- button(`exed-opt${sign === "-" ? " sel" : ""}`, "\u2212 unset", () => {
1175
- sign = "-";
1176
- drawSign();
1177
- })
1178
- );
1173
+ signHost.replaceChildren(signToggle(sign, (s) => {
1174
+ sign = s;
1175
+ drawSign();
1176
+ }));
1179
1177
  };
1180
1178
  drawSign();
1181
- wrap.append(signRow);
1179
+ wrap.append(signHost);
1182
1180
  const commit = (name) => {
1183
1181
  const delta = flagDelta(sign, name);
1184
1182
  emit(toSrc(call ? { ...call, args: [...call.args, delta] } : callNode("set_flags", [parseRef(opts.flagValue.target), delta])));