@cxpinsight/react-native 0.20.0 → 0.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.
- package/CHANGELOG.md +33 -0
- package/android/src/main/java/com/cxpinsight/reactnative/CXPVitalsModule.java +170 -0
- package/android/src/main/java/com/cxpinsight/reactnative/CXPinsightPackage.java +2 -1
- package/ios/CXPVitals.m +143 -0
- package/lib/CXPinsightProvider.d.ts.map +1 -1
- package/lib/CXPinsightProvider.js +3 -0
- package/lib/CXPinsightProvider.js.map +1 -1
- package/lib/core/vitals.d.ts +8 -2
- package/lib/core/vitals.d.ts.map +1 -1
- package/lib/core/vitals.js +119 -2
- package/lib/core/vitals.js.map +1 -1
- package/lib/survey/SurveyModal.d.ts +4 -1
- package/lib/survey/SurveyModal.d.ts.map +1 -1
- package/lib/survey/SurveyModal.js +22 -5
- package/lib/survey/SurveyModal.js.map +1 -1
- package/lib/survey/questions/MultipleChoiceQuestion.d.ts +11 -2
- package/lib/survey/questions/MultipleChoiceQuestion.d.ts.map +1 -1
- package/lib/survey/questions/MultipleChoiceQuestion.js +64 -5
- package/lib/survey/questions/MultipleChoiceQuestion.js.map +1 -1
- package/lib/survey/questions/RatingQuestion.d.ts +30 -2
- package/lib/survey/questions/RatingQuestion.d.ts.map +1 -1
- package/lib/survey/questions/RatingQuestion.js +126 -16
- package/lib/survey/questions/RatingQuestion.js.map +1 -1
- package/lib/survey/styleContract.d.ts +25 -0
- package/lib/survey/styleContract.d.ts.map +1 -1
- package/lib/survey/styleContract.js +37 -0
- package/lib/survey/styleContract.js.map +1 -1
- package/lib/types.d.ts +10 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
package/lib/core/vitals.js
CHANGED
|
@@ -46,7 +46,32 @@ const THRESHOLDS = {
|
|
|
46
46
|
SCREEN_LOAD: [2500, 4000], // web.dev LCP
|
|
47
47
|
INP: [200, 500], // web.dev INP
|
|
48
48
|
JS_STALL: [249, 500], // Apple: ≥ 250 ms is a (micro) hang, > 500 ms a hang
|
|
49
|
+
// Android vitals — pass/fail, so good and poor meet: excessive at ≥ 5 s / 2 s / 1.5 s.
|
|
50
|
+
APP_START_COLD: [4999, 4999],
|
|
51
|
+
APP_START_WARM: [1999, 1999],
|
|
52
|
+
APP_START_HOT: [1499, 1499],
|
|
53
|
+
// Share of frames × 100 (10000 = all of them). Android vitals: > 50 % slow, > 0.1 % frozen.
|
|
54
|
+
SLOW_FRAMES: [5000, 5000],
|
|
55
|
+
FROZEN_FRAMES: [10, 10],
|
|
49
56
|
};
|
|
57
|
+
// Platforms whose native vitals (app start, frames) have been measured against the platform's own
|
|
58
|
+
// numbers. iOS is off until ios/CXPVitals.m is checked against a real launch and a screen recording
|
|
59
|
+
// (it needs an Xcode 26 build); its JS vitals — screen load, INP, JS stall — are unaffected.
|
|
60
|
+
const NATIVE_VITALS_ON = ['android'];
|
|
61
|
+
function nativeVitals() {
|
|
62
|
+
try {
|
|
63
|
+
const m = react_native_1.TurboModuleRegistry?.get?.('CXPVitals')
|
|
64
|
+
?? react_native_1.NativeModules?.CXPVitals;
|
|
65
|
+
return m || null;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Frames in a visit below this are too few for a share to mean anything.
|
|
72
|
+
const MIN_FRAMES = 30;
|
|
73
|
+
// A launch longer than this is not a launch (a debugger pause, a JS reload in an old process).
|
|
74
|
+
const MAX_START_MS = 120000;
|
|
50
75
|
function rate(name, value) {
|
|
51
76
|
const [good, poor] = THRESHOLDS[name];
|
|
52
77
|
return value <= good ? 'good' : value <= poor ? 'needs_improvement' : 'poor';
|
|
@@ -80,6 +105,14 @@ let stallTimer = null;
|
|
|
80
105
|
let lastTick = 0;
|
|
81
106
|
let appStateSub = null;
|
|
82
107
|
let seq = 0;
|
|
108
|
+
let native = null;
|
|
109
|
+
let frameSource = '';
|
|
110
|
+
// Cold start: the launch's start (from native) and the first screen's first frame (from JS); reported
|
|
111
|
+
// once both are known, in whichever order they arrive.
|
|
112
|
+
let coldStartWall = 0;
|
|
113
|
+
let firstFrameWall = 0;
|
|
114
|
+
let coldReported = false;
|
|
115
|
+
let backgroundAtWall = 0;
|
|
83
116
|
const newId = () => 'sv_' + Date.now().toString(36) + '_' + (seq++).toString(36) + Math.random().toString(36).slice(2, 6);
|
|
84
117
|
// Reports made before startVitals (the opening screen's load) wait here for the SDK.
|
|
85
118
|
let held = [];
|
|
@@ -108,14 +141,27 @@ function endVisit() {
|
|
|
108
141
|
longest_stall_at_ms: Math.round(v.stallAt - v.startedAt),
|
|
109
142
|
visit_duration_ms: Math.round(now() - v.startedAt),
|
|
110
143
|
});
|
|
144
|
+
const f0 = v.frames0;
|
|
145
|
+
if (native && f0) {
|
|
146
|
+
native.getFrameStats().then((f) => {
|
|
147
|
+
const total = f.total - f0.total;
|
|
148
|
+
if (total < MIN_FRAMES)
|
|
149
|
+
return;
|
|
150
|
+
const attr = { frames: total, slow: f.slow - f0.slow, frozen: f.frozen - f0.frozen, frame_source: frameSource };
|
|
151
|
+
report('SLOW_FRAMES', ((f.slow - f0.slow) / total) * 10000, v, attr);
|
|
152
|
+
report('FROZEN_FRAMES', ((f.frozen - f0.frozen) / total) * 10000, v, attr);
|
|
153
|
+
}, () => { });
|
|
154
|
+
}
|
|
111
155
|
}
|
|
112
156
|
function beginVisit(screen, navigationType) {
|
|
113
157
|
visit = {
|
|
114
158
|
id: newId(), screen, navigationType, worstInp: 0, worstInpAttr: null,
|
|
115
|
-
maxStall: 0, stallAt: 0, startedAt: now(),
|
|
159
|
+
maxStall: 0, stallAt: 0, startedAt: now(), frames0: null,
|
|
116
160
|
};
|
|
117
161
|
lastTick = now();
|
|
118
|
-
|
|
162
|
+
const v = visit;
|
|
163
|
+
native?.getFrameStats().then((f) => { v.frames0 = f; }, () => { });
|
|
164
|
+
return v;
|
|
119
165
|
}
|
|
120
166
|
function tick() {
|
|
121
167
|
const t = now();
|
|
@@ -132,11 +178,50 @@ function onAppState(state) {
|
|
|
132
178
|
lastTick = now();
|
|
133
179
|
if (!visit && currentScreen)
|
|
134
180
|
beginVisit(currentScreen, 'resume');
|
|
181
|
+
if (backgroundAtWall && native)
|
|
182
|
+
reportReturn(backgroundAtWall);
|
|
183
|
+
backgroundAtWall = 0;
|
|
135
184
|
}
|
|
136
185
|
else if (state === 'background' || state === 'inactive') {
|
|
186
|
+
if (state === 'background')
|
|
187
|
+
backgroundAtWall = Date.now();
|
|
137
188
|
endVisit();
|
|
138
189
|
}
|
|
139
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* The app came back from the background: a WARM start when Android re-created its activity while
|
|
193
|
+
* the process lived on, a HOT start otherwise — from the native moment it started coming back to
|
|
194
|
+
* the first frame JS sees.
|
|
195
|
+
*/
|
|
196
|
+
function reportReturn(sinceWall) {
|
|
197
|
+
const v = visit;
|
|
198
|
+
afterNextFrame(() => {
|
|
199
|
+
const endWall = Date.now();
|
|
200
|
+
native?.getLaunchInfo().then((info) => {
|
|
201
|
+
if (!v)
|
|
202
|
+
return;
|
|
203
|
+
const warm = info.activityCreatedMs > sinceWall;
|
|
204
|
+
const start = warm ? info.activityCreatedMs : info.foregroundMs;
|
|
205
|
+
if (!(start >= sinceWall) || endWall - start <= 0 || endWall - start > MAX_START_MS)
|
|
206
|
+
return;
|
|
207
|
+
v.navigationType = warm ? 'warm' : 'hot';
|
|
208
|
+
report(warm ? 'APP_START_WARM' : 'APP_START_HOT', endWall - start, v, {
|
|
209
|
+
start_source: warm ? 'activity_created' : 'foreground', frame_source: info.frameSource,
|
|
210
|
+
});
|
|
211
|
+
}, () => { });
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
function maybeReportCold() {
|
|
215
|
+
if (coldReported || !coldStartWall || !firstFrameWall)
|
|
216
|
+
return;
|
|
217
|
+
coldReported = true;
|
|
218
|
+
const value = firstFrameWall - coldStartWall;
|
|
219
|
+
const v = visit;
|
|
220
|
+
if (!v || value <= 0 || value > MAX_START_MS)
|
|
221
|
+
return;
|
|
222
|
+
report('APP_START_COLD', value, { ...v, navigationType: 'cold' }, { start_source: coldStartSource });
|
|
223
|
+
}
|
|
224
|
+
let coldStartSource = '';
|
|
140
225
|
let currentScreen = null;
|
|
141
226
|
function startVitals(cb) {
|
|
142
227
|
emit = cb;
|
|
@@ -150,6 +235,29 @@ function startVitals(cb) {
|
|
|
150
235
|
return;
|
|
151
236
|
lastTick = now();
|
|
152
237
|
stallTimer = setInterval(tick, STALL_TICK_MS);
|
|
238
|
+
native = NATIVE_VITALS_ON.includes(react_native_1.Platform.OS) ? nativeVitals() : null;
|
|
239
|
+
if (native) {
|
|
240
|
+
try {
|
|
241
|
+
native.startFrameMonitor();
|
|
242
|
+
}
|
|
243
|
+
catch { /* frames unavailable */ }
|
|
244
|
+
if (visit && !visit.frames0) {
|
|
245
|
+
const v = visit;
|
|
246
|
+
native.getFrameStats().then((f) => { v.frames0 = f; }, () => { });
|
|
247
|
+
}
|
|
248
|
+
native.getLaunchInfo().then((info) => {
|
|
249
|
+
frameSource = info.frameSource;
|
|
250
|
+
if (!info.firstInProcess) {
|
|
251
|
+
coldReported = true;
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
// A prewarmed iOS process started before anyone opened the app; the launch is from when it
|
|
255
|
+
// finished launching (Apple's advice).
|
|
256
|
+
coldStartWall = info.prewarmed && info.finishedLaunchingMs ? info.finishedLaunchingMs : info.processStartMs;
|
|
257
|
+
coldStartSource = info.prewarmed ? 'finished_launching' : 'process_start';
|
|
258
|
+
maybeReportCold();
|
|
259
|
+
}, () => { });
|
|
260
|
+
}
|
|
153
261
|
try {
|
|
154
262
|
appStateSub = react_native_1.AppState.addEventListener('change', onAppState);
|
|
155
263
|
}
|
|
@@ -166,6 +274,7 @@ function stopVitals() {
|
|
|
166
274
|
currentScreen = null;
|
|
167
275
|
lastInput = null;
|
|
168
276
|
held = [];
|
|
277
|
+
native = null;
|
|
169
278
|
}
|
|
170
279
|
/**
|
|
171
280
|
* A screen became current: the previous visit ends, this one starts, and its load is timed.
|
|
@@ -185,6 +294,14 @@ function onScreen(screen) {
|
|
|
185
294
|
const byInput = lastInput && t - lastInput.at < NAV_INPUT_WINDOW_MS ? lastInput : null;
|
|
186
295
|
const start = byInput ? byInput.at : t;
|
|
187
296
|
afterNextFrame(() => {
|
|
297
|
+
if (!firstFrameWall) {
|
|
298
|
+
firstFrameWall = Date.now();
|
|
299
|
+
try {
|
|
300
|
+
native?.reportFullyDrawn?.();
|
|
301
|
+
}
|
|
302
|
+
catch { /* not on this platform */ }
|
|
303
|
+
maybeReportCold();
|
|
304
|
+
}
|
|
188
305
|
report('SCREEN_LOAD', now() - start, v, {
|
|
189
306
|
trigger: byInput ? byInput.kind : 'route_change',
|
|
190
307
|
target_selector: byInput?.target ?? '',
|
package/lib/core/vitals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitals.js","sourceRoot":"","sources":["../../src/core/vitals.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vitals.js","sourceRoot":"","sources":["../../src/core/vitals.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,11 @@ import type { SurveyDefinition } from '../types';
|
|
|
2
2
|
interface Props {
|
|
3
3
|
survey: SurveyDefinition;
|
|
4
4
|
visible: boolean;
|
|
5
|
-
onSubmit: (responses: Record<string, unknown>,
|
|
5
|
+
onSubmit: (responses: Record<string, unknown>,
|
|
6
|
+
/** `language`: the language the survey was answered in. */
|
|
7
|
+
meta?: {
|
|
6
8
|
via?: 'card' | 'button';
|
|
9
|
+
language?: string;
|
|
7
10
|
}) => void | Promise<boolean | void>;
|
|
8
11
|
/** @param reason 'swipe' | 'close' | 'auto' | 'defer' — the server tallies
|
|
9
12
|
* dismissalsBy.<reason>, and an auto-dismiss must not spend a cadence
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SurveyModal.d.ts","sourceRoot":"","sources":["../../src/survey/SurveyModal.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"SurveyModal.d.ts","sourceRoot":"","sources":["../../src/survey/SurveyModal.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;AAmCjE,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IAIjB,QAAQ,EAAE,CACR,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClC,2DAA2D;IAC3D,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAClD,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACpC;;qDAEiD;IACjD,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;mEAC+D;IAC/D,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CACxD;AAiCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAU7G;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CACvD,GAAG,MAAM,GAAG,IAAI,CAQhB;AAcD,gFAAgF;AAChF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GACpD;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAK1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IACnF,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;CACtD,CASA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE3E;AAED,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAY,EAAE,EAAE,KAAK,2CA2iHxF"}
|
|
@@ -49,7 +49,6 @@ const react_native_1 = require("react-native");
|
|
|
49
49
|
const types_1 = require("../types");
|
|
50
50
|
const storage = __importStar(require("../core/storage"));
|
|
51
51
|
const NPSQuestion_1 = require("./questions/NPSQuestion");
|
|
52
|
-
const CSATQuestion_1 = require("./questions/CSATQuestion");
|
|
53
52
|
const TextQuestion_1 = require("./questions/TextQuestion");
|
|
54
53
|
const MultipleChoiceQuestion_1 = require("./questions/MultipleChoiceQuestion");
|
|
55
54
|
const RankingQuestion_1 = require("./questions/RankingQuestion");
|
|
@@ -59,6 +58,7 @@ const ImagePickerQuestion_1 = require("./questions/ImagePickerQuestion");
|
|
|
59
58
|
const MatrixDropdownQuestion_1 = require("./questions/MatrixDropdownQuestion");
|
|
60
59
|
const MatrixDynamicQuestion_1 = require("./questions/MatrixDynamicQuestion");
|
|
61
60
|
const PanelDynamicQuestion_1 = require("./questions/PanelDynamicQuestion");
|
|
61
|
+
const RatingQuestion_1 = require("./questions/RatingQuestion");
|
|
62
62
|
const DateQuestion_1 = require("./questions/DateQuestion");
|
|
63
63
|
const survey_spec_1 = require("@cxpinsight/survey-spec");
|
|
64
64
|
const mobileRecorder_1 = require("../core/mobileRecorder");
|
|
@@ -609,7 +609,7 @@ function SurveyModal({ survey, visible, onSubmit, onDismiss, reply = null }) {
|
|
|
609
609
|
// server rejection (survey deactivated, cap hit) surfaces a retry
|
|
610
610
|
// message instead of a false thank-you.
|
|
611
611
|
const submitAndReset = async () => {
|
|
612
|
-
const ok = await onSubmit(buildSubmitPayload(), { via: viaRef.current });
|
|
612
|
+
const ok = await onSubmit(buildSubmitPayload(), { via: viaRef.current, language: currentLanguage || survey.defaultLanguage || undefined });
|
|
613
613
|
if (ok === false) {
|
|
614
614
|
setSubmitError('We couldn’t submit your response. Please try again.');
|
|
615
615
|
return; // keep the survey open for a retry
|
|
@@ -949,7 +949,18 @@ function SurveyModal({ survey, visible, onSubmit, onDismiss, reply = null }) {
|
|
|
949
949
|
return ((0, jsx_runtime_1.jsx)(NPSQuestion_1.NPSQuestion, { value: val ?? null, onChange: (v) => updateResponse(key, v), contract: contract }));
|
|
950
950
|
},
|
|
951
951
|
'rating': () => {
|
|
952
|
-
|
|
952
|
+
// ONE scale for every ratingType. This drew CSATQuestion — stars only,
|
|
953
|
+
// always from 1 — so a number, smiley or thumb scale, a 0-based range
|
|
954
|
+
// and the end captions all rendered as five stars on the phone. The
|
|
955
|
+
// keys and the aliases are the web SDK's (_cxpQ_rating): minValue /
|
|
956
|
+
// maxValue (v1.1, also what render.props min/max become above), then
|
|
957
|
+
// the SurveyJS-era rateMin / rateMax; rateLabels' ends win as captions.
|
|
958
|
+
const qx = question;
|
|
959
|
+
const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : (typeof v === 'string' && v.trim() !== '' && Number.isFinite(Number(v)) ? Number(v) : undefined));
|
|
960
|
+
const labels = Array.isArray(qx.rateLabels) ? qx.rateLabels : [];
|
|
961
|
+
return ((0, jsx_runtime_1.jsx)(RatingQuestion_1.RatingQuestion, { value: val ?? null, onChange: (v) => updateResponse(key, v), rateMin: num(qx.minValue) ?? num(qx.rateMin) ?? 1, rateMax: num(qx.maxValue) ?? num(qx.rateMax) ?? 5,
|
|
962
|
+
// Unset is a star — the web SDK's default, and what this always drew.
|
|
963
|
+
ratingType: typeof qx.ratingType === 'string' && qx.ratingType ? qx.ratingType : 'star', minLabel: labels.length ? labels[0] : (qx.minLabel || qx.minRateDescription), maxLabel: labels.length ? labels[labels.length - 1] : (qx.maxLabel || qx.maxRateDescription), contract: contract, explicit: explicitFields }));
|
|
953
964
|
},
|
|
954
965
|
'csat': () => RENDERERS['rating'](),
|
|
955
966
|
'ces': () => RENDERERS['rating'](),
|
|
@@ -968,12 +979,12 @@ function SurveyModal({ survey, visible, onSubmit, onDismiss, reply = null }) {
|
|
|
968
979
|
'email': () => RENDERERS['text'](),
|
|
969
980
|
'number': () => RENDERERS['text'](),
|
|
970
981
|
'radio': () => {
|
|
971
|
-
return ((0, jsx_runtime_1.jsx)(MultipleChoiceQuestion_1.MultipleChoiceQuestion, { choices: normalizeChoices(question), value: val ?? '', onChange: (v) => updateResponse(key, v), mode: "radiogroup", isRtl: isRtl, contract: contract }));
|
|
982
|
+
return ((0, jsx_runtime_1.jsx)(MultipleChoiceQuestion_1.MultipleChoiceQuestion, { choices: normalizeChoices(question), value: val ?? '', onChange: (v) => updateResponse(key, v), mode: "radiogroup", isRtl: isRtl, contract: contract, optionLayout: question.optionLayout, explicit: explicitFields }));
|
|
972
983
|
},
|
|
973
984
|
'radiogroup': () => RENDERERS['radio'](),
|
|
974
985
|
'dropdown': () => RENDERERS['radio'](),
|
|
975
986
|
'checkbox': () => {
|
|
976
|
-
return ((0, jsx_runtime_1.jsx)(MultipleChoiceQuestion_1.MultipleChoiceQuestion, { choices: normalizeChoices(question), value: val ?? [], onChange: (v) => updateResponse(key, v), mode: "checkbox", isRtl: isRtl, contract: contract }));
|
|
987
|
+
return ((0, jsx_runtime_1.jsx)(MultipleChoiceQuestion_1.MultipleChoiceQuestion, { choices: normalizeChoices(question), value: val ?? [], onChange: (v) => updateResponse(key, v), mode: "checkbox", isRtl: isRtl, contract: contract, optionLayout: question.optionLayout, explicit: explicitFields }));
|
|
977
988
|
},
|
|
978
989
|
'binary': () => {
|
|
979
990
|
return ((0, jsx_runtime_1.jsx)(MultipleChoiceQuestion_1.MultipleChoiceQuestion, { choices: [
|
|
@@ -1561,6 +1572,12 @@ function SurveyModal({ survey, visible, onSubmit, onDismiss, reply = null }) {
|
|
|
1561
1572
|
[resolvedTheme, primaryColor,
|
|
1562
1573
|
JSON.stringify(surveyPaletteOverride), JSON.stringify(initPaletteOverride),
|
|
1563
1574
|
JSON.stringify(survey.branding?.style)]);
|
|
1575
|
+
// The fields set BY NAME, same layers and order as the contract above
|
|
1576
|
+
// (palette < style slice < host init). Answer surfaces that had no box or
|
|
1577
|
+
// shape before — a bare star, a chip — read these, so a value the contract
|
|
1578
|
+
// only holds as a default cannot redraw them.
|
|
1579
|
+
const explicitFields = (0, react_2.useMemo)(() => (0, styleContract_1.explicitContractFields)(surveyPaletteOverride, stylePlatformSlice(survey.branding?.style), initPaletteOverride), [JSON.stringify(surveyPaletteOverride), JSON.stringify(initPaletteOverride),
|
|
1580
|
+
JSON.stringify(survey.branding?.style)]);
|
|
1564
1581
|
const styles = (0, react_2.useMemo)(() => makeStyles(contract), [contract]);
|
|
1565
1582
|
// A picture band outside the header keeps the CARD'S padding. padBand exists only when a density
|
|
1566
1583
|
// is set; without one the band had no horizontal padding at all and ran edge to edge, like
|