@octaviaflow/core 3.1.0-beta.105 → 3.1.0-beta.107
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/components/ExpressionField/ExpressionField.d.ts.map +1 -1
- package/dist/index.cjs +58 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +58 -11
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -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,
|
|
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,2CAuatB;AAoQD,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) =>
|
|
41598
|
-
[
|
|
41603
|
+
(token) => resolveLabelRef.current?.(token) ?? shortReferenceLabel(token),
|
|
41604
|
+
[]
|
|
41599
41605
|
);
|
|
41600
41606
|
const callLabel = (0, import_react188.useCallback)(
|
|
41601
|
-
(name) =>
|
|
41602
|
-
[
|
|
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,
|
|
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
|
-
[
|
|
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,
|
|
@@ -41896,6 +41907,7 @@ function ExpressionField({
|
|
|
41896
41907
|
CallEditor,
|
|
41897
41908
|
{
|
|
41898
41909
|
raw: editing.raw,
|
|
41910
|
+
anchor: editing.el,
|
|
41899
41911
|
rect: editing.rect,
|
|
41900
41912
|
nameOf: callLabel,
|
|
41901
41913
|
labelFor,
|
|
@@ -41910,6 +41922,7 @@ function ExpressionField({
|
|
|
41910
41922
|
}
|
|
41911
41923
|
function CallEditor({
|
|
41912
41924
|
raw,
|
|
41925
|
+
anchor,
|
|
41913
41926
|
rect,
|
|
41914
41927
|
nameOf,
|
|
41915
41928
|
labelFor,
|
|
@@ -41921,13 +41934,27 @@ function CallEditor({
|
|
|
41921
41934
|
const [path, setPath] = (0, import_react188.useState)([]);
|
|
41922
41935
|
const [rawMode, setRawMode] = (0, import_react188.useState)(false);
|
|
41923
41936
|
const panelRef = (0, import_react188.useRef)(null);
|
|
41937
|
+
const onApplyRef = (0, import_react188.useRef)(onApply);
|
|
41938
|
+
onApplyRef.current = onApply;
|
|
41939
|
+
const draftRef = (0, import_react188.useRef)(draft);
|
|
41940
|
+
draftRef.current = draft;
|
|
41924
41941
|
(0, import_react188.useEffect)(() => {
|
|
41925
41942
|
const onKey = (e) => {
|
|
41926
41943
|
if (e.key === "Escape") onCancel();
|
|
41927
41944
|
};
|
|
41945
|
+
const onPointerDown = (e) => {
|
|
41946
|
+
const target = e.target;
|
|
41947
|
+
if (panelRef.current?.contains(target)) return;
|
|
41948
|
+
if (anchor.contains(target)) return;
|
|
41949
|
+
onApplyRef.current(draftRef.current);
|
|
41950
|
+
};
|
|
41928
41951
|
document.addEventListener("keydown", onKey);
|
|
41929
|
-
|
|
41930
|
-
|
|
41952
|
+
document.addEventListener("mousedown", onPointerDown, true);
|
|
41953
|
+
return () => {
|
|
41954
|
+
document.removeEventListener("keydown", onKey);
|
|
41955
|
+
document.removeEventListener("mousedown", onPointerDown, true);
|
|
41956
|
+
};
|
|
41957
|
+
}, [anchor, onCancel]);
|
|
41931
41958
|
const current = callAt(draft, path);
|
|
41932
41959
|
const signature = current ? resolveCall?.(current.name) : void 0;
|
|
41933
41960
|
const names = signature?.args ?? [];
|
|
@@ -41938,6 +41965,13 @@ function CallEditor({
|
|
|
41938
41965
|
if (at) crumbs.push({ label: nameOf(at.name), path: path.slice(0, i) });
|
|
41939
41966
|
}
|
|
41940
41967
|
const setArg = (index, next) => setDraft((d) => replaceArgument(d, [...path, index], next));
|
|
41968
|
+
const removeArg = (index) => setDraft((d) => {
|
|
41969
|
+
const at = callAt(d, path);
|
|
41970
|
+
if (!at) return d;
|
|
41971
|
+
const next = at.args.filter((_, i) => i !== index);
|
|
41972
|
+
const rebuilt = path.length === 0 ? formatCall(at.name, next) : `${at.name}(${next.join(", ")})`;
|
|
41973
|
+
return path.length === 0 ? rebuilt : replaceArgument(d, path, rebuilt);
|
|
41974
|
+
});
|
|
41941
41975
|
const dropInto = (index) => (e) => {
|
|
41942
41976
|
const dropped = e.dataTransfer.getData("application/x-fx-insert");
|
|
41943
41977
|
if (!dropped) return;
|
|
@@ -41997,7 +42031,20 @@ function CallEditor({
|
|
|
41997
42031
|
return (
|
|
41998
42032
|
// eslint-disable-next-line react/no-array-index-key
|
|
41999
42033
|
/* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("div", { className: "ods-expression-field__editor-row", children: [
|
|
42000
|
-
/* @__PURE__ */ (0, import_jsx_runtime174.
|
|
42034
|
+
/* @__PURE__ */ (0, import_jsx_runtime174.jsxs)("span", { className: "ods-expression-field__editor-row-head", children: [
|
|
42035
|
+
/* @__PURE__ */ (0, import_jsx_runtime174.jsx)("span", { id: `arg-${index}-label`, children: rowLabel }),
|
|
42036
|
+
/* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
|
|
42037
|
+
"button",
|
|
42038
|
+
{
|
|
42039
|
+
type: "button",
|
|
42040
|
+
className: "ods-expression-field__editor-remove",
|
|
42041
|
+
"aria-label": `Remove ${rowLabel}`,
|
|
42042
|
+
title: "Remove this argument",
|
|
42043
|
+
onClick: () => removeArg(index),
|
|
42044
|
+
children: "\u2715"
|
|
42045
|
+
}
|
|
42046
|
+
)
|
|
42047
|
+
] }),
|
|
42001
42048
|
nested ? /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)(
|
|
42002
42049
|
"div",
|
|
42003
42050
|
{
|
|
@@ -42060,14 +42107,14 @@ function CallEditor({
|
|
|
42060
42107
|
"button",
|
|
42061
42108
|
{
|
|
42062
42109
|
type: "button",
|
|
42063
|
-
className: "ods-expression-field__editor-
|
|
42110
|
+
className: "ods-expression-field__editor-add",
|
|
42064
42111
|
onClick: () => setDraft((d) => {
|
|
42065
42112
|
const at = callAt(d, path);
|
|
42066
42113
|
if (!at) return d;
|
|
42067
42114
|
const next = [...at.args, '""'];
|
|
42068
42115
|
return path.length === 0 ? formatCall(at.name, next) : replaceArgument(d, path, `${at.name}(${next.join(", ")})`);
|
|
42069
42116
|
}),
|
|
42070
|
-
children: "+ argument"
|
|
42117
|
+
children: "+ Add argument"
|
|
42071
42118
|
}
|
|
42072
42119
|
)
|
|
42073
42120
|
] }),
|