@octaviaflow/core 3.1.0-beta.105 → 3.1.0-beta.106

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionField.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionField/ExpressionField.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAML,KAAK,aAAa,EAIlB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAChC;AAED,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWzD;AAyBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAiBpE;AAuBD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAgB,EAChB,IAAQ,EACR,EAAE,EACF,SAAS,EACT,KAAK,EACL,YAAY,EACZ,WAAW,EACX,cAAsB,EACtB,YAAY,EAAE,SAAS,GACxB,EAAE,oBAAoB,2CAiZtB;AAuND,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ExpressionField.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionField/ExpressionField.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAML,KAAK,aAAa,EAIlB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAChC;AAED,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWzD;AAyBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAiBpE;AAuBD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAgB,EAChB,IAAQ,EACR,EAAE,EACF,SAAS,EACT,KAAK,EACL,YAAY,EACZ,WAAW,EACX,cAAsB,EACtB,YAAY,EAAE,SAAS,GACxB,EAAE,oBAAoB,2CAsatB;AA6OD,eAAe,eAAe,CAAC"}
package/dist/index.cjs CHANGED
@@ -41593,13 +41593,19 @@ function ExpressionField({
41593
41593
  const fieldId = id ?? generatedId;
41594
41594
  const helperId = `${fieldId}-helper`;
41595
41595
  const [editing, setEditing] = (0, import_react188.useState)(null);
41596
+ const resolveLabelRef = (0, import_react188.useRef)(resolveLabel);
41597
+ const resolveCallRef = (0, import_react188.useRef)(resolveCall);
41598
+ const pillEveryTokenRef = (0, import_react188.useRef)(pillEveryToken);
41599
+ resolveLabelRef.current = resolveLabel;
41600
+ resolveCallRef.current = resolveCall;
41601
+ pillEveryTokenRef.current = pillEveryToken;
41596
41602
  const labelFor = (0, import_react188.useCallback)(
41597
- (token) => resolveLabel?.(token) ?? shortReferenceLabel(token),
41598
- [resolveLabel]
41603
+ (token) => resolveLabelRef.current?.(token) ?? shortReferenceLabel(token),
41604
+ []
41599
41605
  );
41600
41606
  const callLabel = (0, import_react188.useCallback)(
41601
- (name) => resolveCall?.(name)?.label ?? (name.startsWith("user.") ? name.slice(5) : name),
41602
- [resolveCall]
41607
+ (name) => resolveCallRef.current?.(name)?.label ?? (name.startsWith("user.") ? name.slice(5) : name),
41608
+ []
41603
41609
  );
41604
41610
  const chipText = (0, import_react188.useCallback)(
41605
41611
  (name, args) => {
@@ -41645,7 +41651,7 @@ function ExpressionField({
41645
41651
  if (!el) return;
41646
41652
  el.innerHTML = "";
41647
41653
  if (!raw) return;
41648
- for (const segment of parseExpression(raw, pillEveryToken)) {
41654
+ for (const segment of parseExpression(raw, pillEveryTokenRef.current)) {
41649
41655
  if (segment.kind === "text") {
41650
41656
  el.appendChild(document.createTextNode(segment.raw));
41651
41657
  continue;
@@ -41657,7 +41663,7 @@ function ExpressionField({
41657
41663
  }
41658
41664
  }
41659
41665
  },
41660
- [pillEveryToken, makeToken]
41666
+ [makeToken]
41661
41667
  );
41662
41668
  (0, import_react188.useEffect)(() => {
41663
41669
  if (fromSelf.current) {
@@ -41768,6 +41774,10 @@ function ExpressionField({
41768
41774
  },
41769
41775
  [editing, chipText, commit]
41770
41776
  );
41777
+ const handleMouseDown = (0, import_react188.useCallback)((e) => {
41778
+ const token = e.target.closest(`.${PILL}, .${CHIP}`);
41779
+ if (token) e.preventDefault();
41780
+ }, []);
41771
41781
  const handleClick = (0, import_react188.useCallback)(
41772
41782
  (e) => {
41773
41783
  const node = e.target;
@@ -41882,6 +41892,7 @@ function ExpressionField({
41882
41892
  style: { minHeight: `${Math.max(1, rows) * 1.5 + 1}rem` },
41883
41893
  onInput: commit,
41884
41894
  onBlur: handleBlur,
41895
+ onMouseDown: handleMouseDown,
41885
41896
  onClick: handleClick,
41886
41897
  onKeyDown: handleKeyDown,
41887
41898
  onCopy: handleCopy,
@@ -41938,6 +41949,13 @@ function CallEditor({
41938
41949
  if (at) crumbs.push({ label: nameOf(at.name), path: path.slice(0, i) });
41939
41950
  }
41940
41951
  const setArg = (index, next) => setDraft((d) => replaceArgument(d, [...path, index], next));
41952
+ const removeArg = (index) => setDraft((d) => {
41953
+ const at = callAt(d, path);
41954
+ if (!at) return d;
41955
+ const next = at.args.filter((_, i) => i !== index);
41956
+ const rebuilt = path.length === 0 ? formatCall(at.name, next) : `${at.name}(${next.join(", ")})`;
41957
+ return path.length === 0 ? rebuilt : replaceArgument(d, path, rebuilt);
41958
+ });
41941
41959
  const dropInto = (index) => (e) => {
41942
41960
  const dropped = e.dataTransfer.getData("application/x-fx-insert");
41943
41961
  if (!dropped) return;
@@ -41997,7 +42015,20 @@ function CallEditor({
41997
42015
  return (
41998
42016
  // eslint-disable-next-line react/no-array-index-key
41999
42017
  /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("div", { className: "ods-expression-field__editor-row", children: [
42000
- /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("span", { id: `arg-${index}-label`, children: rowLabel }),
42018
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("span", { className: "ods-expression-field__editor-row-head", children: [
42019
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)("span", { id: `arg-${index}-label`, children: rowLabel }),
42020
+ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
42021
+ "button",
42022
+ {
42023
+ type: "button",
42024
+ className: "ods-expression-field__editor-remove",
42025
+ "aria-label": `Remove ${rowLabel}`,
42026
+ title: "Remove this argument",
42027
+ onClick: () => removeArg(index),
42028
+ children: "\u2715"
42029
+ }
42030
+ )
42031
+ ] }),
42001
42032
  nested ? /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)(
42002
42033
  "div",
42003
42034
  {
@@ -42060,14 +42091,14 @@ function CallEditor({
42060
42091
  "button",
42061
42092
  {
42062
42093
  type: "button",
42063
- className: "ods-expression-field__editor-link",
42094
+ className: "ods-expression-field__editor-add",
42064
42095
  onClick: () => setDraft((d) => {
42065
42096
  const at = callAt(d, path);
42066
42097
  if (!at) return d;
42067
42098
  const next = [...at.args, '""'];
42068
42099
  return path.length === 0 ? formatCall(at.name, next) : replaceArgument(d, path, `${at.name}(${next.join(", ")})`);
42069
42100
  }),
42070
- children: "+ argument"
42101
+ children: "+ Add argument"
42071
42102
  }
42072
42103
  )
42073
42104
  ] }),