@rocapine/react-native-onboarding-ui 1.20.0 → 1.22.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.
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { z } from "zod";
3
- import { type LeafCondition, type ConditionGroup } from "@rocapine/react-native-onboarding";
3
+ import { type LeafCondition, type ConditionGroup, type ComposableVariableKind } from "@rocapine/react-native-onboarding";
4
4
  import { BaseBoxProps } from "./BaseBoxProps";
5
5
  import { UIElement } from "../types";
6
6
  import { RenderContext } from "./shared";
@@ -19,12 +19,35 @@ export type SetVariableButtonAction = {
19
19
  name: string;
20
20
  value: string;
21
21
  label?: string;
22
+ /**
23
+ * When `"expression"`, `value` is parsed as an arithmetic expression with
24
+ * `{{var}}` references, numeric literals, and `+ - * /` (parens supported).
25
+ * On parse failure, falls back to plain interpolation (string).
26
+ * Defaults to `"literal"` — `value` stored verbatim.
27
+ */
28
+ valueMode?: "literal" | "expression";
29
+ /**
30
+ * Tags the stored variable's underlying type. In `"literal"` mode this is
31
+ * used as-is. In `"expression"` mode the inferred result kind is used
32
+ * unless `kind` is explicitly set (ignored — expression mode derives kind
33
+ * from evaluation).
34
+ */
35
+ kind?: ComposableVariableKind;
22
36
  };
23
37
  export declare const SetVariableButtonActionSchema: z.ZodObject<{
24
38
  type: z.ZodLiteral<"setVariable">;
25
39
  name: z.ZodString;
26
40
  value: z.ZodString;
27
41
  label: z.ZodOptional<z.ZodString>;
42
+ valueMode: z.ZodOptional<z.ZodEnum<{
43
+ literal: "literal";
44
+ expression: "expression";
45
+ }>>;
46
+ kind: z.ZodOptional<z.ZodEnum<{
47
+ string: "string";
48
+ int: "int";
49
+ float: "float";
50
+ }>>;
28
51
  }, z.core.$strip>;
29
52
  export type ButtonAction = "continue" | CustomButtonAction | SetVariableButtonAction;
30
53
  export declare const ButtonActionSchema: z.ZodUnion<readonly [z.ZodLiteral<"continue">, z.ZodObject<{
@@ -36,6 +59,15 @@ export declare const ButtonActionSchema: z.ZodUnion<readonly [z.ZodLiteral<"cont
36
59
  name: z.ZodString;
37
60
  value: z.ZodString;
38
61
  label: z.ZodOptional<z.ZodString>;
62
+ valueMode: z.ZodOptional<z.ZodEnum<{
63
+ literal: "literal";
64
+ expression: "expression";
65
+ }>>;
66
+ kind: z.ZodOptional<z.ZodEnum<{
67
+ string: "string";
68
+ int: "int";
69
+ float: "float";
70
+ }>>;
39
71
  }, z.core.$strip>]>;
40
72
  export type ButtonElementProps = BaseBoxProps & {
41
73
  label: string;
@@ -128,6 +160,15 @@ export declare const ButtonElementPropsSchema: z.ZodObject<{
128
160
  name: z.ZodString;
129
161
  value: z.ZodString;
130
162
  label: z.ZodOptional<z.ZodString>;
163
+ valueMode: z.ZodOptional<z.ZodEnum<{
164
+ literal: "literal";
165
+ expression: "expression";
166
+ }>>;
167
+ kind: z.ZodOptional<z.ZodEnum<{
168
+ string: "string";
169
+ int: "int";
170
+ float: "float";
171
+ }>>;
131
172
  }, z.core.$strip>]>>>;
132
173
  action: z.ZodOptional<z.ZodEnum<{
133
174
  continue: "continue";
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/ButtonElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EAGpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAmC,MAAM,UAAU,CAAC;AAI1E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;iBAInC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;iBAKxC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAErF,eAAO,MAAM,kBAAkB;;;;;;;;;mBAI7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,yCAAyC;IACzC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,YAAY,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC;IAC9C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAenC,CAAC;AAEH,KAAK,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE9D,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,kBAAkB,KAAK,KAAG,KAAK,CAAC,YAmKtE,CAAC"}
1
+ {"version":3,"file":"ButtonElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/ButtonElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAG5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAmC,MAAM,UAAU,CAAC;AAK1E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;iBAInC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IACrC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;iBAOxC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAErF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;mBAI7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,yCAAyC;IACzC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,YAAY,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC;IAC9C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAenC,CAAC;AAEH,KAAK,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE9D,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,kBAAkB,KAAK,KAAG,KAAK,CAAC,YA6KtE,CAAC"}
@@ -9,6 +9,7 @@ const react_native_onboarding_1 = require("@rocapine/react-native-onboarding");
9
9
  const BaseBoxProps_1 = require("./BaseBoxProps");
10
10
  const shared_1 = require("./shared");
11
11
  const GradientBox_1 = require("./GradientBox");
12
+ const expression_1 = require("./expression");
12
13
  exports.CustomButtonActionSchema = zod_1.z.object({
13
14
  type: zod_1.z.literal("custom"),
14
15
  function: zod_1.z.string().min(1, "function must not be empty"),
@@ -19,6 +20,8 @@ exports.SetVariableButtonActionSchema = zod_1.z.object({
19
20
  name: zod_1.z.string().min(1, "name must not be empty"),
20
21
  value: zod_1.z.string(),
21
22
  label: zod_1.z.string().optional(),
23
+ valueMode: zod_1.z.enum(["literal", "expression"]).optional(),
24
+ kind: zod_1.z.enum(["int", "float", "string"]).optional(),
22
25
  });
23
26
  exports.ButtonActionSchema = zod_1.z.union([
24
27
  zod_1.z.literal("continue"),
@@ -60,7 +63,18 @@ const ButtonElementComponent = ({ element, ctx }) => {
60
63
  return;
61
64
  }
62
65
  if (act.type === "setVariable") {
63
- setVariable(act.name, { value: act.value, label: act.label });
66
+ let value;
67
+ let kind;
68
+ if (act.valueMode === "expression") {
69
+ const computed = (0, expression_1.evaluateSetVariableExpression)(act.value, variables);
70
+ value = computed.value;
71
+ kind = computed.kind;
72
+ }
73
+ else {
74
+ value = act.value;
75
+ kind = act.kind;
76
+ }
77
+ setVariable(act.name, { value, label: act.label, kind });
64
78
  continue;
65
79
  }
66
80
  const handler = customActions[act.function];
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/ButtonElement.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ButtonElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/ButtonElement.tsx"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ export type CarouselElementProps = BaseBoxProps & {
15
15
  dotHeight?: number;
16
16
  dotsGap?: number;
17
17
  dotsMarginTop?: number;
18
+ defaultIndex?: number | null;
19
+ variableName?: string;
18
20
  };
19
21
  export declare const CarouselElementPropsSchema: z.ZodObject<{
20
22
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
@@ -93,6 +95,8 @@ export declare const CarouselElementPropsSchema: z.ZodObject<{
93
95
  dotHeight: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
94
96
  dotsGap: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
95
97
  dotsMarginTop: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
98
+ defaultIndex: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
99
+ variableName: z.ZodOptional<z.ZodString>;
96
100
  }, z.core.$strip>;
97
101
  type CarouselUIElement = Extract<UIElement, {
98
102
  type: "Carousel";
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/CarouselElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAGnD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG;IAChD,YAAY,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYrC,CAAC;AAEH,KAAK,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAIlE,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,iBAAiB,CAAC;IAC3B,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA4HpF"}
1
+ {"version":3,"file":"CarouselElement.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/CarouselElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAGnD,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG;IAChD,YAAY,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcrC,CAAC;AAEH,KAAK,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAIlE,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,iBAAiB,CAAC;IAC3B,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA2JpF"}
@@ -56,16 +56,43 @@ exports.CarouselElementPropsSchema = BaseBoxProps_1.BaseBoxPropsSchema.extend({
56
56
  dotHeight: zod_1.z.number().nonnegative().optional().default(4),
57
57
  dotsGap: zod_1.z.number().nonnegative().optional().default(8),
58
58
  dotsMarginTop: zod_1.z.number().optional().default(12),
59
+ defaultIndex: zod_1.z.number().int().nonnegative().nullable().optional(),
60
+ variableName: zod_1.z.string().min(1).optional(),
59
61
  });
60
62
  const DEFAULT_HEIGHT = 240;
61
63
  function CarouselElementComponent({ element, ctx }) {
62
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
64
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
63
65
  const { theme } = ctx;
64
66
  const { props, children } = element;
65
67
  const progress = (0, react_native_reanimated_1.useSharedValue)(0);
66
68
  const ref = (0, react_1.useRef)(null);
67
69
  const [size, setSize] = (0, react_1.useState)(null);
68
70
  const carouselType = (_a = props.carouselType) !== null && _a !== void 0 ? _a : "normal";
71
+ const variableName = props.variableName;
72
+ const variableValue = variableName ? (_b = ctx.variables[variableName]) === null || _b === void 0 ? void 0 : _b.value : undefined;
73
+ const childrenCount = children.length;
74
+ const clampIndex = (n) => Math.max(0, Math.min(n, Math.max(0, childrenCount - 1)));
75
+ // Frozen on first mount — RNRC `defaultIndex` only applies at mount.
76
+ const initialIndexRef = (0, react_1.useRef)(null);
77
+ if (initialIndexRef.current === null) {
78
+ const parsed = variableValue !== undefined ? parseInt(variableValue, 10) : NaN;
79
+ const fromVar = Number.isFinite(parsed) ? parsed : null;
80
+ initialIndexRef.current = clampIndex((_c = fromVar !== null && fromVar !== void 0 ? fromVar : props.defaultIndex) !== null && _c !== void 0 ? _c : 0);
81
+ }
82
+ const lastSyncedIndexRef = (0, react_1.useRef)(initialIndexRef.current);
83
+ (0, react_1.useEffect)(() => {
84
+ var _a;
85
+ if (!variableName)
86
+ return;
87
+ const parsed = parseInt(variableValue !== null && variableValue !== void 0 ? variableValue : "", 10);
88
+ if (!Number.isFinite(parsed))
89
+ return;
90
+ const target = clampIndex(parsed);
91
+ if (target === lastSyncedIndexRef.current)
92
+ return;
93
+ lastSyncedIndexRef.current = target;
94
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollTo({ count: target - progress.value, animated: true });
95
+ }, [variableName, variableValue, childrenCount]);
69
96
  const onLayout = (e) => {
70
97
  const { width, height } = e.nativeEvent.layout;
71
98
  if (!size || size.width !== width || size.height !== height) {
@@ -73,7 +100,7 @@ function CarouselElementComponent({ element, ctx }) {
73
100
  }
74
101
  };
75
102
  // Stack uses 75% width (shows side items); left-align uses 82% (peek effect)
76
- const availableWidth = (_b = size === null || size === void 0 ? void 0 : size.width) !== null && _b !== void 0 ? _b : 0;
103
+ const availableWidth = (_d = size === null || size === void 0 ? void 0 : size.width) !== null && _d !== void 0 ? _d : 0;
77
104
  const itemWidth = carouselType === "stack"
78
105
  ? availableWidth * 0.75
79
106
  : carouselType === "left-align"
@@ -87,7 +114,7 @@ function CarouselElementComponent({ element, ctx }) {
87
114
  flexShrink: props.flexShrink,
88
115
  flexGrow: props.flexGrow,
89
116
  width: (0, shared_1.dim)(props.width),
90
- height: (_c = (0, shared_1.dim)(props.height)) !== null && _c !== void 0 ? _c : heightFallback,
117
+ height: (_e = (0, shared_1.dim)(props.height)) !== null && _e !== void 0 ? _e : heightFallback,
91
118
  minWidth: props.minWidth,
92
119
  maxWidth: props.maxWidth,
93
120
  minHeight: props.minHeight,
@@ -104,7 +131,7 @@ function CarouselElementComponent({ element, ctx }) {
104
131
  backgroundColor: props.backgroundGradient ? undefined : props.backgroundColor,
105
132
  opacity: props.opacity,
106
133
  // Left-align shows the next slide peeking — must not clip
107
- overflow: carouselType === "left-align" ? "visible" : ((_d = props.overflow) !== null && _d !== void 0 ? _d : "hidden"),
134
+ overflow: carouselType === "left-align" ? "visible" : ((_f = props.overflow) !== null && _f !== void 0 ? _f : "hidden"),
108
135
  };
109
136
  const modeProps = carouselType === "parallax"
110
137
  ? {
@@ -118,16 +145,23 @@ function CarouselElementComponent({ element, ctx }) {
118
145
  customConfig: () => ({ type: "positive", viewCount: 5 }),
119
146
  }
120
147
  : {};
121
- const dotW = (_e = props.dotWidth) !== null && _e !== void 0 ? _e : 20;
122
- const dotH = (_f = props.dotHeight) !== null && _f !== void 0 ? _f : 4;
123
- const dotsGap = (_g = props.dotsGap) !== null && _g !== void 0 ? _g : 8;
124
- const dotsMarginTop = (_h = props.dotsMarginTop) !== null && _h !== void 0 ? _h : 12;
125
- const dotBg = (_j = props.dotColor) !== null && _j !== void 0 ? _j : theme.colors.neutral.low;
126
- const activeDotBg = (_k = props.activeDotColor) !== null && _k !== void 0 ? _k : theme.colors.primary;
148
+ const dotW = (_g = props.dotWidth) !== null && _g !== void 0 ? _g : 20;
149
+ const dotH = (_h = props.dotHeight) !== null && _h !== void 0 ? _h : 4;
150
+ const dotsGap = (_j = props.dotsGap) !== null && _j !== void 0 ? _j : 8;
151
+ const dotsMarginTop = (_k = props.dotsMarginTop) !== null && _k !== void 0 ? _k : 12;
152
+ const dotBg = (_l = props.dotColor) !== null && _l !== void 0 ? _l : theme.colors.neutral.low;
153
+ const activeDotBg = (_m = props.activeDotColor) !== null && _m !== void 0 ? _m : theme.colors.primary;
127
154
  const ready = !!size && size.width > 0 && size.height > 0;
128
- return ((0, jsx_runtime_1.jsxs)(GradientBox_1.GradientBox, { gradient: props.backgroundGradient, style: containerStyle, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1 }, onLayout: onLayout, children: ready && ((0, jsx_runtime_1.jsx)(react_native_reanimated_carousel_1.default, Object.assign({ ref: ref, loop: props.loop, autoPlay: props.autoPlay, autoPlayInterval: props.autoPlayInterval, snapEnabled: true, pagingEnabled: true, data: children, width: itemWidth, height: size.height, style: { width: size.width, height: size.height }, renderItem: ({ item }) => ctx.renderChildren([item], "YStack"), onProgressChange: (_, absoluteProgress) => {
155
+ return ((0, jsx_runtime_1.jsxs)(GradientBox_1.GradientBox, { gradient: props.backgroundGradient, style: containerStyle, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { style: { flex: 1 }, onLayout: onLayout, children: ready && ((0, jsx_runtime_1.jsx)(react_native_reanimated_carousel_1.default, Object.assign({ ref: ref, loop: props.loop, autoPlay: props.autoPlay, autoPlayInterval: props.autoPlayInterval, defaultIndex: (_o = initialIndexRef.current) !== null && _o !== void 0 ? _o : 0, snapEnabled: true, pagingEnabled: true, data: children, width: itemWidth, height: size.height, style: { width: size.width, height: size.height }, renderItem: ({ item }) => ctx.renderChildren([item], "YStack"), onProgressChange: (_, absoluteProgress) => {
129
156
  progress.value = absoluteProgress;
130
- } }, modeProps))) }), ((_l = props.showDots) !== null && _l !== void 0 ? _l : true) && ((0, jsx_runtime_1.jsx)(react_native_reanimated_carousel_1.Pagination.Basic, { progress: progress, data: children, dotStyle: {
157
+ }, onSnapToItem: (index) => {
158
+ if (!variableName)
159
+ return;
160
+ if (index === lastSyncedIndexRef.current)
161
+ return;
162
+ lastSyncedIndexRef.current = index;
163
+ ctx.setVariable(variableName, { value: String(index) });
164
+ } }, modeProps))) }), ((_p = props.showDots) !== null && _p !== void 0 ? _p : true) && ((0, jsx_runtime_1.jsx)(react_native_reanimated_carousel_1.Pagination.Basic, { progress: progress, data: children, dotStyle: {
131
165
  width: dotW,
132
166
  height: dotH,
133
167
  borderRadius: dotH / 2,
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/CarouselElement.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CarouselElement.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/CarouselElement.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ComposableVariableEntry, ComposableVariableKind } from "@rocapine/react-native-onboarding";
2
+ /**
3
+ * Evaluate a `setVariable` expression-mode value template.
4
+ *
5
+ * Accepts `{{var}}` references, numeric literals (int / float), `+ - * /` and
6
+ * parentheses. Variable values are coerced according to their `kind` tag
7
+ * (string / int / float), or inferred from their string content when no tag
8
+ * is present. `+` on any non-numeric operand becomes string concat.
9
+ *
10
+ * On any parse or evaluation failure, falls back to plain interpolation
11
+ * (existing `interpolate()` semantics, returns a string).
12
+ */
13
+ export declare function evaluateSetVariableExpression(template: string, vars: Record<string, ComposableVariableEntry>): {
14
+ value: string;
15
+ kind: ComposableVariableKind;
16
+ };
17
+ //# sourceMappingURL=expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AA4KzG;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAC5C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAYjD"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateSetVariableExpression = evaluateSetVariableExpression;
4
+ const shared_1 = require("./shared");
5
+ const isDigit = (c) => c >= "0" && c <= "9";
6
+ const isSpace = (c) => c === " " || c === "\t" || c === "\n" || c === "\r";
7
+ function tokenize(input) {
8
+ var _a;
9
+ const tokens = [];
10
+ let i = 0;
11
+ while (i < input.length) {
12
+ const c = input[i];
13
+ if (isSpace(c)) {
14
+ i++;
15
+ continue;
16
+ }
17
+ if (c === "{" && input[i + 1] === "{") {
18
+ const end = input.indexOf("}}", i + 2);
19
+ if (end === -1)
20
+ return null;
21
+ const name = input.slice(i + 2, end).trim();
22
+ if (!name)
23
+ return null;
24
+ tokens.push({ kind: "var", name });
25
+ i = end + 2;
26
+ continue;
27
+ }
28
+ if (c === "(") {
29
+ tokens.push({ kind: "lparen" });
30
+ i++;
31
+ continue;
32
+ }
33
+ if (c === ")") {
34
+ tokens.push({ kind: "rparen" });
35
+ i++;
36
+ continue;
37
+ }
38
+ if (c === "+" || c === "-" || c === "*" || c === "/") {
39
+ tokens.push({ kind: "op", op: c });
40
+ i++;
41
+ continue;
42
+ }
43
+ if (isDigit(c) || (c === "." && isDigit((_a = input[i + 1]) !== null && _a !== void 0 ? _a : ""))) {
44
+ let j = i;
45
+ let dot = false;
46
+ while (j < input.length && (isDigit(input[j]) || input[j] === ".")) {
47
+ if (input[j] === ".") {
48
+ if (dot)
49
+ return null;
50
+ dot = true;
51
+ }
52
+ j++;
53
+ }
54
+ const num = parseFloat(input.slice(i, j));
55
+ if (!Number.isFinite(num))
56
+ return null;
57
+ tokens.push({ kind: "num", value: num, isInt: !dot });
58
+ i = j;
59
+ continue;
60
+ }
61
+ return null;
62
+ }
63
+ tokens.push({ kind: "eof" });
64
+ return tokens;
65
+ }
66
+ function resolveVar(name, vars) {
67
+ const entry = vars[name];
68
+ // Missing variable in arithmetic context defaults to numeric 0 so increment
69
+ // / decrement patterns work on first click before the variable is seeded.
70
+ if (!entry)
71
+ return { kind: "number", n: 0, isInt: true };
72
+ const raw = entry.value;
73
+ const k = entry.kind;
74
+ if (k === "string")
75
+ return { kind: "string", s: raw };
76
+ if (k === "int") {
77
+ const n = parseInt(raw, 10);
78
+ return Number.isFinite(n) ? { kind: "number", n, isInt: true } : { kind: "string", s: raw };
79
+ }
80
+ if (k === "float") {
81
+ const n = parseFloat(raw);
82
+ return Number.isFinite(n) ? { kind: "number", n, isInt: false } : { kind: "string", s: raw };
83
+ }
84
+ // No kind tag — infer from string content.
85
+ const trimmed = raw.trim();
86
+ if (trimmed !== "" && /^-?\d+(\.\d+)?$/.test(trimmed)) {
87
+ const n = parseFloat(trimmed);
88
+ if (Number.isFinite(n))
89
+ return { kind: "number", n, isInt: Number.isInteger(n) && !trimmed.includes(".") };
90
+ }
91
+ return { kind: "string", s: raw };
92
+ }
93
+ function valueToString(v) {
94
+ if (v.kind === "string")
95
+ return v.s;
96
+ if (v.isInt)
97
+ return Math.trunc(v.n).toString();
98
+ return v.n.toString();
99
+ }
100
+ function parse(tokens, vars) {
101
+ let pos = 0;
102
+ const peek = () => tokens[pos];
103
+ const advance = () => tokens[pos++];
104
+ const factor = () => {
105
+ const t = peek();
106
+ if (t.kind === "lparen") {
107
+ advance();
108
+ const v = expr();
109
+ if (!v)
110
+ return null;
111
+ if (peek().kind !== "rparen")
112
+ return null;
113
+ advance();
114
+ return v;
115
+ }
116
+ if (t.kind === "op" && t.op === "-") {
117
+ advance();
118
+ const v = factor();
119
+ if (!v || v.kind !== "number")
120
+ return null;
121
+ return { kind: "number", n: -v.n, isInt: v.isInt };
122
+ }
123
+ if (t.kind === "num") {
124
+ advance();
125
+ return { kind: "number", n: t.value, isInt: t.isInt };
126
+ }
127
+ if (t.kind === "var") {
128
+ advance();
129
+ return resolveVar(t.name, vars);
130
+ }
131
+ return null;
132
+ };
133
+ const term = () => {
134
+ let left = factor();
135
+ if (!left)
136
+ return null;
137
+ while (peek().kind === "op" && (peek().op === "*" || peek().op === "/")) {
138
+ const op = advance().op;
139
+ const right = factor();
140
+ if (!right)
141
+ return null;
142
+ if (left.kind !== "number" || right.kind !== "number")
143
+ return null;
144
+ if (op === "/" && right.n === 0)
145
+ return null;
146
+ const result = op === "*" ? left.n * right.n : left.n / right.n;
147
+ if (!Number.isFinite(result))
148
+ return null;
149
+ const isInt = op === "*" ? left.isInt && right.isInt : Number.isInteger(result);
150
+ left = { kind: "number", n: result, isInt };
151
+ }
152
+ return left;
153
+ };
154
+ const expr = () => {
155
+ let left = term();
156
+ if (!left)
157
+ return null;
158
+ while (peek().kind === "op" && (peek().op === "+" || peek().op === "-")) {
159
+ const op = advance().op;
160
+ const right = term();
161
+ if (!right)
162
+ return null;
163
+ if (op === "+") {
164
+ if (left.kind === "number" && right.kind === "number") {
165
+ left = { kind: "number", n: left.n + right.n, isInt: left.isInt && right.isInt };
166
+ }
167
+ else {
168
+ left = { kind: "string", s: valueToString(left) + valueToString(right) };
169
+ }
170
+ }
171
+ else {
172
+ if (left.kind !== "number" || right.kind !== "number")
173
+ return null;
174
+ left = { kind: "number", n: left.n - right.n, isInt: left.isInt && right.isInt };
175
+ }
176
+ }
177
+ return left;
178
+ };
179
+ const result = expr();
180
+ if (!result)
181
+ return null;
182
+ if (peek().kind !== "eof")
183
+ return null;
184
+ return result;
185
+ }
186
+ /**
187
+ * Evaluate a `setVariable` expression-mode value template.
188
+ *
189
+ * Accepts `{{var}}` references, numeric literals (int / float), `+ - * /` and
190
+ * parentheses. Variable values are coerced according to their `kind` tag
191
+ * (string / int / float), or inferred from their string content when no tag
192
+ * is present. `+` on any non-numeric operand becomes string concat.
193
+ *
194
+ * On any parse or evaluation failure, falls back to plain interpolation
195
+ * (existing `interpolate()` semantics, returns a string).
196
+ */
197
+ function evaluateSetVariableExpression(template, vars) {
198
+ const tokens = tokenize(template);
199
+ if (tokens) {
200
+ const result = parse(tokens, vars);
201
+ if (result) {
202
+ if (result.kind === "number") {
203
+ return { value: valueToString(result), kind: result.isInt ? "int" : "float" };
204
+ }
205
+ return { value: result.s, kind: "string" };
206
+ }
207
+ }
208
+ return { value: (0, shared_1.interpolate)(template, vars), kind: "string" };
209
+ }
210
+ //# sourceMappingURL=expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../../src/UI/Pages/ComposableScreen/elements/expression.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocapine/react-native-onboarding-ui",
3
- "version": "1.20.0",
3
+ "version": "1.22.0",
4
4
  "description": "UI components and renderers for Rocapine Onboarding Studio - Built on top of the headless SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -6,6 +6,7 @@ import {
6
6
  evaluateCondition,
7
7
  type LeafCondition,
8
8
  type ConditionGroup,
9
+ type ComposableVariableKind,
9
10
  LeafConditionSchema,
10
11
  ConditionGroupSchema,
11
12
  } from "@rocapine/react-native-onboarding";
@@ -14,6 +15,7 @@ import { UIElement } from "../types";
14
15
  import { RenderContext, dim, resolveInheritedFontFamily } from "./shared";
15
16
  import { GradientBox } from "./GradientBox";
16
17
  import { ComposableVariableEntry } from "../../../Provider/OnboardingProgressProvider";
18
+ import { evaluateSetVariableExpression } from "./expression";
17
19
 
18
20
  export type CustomButtonAction = {
19
21
  type: "custom";
@@ -32,6 +34,20 @@ export type SetVariableButtonAction = {
32
34
  name: string;
33
35
  value: string;
34
36
  label?: string;
37
+ /**
38
+ * When `"expression"`, `value` is parsed as an arithmetic expression with
39
+ * `{{var}}` references, numeric literals, and `+ - * /` (parens supported).
40
+ * On parse failure, falls back to plain interpolation (string).
41
+ * Defaults to `"literal"` — `value` stored verbatim.
42
+ */
43
+ valueMode?: "literal" | "expression";
44
+ /**
45
+ * Tags the stored variable's underlying type. In `"literal"` mode this is
46
+ * used as-is. In `"expression"` mode the inferred result kind is used
47
+ * unless `kind` is explicitly set (ignored — expression mode derives kind
48
+ * from evaluation).
49
+ */
50
+ kind?: ComposableVariableKind;
35
51
  };
36
52
 
37
53
  export const SetVariableButtonActionSchema = z.object({
@@ -39,6 +55,8 @@ export const SetVariableButtonActionSchema = z.object({
39
55
  name: z.string().min(1, "name must not be empty"),
40
56
  value: z.string(),
41
57
  label: z.string().optional(),
58
+ valueMode: z.enum(["literal", "expression"]).optional(),
59
+ kind: z.enum(["int", "float", "string"]).optional(),
42
60
  });
43
61
 
44
62
  export type ButtonAction = "continue" | CustomButtonAction | SetVariableButtonAction;
@@ -119,7 +137,17 @@ export const ButtonElementComponent = ({ element, ctx }: Props): React.ReactElem
119
137
  return;
120
138
  }
121
139
  if (act.type === "setVariable") {
122
- setVariable(act.name, { value: act.value, label: act.label });
140
+ let value: string;
141
+ let kind: ComposableVariableKind | undefined;
142
+ if (act.valueMode === "expression") {
143
+ const computed = evaluateSetVariableExpression(act.value, variables);
144
+ value = computed.value;
145
+ kind = computed.kind;
146
+ } else {
147
+ value = act.value;
148
+ kind = act.kind;
149
+ }
150
+ setVariable(act.name, { value, label: act.label, kind });
123
151
  continue;
124
152
  }
125
153
  const handler = customActions[act.function];
@@ -1,4 +1,4 @@
1
- import React, { useRef, useState } from "react";
1
+ import React, { useEffect, useRef, useState } from "react";
2
2
  import { View, type LayoutChangeEvent } from "react-native";
3
3
  import { z } from "zod";
4
4
  import { useSharedValue } from "react-native-reanimated";
@@ -20,6 +20,8 @@ export type CarouselElementProps = BaseBoxProps & {
20
20
  dotHeight?: number;
21
21
  dotsGap?: number;
22
22
  dotsMarginTop?: number;
23
+ defaultIndex?: number | null;
24
+ variableName?: string;
23
25
  };
24
26
 
25
27
  export const CarouselElementPropsSchema = BaseBoxPropsSchema.extend({
@@ -34,6 +36,8 @@ export const CarouselElementPropsSchema = BaseBoxPropsSchema.extend({
34
36
  dotHeight: z.number().nonnegative().optional().default(4),
35
37
  dotsGap: z.number().nonnegative().optional().default(8),
36
38
  dotsMarginTop: z.number().optional().default(12),
39
+ defaultIndex: z.number().int().nonnegative().nullable().optional(),
40
+ variableName: z.string().min(1).optional(),
37
41
  });
38
42
 
39
43
  type CarouselUIElement = Extract<UIElement, { type: "Carousel" }>;
@@ -54,6 +58,30 @@ export function CarouselElementComponent({ element, ctx }: Props): React.ReactEl
54
58
 
55
59
  const carouselType = props.carouselType ?? "normal";
56
60
 
61
+ const variableName = props.variableName;
62
+ const variableValue = variableName ? ctx.variables[variableName]?.value : undefined;
63
+ const childrenCount = children.length;
64
+ const clampIndex = (n: number) => Math.max(0, Math.min(n, Math.max(0, childrenCount - 1)));
65
+
66
+ // Frozen on first mount — RNRC `defaultIndex` only applies at mount.
67
+ const initialIndexRef = useRef<number | null>(null);
68
+ if (initialIndexRef.current === null) {
69
+ const parsed = variableValue !== undefined ? parseInt(variableValue, 10) : NaN;
70
+ const fromVar = Number.isFinite(parsed) ? parsed : null;
71
+ initialIndexRef.current = clampIndex(fromVar ?? props.defaultIndex ?? 0);
72
+ }
73
+ const lastSyncedIndexRef = useRef<number>(initialIndexRef.current);
74
+
75
+ useEffect(() => {
76
+ if (!variableName) return;
77
+ const parsed = parseInt(variableValue ?? "", 10);
78
+ if (!Number.isFinite(parsed)) return;
79
+ const target = clampIndex(parsed);
80
+ if (target === lastSyncedIndexRef.current) return;
81
+ lastSyncedIndexRef.current = target;
82
+ ref.current?.scrollTo({ count: target - progress.value, animated: true });
83
+ }, [variableName, variableValue, childrenCount]);
84
+
57
85
  const onLayout = (e: LayoutChangeEvent) => {
58
86
  const { width, height } = e.nativeEvent.layout;
59
87
  if (!size || size.width !== width || size.height !== height) {
@@ -132,6 +160,7 @@ export function CarouselElementComponent({ element, ctx }: Props): React.ReactEl
132
160
  loop={props.loop}
133
161
  autoPlay={props.autoPlay}
134
162
  autoPlayInterval={props.autoPlayInterval}
163
+ defaultIndex={initialIndexRef.current ?? 0}
135
164
  snapEnabled={true}
136
165
  pagingEnabled={true}
137
166
  data={children}
@@ -142,6 +171,12 @@ export function CarouselElementComponent({ element, ctx }: Props): React.ReactEl
142
171
  onProgressChange={(_: number, absoluteProgress: number) => {
143
172
  progress.value = absoluteProgress;
144
173
  }}
174
+ onSnapToItem={(index: number) => {
175
+ if (!variableName) return;
176
+ if (index === lastSyncedIndexRef.current) return;
177
+ lastSyncedIndexRef.current = index;
178
+ ctx.setVariable(variableName, { value: String(index) });
179
+ }}
145
180
  {...(modeProps as any)}
146
181
  />
147
182
  )}
@@ -0,0 +1,199 @@
1
+ import type { ComposableVariableEntry, ComposableVariableKind } from "@rocapine/react-native-onboarding";
2
+ import { interpolate } from "./shared";
3
+
4
+ type Token =
5
+ | { kind: "num"; value: number; isInt: boolean }
6
+ | { kind: "var"; name: string }
7
+ | { kind: "op"; op: "+" | "-" | "*" | "/" }
8
+ | { kind: "lparen" }
9
+ | { kind: "rparen" }
10
+ | { kind: "eof" };
11
+
12
+ type Value =
13
+ | { kind: "number"; n: number; isInt: boolean }
14
+ | { kind: "string"; s: string };
15
+
16
+ const isDigit = (c: string) => c >= "0" && c <= "9";
17
+ const isSpace = (c: string) => c === " " || c === "\t" || c === "\n" || c === "\r";
18
+
19
+ function tokenize(input: string): Token[] | null {
20
+ const tokens: Token[] = [];
21
+ let i = 0;
22
+ while (i < input.length) {
23
+ const c = input[i];
24
+ if (isSpace(c)) {
25
+ i++;
26
+ continue;
27
+ }
28
+ if (c === "{" && input[i + 1] === "{") {
29
+ const end = input.indexOf("}}", i + 2);
30
+ if (end === -1) return null;
31
+ const name = input.slice(i + 2, end).trim();
32
+ if (!name) return null;
33
+ tokens.push({ kind: "var", name });
34
+ i = end + 2;
35
+ continue;
36
+ }
37
+ if (c === "(") { tokens.push({ kind: "lparen" }); i++; continue; }
38
+ if (c === ")") { tokens.push({ kind: "rparen" }); i++; continue; }
39
+ if (c === "+" || c === "-" || c === "*" || c === "/") {
40
+ tokens.push({ kind: "op", op: c });
41
+ i++;
42
+ continue;
43
+ }
44
+ if (isDigit(c) || (c === "." && isDigit(input[i + 1] ?? ""))) {
45
+ let j = i;
46
+ let dot = false;
47
+ while (j < input.length && (isDigit(input[j]) || input[j] === ".")) {
48
+ if (input[j] === ".") {
49
+ if (dot) return null;
50
+ dot = true;
51
+ }
52
+ j++;
53
+ }
54
+ const num = parseFloat(input.slice(i, j));
55
+ if (!Number.isFinite(num)) return null;
56
+ tokens.push({ kind: "num", value: num, isInt: !dot });
57
+ i = j;
58
+ continue;
59
+ }
60
+ return null;
61
+ }
62
+ tokens.push({ kind: "eof" });
63
+ return tokens;
64
+ }
65
+
66
+ function resolveVar(name: string, vars: Record<string, ComposableVariableEntry>): Value {
67
+ const entry = vars[name];
68
+ // Missing variable in arithmetic context defaults to numeric 0 so increment
69
+ // / decrement patterns work on first click before the variable is seeded.
70
+ if (!entry) return { kind: "number", n: 0, isInt: true };
71
+ const raw = entry.value;
72
+ const k = entry.kind;
73
+ if (k === "string") return { kind: "string", s: raw };
74
+ if (k === "int") {
75
+ const n = parseInt(raw, 10);
76
+ return Number.isFinite(n) ? { kind: "number", n, isInt: true } : { kind: "string", s: raw };
77
+ }
78
+ if (k === "float") {
79
+ const n = parseFloat(raw);
80
+ return Number.isFinite(n) ? { kind: "number", n, isInt: false } : { kind: "string", s: raw };
81
+ }
82
+ // No kind tag — infer from string content.
83
+ const trimmed = raw.trim();
84
+ if (trimmed !== "" && /^-?\d+(\.\d+)?$/.test(trimmed)) {
85
+ const n = parseFloat(trimmed);
86
+ if (Number.isFinite(n)) return { kind: "number", n, isInt: Number.isInteger(n) && !trimmed.includes(".") };
87
+ }
88
+ return { kind: "string", s: raw };
89
+ }
90
+
91
+ function valueToString(v: Value): string {
92
+ if (v.kind === "string") return v.s;
93
+ if (v.isInt) return Math.trunc(v.n).toString();
94
+ return v.n.toString();
95
+ }
96
+
97
+ function parse(tokens: Token[], vars: Record<string, ComposableVariableEntry>): Value | null {
98
+ let pos = 0;
99
+ const peek = () => tokens[pos];
100
+ const advance = () => tokens[pos++];
101
+
102
+ const factor = (): Value | null => {
103
+ const t = peek();
104
+ if (t.kind === "lparen") {
105
+ advance();
106
+ const v = expr();
107
+ if (!v) return null;
108
+ if (peek().kind !== "rparen") return null;
109
+ advance();
110
+ return v;
111
+ }
112
+ if (t.kind === "op" && t.op === "-") {
113
+ advance();
114
+ const v = factor();
115
+ if (!v || v.kind !== "number") return null;
116
+ return { kind: "number", n: -v.n, isInt: v.isInt };
117
+ }
118
+ if (t.kind === "num") {
119
+ advance();
120
+ return { kind: "number", n: t.value, isInt: t.isInt };
121
+ }
122
+ if (t.kind === "var") {
123
+ advance();
124
+ return resolveVar(t.name, vars);
125
+ }
126
+ return null;
127
+ };
128
+
129
+ const term = (): Value | null => {
130
+ let left = factor();
131
+ if (!left) return null;
132
+ while (peek().kind === "op" && ((peek() as any).op === "*" || (peek() as any).op === "/")) {
133
+ const op = (advance() as any).op as "*" | "/";
134
+ const right = factor();
135
+ if (!right) return null;
136
+ if (left.kind !== "number" || right.kind !== "number") return null;
137
+ if (op === "/" && right.n === 0) return null;
138
+ const result: number = op === "*" ? left.n * right.n : left.n / right.n;
139
+ if (!Number.isFinite(result)) return null;
140
+ const isInt: boolean = op === "*" ? left.isInt && right.isInt : Number.isInteger(result);
141
+ left = { kind: "number", n: result, isInt };
142
+ }
143
+ return left;
144
+ };
145
+
146
+ const expr = (): Value | null => {
147
+ let left = term();
148
+ if (!left) return null;
149
+ while (peek().kind === "op" && ((peek() as any).op === "+" || (peek() as any).op === "-")) {
150
+ const op = (advance() as any).op as "+" | "-";
151
+ const right = term();
152
+ if (!right) return null;
153
+ if (op === "+") {
154
+ if (left.kind === "number" && right.kind === "number") {
155
+ left = { kind: "number", n: left.n + right.n, isInt: left.isInt && right.isInt };
156
+ } else {
157
+ left = { kind: "string", s: valueToString(left) + valueToString(right) };
158
+ }
159
+ } else {
160
+ if (left.kind !== "number" || right.kind !== "number") return null;
161
+ left = { kind: "number", n: left.n - right.n, isInt: left.isInt && right.isInt };
162
+ }
163
+ }
164
+ return left;
165
+ };
166
+
167
+ const result = expr();
168
+ if (!result) return null;
169
+ if (peek().kind !== "eof") return null;
170
+ return result;
171
+ }
172
+
173
+ /**
174
+ * Evaluate a `setVariable` expression-mode value template.
175
+ *
176
+ * Accepts `{{var}}` references, numeric literals (int / float), `+ - * /` and
177
+ * parentheses. Variable values are coerced according to their `kind` tag
178
+ * (string / int / float), or inferred from their string content when no tag
179
+ * is present. `+` on any non-numeric operand becomes string concat.
180
+ *
181
+ * On any parse or evaluation failure, falls back to plain interpolation
182
+ * (existing `interpolate()` semantics, returns a string).
183
+ */
184
+ export function evaluateSetVariableExpression(
185
+ template: string,
186
+ vars: Record<string, ComposableVariableEntry>
187
+ ): { value: string; kind: ComposableVariableKind } {
188
+ const tokens = tokenize(template);
189
+ if (tokens) {
190
+ const result = parse(tokens, vars);
191
+ if (result) {
192
+ if (result.kind === "number") {
193
+ return { value: valueToString(result), kind: result.isInt ? "int" : "float" };
194
+ }
195
+ return { value: result.s, kind: "string" };
196
+ }
197
+ }
198
+ return { value: interpolate(template, vars), kind: "string" };
199
+ }