@surveystudio/node-registery 1.4.0 → 1.6.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/README.md +15 -3
- package/dist/builder.d.mts +431 -5
- package/dist/builder.mjs +421 -20
- package/dist/{coreTypes-YSpR0Oyh.d.mts → coreTypes-D5NniS2n.d.mts} +5 -0
- package/dist/logic.d.mts +31 -4
- package/dist/logic.mjs +549 -25
- package/dist/runner.d.mts +2 -2
- package/dist/{types-CgiAR_DF.d.mts → types-BMMQVXYP.d.mts} +1 -1
- package/dist/types-D3jarfsb.d.mts +265 -0
- package/dist/ui.d.mts +34959 -11
- package/dist/ui.mjs +458 -1
- package/package.json +1 -1
- package/dist/types-CR3fIHCT.d.mts +0 -151
package/dist/builder.mjs
CHANGED
|
@@ -12,6 +12,23 @@ var plainTextBuilder = {
|
|
|
12
12
|
label: "Info / Text"
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
// src/nodes/captcha/builder.ts
|
|
16
|
+
var captchaBuilder = { type: "captcha", label: "Captcha" };
|
|
17
|
+
|
|
18
|
+
// src/nodes/emojiRating/builder.ts
|
|
19
|
+
var emojiRatingBuilder = { type: "emojiRating", label: "Emoji Rating" };
|
|
20
|
+
|
|
21
|
+
// src/nodes/media/builder.ts
|
|
22
|
+
var imageBuilder = { type: "image", label: "Image" };
|
|
23
|
+
var videoBuilder = { type: "video", label: "Video" };
|
|
24
|
+
var audioBuilder = { type: "audio", label: "Audio" };
|
|
25
|
+
|
|
26
|
+
// src/nodes/flow/builder.ts
|
|
27
|
+
var startBuilder = { type: "start", label: "Start" };
|
|
28
|
+
var branchBuilder = { type: "branch", label: "Branch" };
|
|
29
|
+
var validationBuilder = { type: "validation", label: "Validation Gate" };
|
|
30
|
+
var endBuilder = { type: "end", label: "End Screen" };
|
|
31
|
+
|
|
15
32
|
// src/nodes/consent/builder.ts
|
|
16
33
|
var consentBuilder = { type: "consent", label: "Consent" };
|
|
17
34
|
|
|
@@ -25,6 +42,10 @@ var rankingBuilder = { type: "ranking", label: "Ranking" };
|
|
|
25
42
|
var ratingBuilder = { type: "rating", label: "Rating" };
|
|
26
43
|
var sliderBuilder = { type: "slider", label: "Slider / Scale" };
|
|
27
44
|
|
|
45
|
+
// src/nodes/structuredChoice/builder.ts
|
|
46
|
+
var matrixChoiceBuilder = { type: "matrixChoice", label: "Grid / Matrix" };
|
|
47
|
+
var cascadingChoiceBuilder = { type: "cascadingChoice", label: "Multi-Step Select" };
|
|
48
|
+
|
|
28
49
|
// src/nodes/textLike/builder.ts
|
|
29
50
|
var textInputBuilder = { type: "textInput", label: "Text Answer" };
|
|
30
51
|
var emailInputBuilder = { type: "emailInput", label: "Email" };
|
|
@@ -71,17 +92,306 @@ var plainTextManifest = {
|
|
|
71
92
|
]
|
|
72
93
|
};
|
|
73
94
|
|
|
74
|
-
// src/nodes/
|
|
95
|
+
// src/nodes/captcha/manifest.ts
|
|
75
96
|
var defaultCondition = {
|
|
76
97
|
id: "root",
|
|
77
98
|
type: "group",
|
|
78
99
|
logicType: "AND",
|
|
79
100
|
children: []
|
|
80
101
|
};
|
|
102
|
+
var captchaDefaultData = {
|
|
103
|
+
label: "Captcha",
|
|
104
|
+
description: "",
|
|
105
|
+
isPii: false,
|
|
106
|
+
condition: defaultCondition,
|
|
107
|
+
sitekey: ""
|
|
108
|
+
};
|
|
109
|
+
var captchaManifest = {
|
|
110
|
+
type: "captcha",
|
|
111
|
+
label: "Captcha",
|
|
112
|
+
description: "Verify the user is human using Turnstile",
|
|
113
|
+
category: "input",
|
|
114
|
+
dataType: "text",
|
|
115
|
+
defaultData: captchaDefaultData,
|
|
116
|
+
properties: [
|
|
117
|
+
{ name: "label", label: "Field Label", type: "text", placeholder: "e.g., Security check" },
|
|
118
|
+
{ name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
|
|
119
|
+
{ name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
|
|
120
|
+
{ name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition, helperText: "If no rules are added, this question will always be shown." },
|
|
121
|
+
{ name: "sitekey", label: "Turnstile Site Key", type: "text", placeholder: "1x00000000000000000000AA", helperText: "Your Cloudflare Turnstile Site Key" }
|
|
122
|
+
]
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/nodes/emojiRating/manifest.ts
|
|
126
|
+
var defaultCondition2 = {
|
|
127
|
+
id: "root",
|
|
128
|
+
type: "group",
|
|
129
|
+
logicType: "AND",
|
|
130
|
+
children: []
|
|
131
|
+
};
|
|
132
|
+
var emojiRatingDefaultData = {
|
|
133
|
+
label: "Emoji Rating",
|
|
134
|
+
description: "",
|
|
135
|
+
isPii: false,
|
|
136
|
+
condition: defaultCondition2,
|
|
137
|
+
options: [
|
|
138
|
+
{ label: "Angry", value: "\u{1F620}" },
|
|
139
|
+
{ label: "Sad", value: "\u{1F641}" },
|
|
140
|
+
{ label: "Neutral", value: "\u{1F610}" },
|
|
141
|
+
{ label: "Happy", value: "\u{1F642}" },
|
|
142
|
+
{ label: "Love", value: "\u{1F60D}" }
|
|
143
|
+
]
|
|
144
|
+
};
|
|
145
|
+
var emojiRatingManifest = {
|
|
146
|
+
type: "emojiRating",
|
|
147
|
+
label: "Emoji Rating",
|
|
148
|
+
description: "Rate using emojis",
|
|
149
|
+
category: "choice",
|
|
150
|
+
dataType: "option",
|
|
151
|
+
defaultData: emojiRatingDefaultData,
|
|
152
|
+
properties: [
|
|
153
|
+
{ name: "label", label: "Field Label", type: "text", placeholder: "e.g., How was your experience?" },
|
|
154
|
+
{ name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
|
|
155
|
+
{ name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
|
|
156
|
+
{ name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition2, helperText: "If no rules are added, this question will always be shown." },
|
|
157
|
+
{ name: "options", label: "Emojis", type: "emojiOptions", defaultValue: [
|
|
158
|
+
{ label: "Angry", value: "\u{1F620}" },
|
|
159
|
+
{ label: "Sad", value: "\u{1F641}" },
|
|
160
|
+
{ label: "Neutral", value: "\u{1F610}" },
|
|
161
|
+
{ label: "Happy", value: "\u{1F642}" },
|
|
162
|
+
{ label: "Love", value: "\u{1F60D}" }
|
|
163
|
+
] }
|
|
164
|
+
]
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// src/nodes/media/manifest.ts
|
|
168
|
+
var defaultCondition3 = {
|
|
169
|
+
id: "root",
|
|
170
|
+
type: "group",
|
|
171
|
+
logicType: "AND",
|
|
172
|
+
children: []
|
|
173
|
+
};
|
|
174
|
+
var interactionOptions = [
|
|
175
|
+
{ label: "None (Display Only)", value: "none" },
|
|
176
|
+
{ label: "Text Question", value: "text" },
|
|
177
|
+
{ label: "Slider Rating", value: "slider" },
|
|
178
|
+
{ label: "Multiple Choice", value: "choice" }
|
|
179
|
+
];
|
|
180
|
+
var mediaCommonData = {
|
|
181
|
+
label: "",
|
|
182
|
+
description: "",
|
|
183
|
+
isPii: false,
|
|
184
|
+
condition: defaultCondition3,
|
|
185
|
+
interactionType: "none",
|
|
186
|
+
questionLabel: "",
|
|
187
|
+
sliderConfig: "0-10",
|
|
188
|
+
choices: []
|
|
189
|
+
};
|
|
190
|
+
var mediaInteractionProperties = [
|
|
191
|
+
{
|
|
192
|
+
name: "interactionType",
|
|
193
|
+
label: "Enable Interaction",
|
|
194
|
+
type: "select",
|
|
195
|
+
defaultValue: "none",
|
|
196
|
+
options: interactionOptions,
|
|
197
|
+
helperText: "Add a question below this media"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: "questionLabel",
|
|
201
|
+
label: "Question / Text",
|
|
202
|
+
type: "text",
|
|
203
|
+
placeholder: "Type your text here...",
|
|
204
|
+
visible: (data) => data.interactionType === "text"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: "sliderConfig",
|
|
208
|
+
label: "Slider Config (Min-Max)",
|
|
209
|
+
type: "text",
|
|
210
|
+
placeholder: "0-10",
|
|
211
|
+
visible: (data) => data.interactionType === "slider"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: "choices",
|
|
215
|
+
label: "Choices",
|
|
216
|
+
type: "options",
|
|
217
|
+
defaultValue: [],
|
|
218
|
+
visible: (data) => data.interactionType === "choice"
|
|
219
|
+
}
|
|
220
|
+
];
|
|
221
|
+
var imageDefaultData = {
|
|
222
|
+
...mediaCommonData,
|
|
223
|
+
label: "Image",
|
|
224
|
+
urls: [],
|
|
225
|
+
alt: ""
|
|
226
|
+
};
|
|
227
|
+
var videoDefaultData = {
|
|
228
|
+
...mediaCommonData,
|
|
229
|
+
label: "Video",
|
|
230
|
+
url: "",
|
|
231
|
+
autoplay: false
|
|
232
|
+
};
|
|
233
|
+
var audioDefaultData = {
|
|
234
|
+
...mediaCommonData,
|
|
235
|
+
label: "Audio",
|
|
236
|
+
url: "",
|
|
237
|
+
autoplay: false
|
|
238
|
+
};
|
|
239
|
+
var imageManifest = {
|
|
240
|
+
type: "image",
|
|
241
|
+
label: "Image",
|
|
242
|
+
description: "Display an image",
|
|
243
|
+
category: "media",
|
|
244
|
+
dataType: "object",
|
|
245
|
+
defaultData: imageDefaultData,
|
|
246
|
+
properties: [
|
|
247
|
+
{ name: "label", label: "Field Label", type: "text", placeholder: "e.g., Product image" },
|
|
248
|
+
{ name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
|
|
249
|
+
{ name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
|
|
250
|
+
{ name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition3, helperText: "If no rules are added, this question will always be shown." },
|
|
251
|
+
{ name: "urls", label: "Images", type: "files", defaultValue: [] },
|
|
252
|
+
{ name: "alt", label: "Alt Text", type: "text" },
|
|
253
|
+
...mediaInteractionProperties
|
|
254
|
+
]
|
|
255
|
+
};
|
|
256
|
+
var videoManifest = {
|
|
257
|
+
type: "video",
|
|
258
|
+
label: "Video",
|
|
259
|
+
description: "Embed a video",
|
|
260
|
+
category: "media",
|
|
261
|
+
dataType: "object",
|
|
262
|
+
defaultData: videoDefaultData,
|
|
263
|
+
properties: [
|
|
264
|
+
{ name: "label", label: "Field Label", type: "text", placeholder: "e.g., Watch this clip" },
|
|
265
|
+
{ name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
|
|
266
|
+
{ name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
|
|
267
|
+
{ name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition3, helperText: "If no rules are added, this question will always be shown." },
|
|
268
|
+
{ name: "url", label: "Video URL", type: "file", placeholder: "Upload or paste URL..." },
|
|
269
|
+
{ name: "autoplay", label: "Autoplay", type: "switch", defaultValue: false },
|
|
270
|
+
...mediaInteractionProperties
|
|
271
|
+
]
|
|
272
|
+
};
|
|
273
|
+
var audioManifest = {
|
|
274
|
+
type: "audio",
|
|
275
|
+
label: "Audio",
|
|
276
|
+
description: "Play an audio clip",
|
|
277
|
+
category: "media",
|
|
278
|
+
dataType: "object",
|
|
279
|
+
defaultData: audioDefaultData,
|
|
280
|
+
properties: [
|
|
281
|
+
{ name: "label", label: "Field Label", type: "text", placeholder: "e.g., Listen to this clip" },
|
|
282
|
+
{ name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
|
|
283
|
+
{ name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
|
|
284
|
+
{ name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition3, helperText: "If no rules are added, this question will always be shown." },
|
|
285
|
+
{ name: "url", label: "Audio URL", type: "file", placeholder: "Upload or paste URL..." },
|
|
286
|
+
{ name: "autoplay", label: "Autoplay", type: "switch", defaultValue: false },
|
|
287
|
+
...mediaInteractionProperties
|
|
288
|
+
]
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// src/nodes/flow/manifest.ts
|
|
292
|
+
var defaultCondition4 = {
|
|
293
|
+
id: "root",
|
|
294
|
+
type: "group",
|
|
295
|
+
logicType: "AND",
|
|
296
|
+
children: []
|
|
297
|
+
};
|
|
298
|
+
var startDefaultData = {
|
|
299
|
+
welcomeMessage: ""
|
|
300
|
+
};
|
|
301
|
+
var branchDefaultData = {
|
|
302
|
+
condition: defaultCondition4
|
|
303
|
+
};
|
|
304
|
+
var validationDefaultData = {
|
|
305
|
+
label: "Validation Gate",
|
|
306
|
+
condition: defaultCondition4,
|
|
307
|
+
outcome: "security_terminate"
|
|
308
|
+
};
|
|
309
|
+
var endDefaultData = {
|
|
310
|
+
message: "",
|
|
311
|
+
redirectUrl: "",
|
|
312
|
+
outcome: "completed"
|
|
313
|
+
};
|
|
314
|
+
var startManifest = {
|
|
315
|
+
type: "start",
|
|
316
|
+
label: "Start",
|
|
317
|
+
description: "Entry point of the survey",
|
|
318
|
+
category: "flow",
|
|
319
|
+
dataType: "none",
|
|
320
|
+
defaultData: startDefaultData,
|
|
321
|
+
properties: [
|
|
322
|
+
{ name: "welcomeMessage", label: "Welcome Message", type: "textarea", placeholder: "e.g., Welcome to our survey! Click below to start." }
|
|
323
|
+
]
|
|
324
|
+
};
|
|
325
|
+
var branchManifest = {
|
|
326
|
+
type: "branch",
|
|
327
|
+
label: "Branch",
|
|
328
|
+
description: "Split flow based on conditions",
|
|
329
|
+
category: "logic",
|
|
330
|
+
dataType: "none",
|
|
331
|
+
defaultData: branchDefaultData,
|
|
332
|
+
properties: [
|
|
333
|
+
{ name: "condition", label: "Logic Rule", type: "condition", defaultValue: defaultCondition4 }
|
|
334
|
+
]
|
|
335
|
+
};
|
|
336
|
+
var validationManifest = {
|
|
337
|
+
type: "validation",
|
|
338
|
+
label: "Validation Gate",
|
|
339
|
+
description: "Run cross-field validation and split flow",
|
|
340
|
+
category: "logic",
|
|
341
|
+
dataType: "none",
|
|
342
|
+
defaultData: validationDefaultData,
|
|
343
|
+
properties: [
|
|
344
|
+
{ name: "label", label: "Gate Label", type: "text", placeholder: "e.g., Age vs DOB Check", defaultValue: "Validation Gate" },
|
|
345
|
+
{ name: "condition", label: "Validation Rules", type: "condition", defaultValue: defaultCondition4 },
|
|
346
|
+
{
|
|
347
|
+
name: "outcome",
|
|
348
|
+
label: "Fail Outcome",
|
|
349
|
+
type: "select",
|
|
350
|
+
defaultValue: "security_terminate",
|
|
351
|
+
options: [
|
|
352
|
+
{ label: "Security Terminate", value: "security_terminate" },
|
|
353
|
+
{ label: "Disqualified", value: "disqualified" },
|
|
354
|
+
{ label: "Dropped", value: "dropped" }
|
|
355
|
+
]
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
};
|
|
359
|
+
var endManifest = {
|
|
360
|
+
type: "end",
|
|
361
|
+
label: "End Screen",
|
|
362
|
+
description: "Terminate the survey flow",
|
|
363
|
+
category: "flow",
|
|
364
|
+
dataType: "none",
|
|
365
|
+
defaultData: endDefaultData,
|
|
366
|
+
properties: [
|
|
367
|
+
{ name: "message", label: "Thank You Message", type: "textarea", placeholder: "Thank you for completing the survey!" },
|
|
368
|
+
{ name: "redirectUrl", label: "Redirect URL", type: "text", placeholder: "https://..." },
|
|
369
|
+
{
|
|
370
|
+
name: "outcome",
|
|
371
|
+
label: "Session Outcome",
|
|
372
|
+
type: "select",
|
|
373
|
+
defaultValue: "completed",
|
|
374
|
+
options: [
|
|
375
|
+
{ label: "Completed", value: "completed" },
|
|
376
|
+
{ label: "Disqualified", value: "disqualified" },
|
|
377
|
+
{ label: "Quality Terminate", value: "quality_terminate" },
|
|
378
|
+
{ label: "Security Terminate", value: "security_terminate" }
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
]
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
// src/nodes/consent/manifest.ts
|
|
385
|
+
var defaultCondition5 = {
|
|
386
|
+
id: "root",
|
|
387
|
+
type: "group",
|
|
388
|
+
logicType: "AND",
|
|
389
|
+
children: []
|
|
390
|
+
};
|
|
81
391
|
var consentDefaultData = {
|
|
82
392
|
label: "Consent",
|
|
83
393
|
description: "I agree to the terms and conditions.",
|
|
84
|
-
condition:
|
|
394
|
+
condition: defaultCondition5,
|
|
85
395
|
checkboxLabel: "I agree",
|
|
86
396
|
disagreeLabel: "I do not agree to the terms"
|
|
87
397
|
};
|
|
@@ -101,13 +411,13 @@ var consentManifest = {
|
|
|
101
411
|
name: "condition",
|
|
102
412
|
label: "Logic Rule",
|
|
103
413
|
type: "condition",
|
|
104
|
-
defaultValue:
|
|
414
|
+
defaultValue: defaultCondition5
|
|
105
415
|
}
|
|
106
416
|
]
|
|
107
417
|
};
|
|
108
418
|
|
|
109
419
|
// src/nodes/choice/manifest.ts
|
|
110
|
-
var
|
|
420
|
+
var defaultCondition6 = {
|
|
111
421
|
id: "root",
|
|
112
422
|
type: "group",
|
|
113
423
|
logicType: "AND",
|
|
@@ -116,7 +426,7 @@ var defaultCondition2 = {
|
|
|
116
426
|
var baseChoiceData = {
|
|
117
427
|
label: "",
|
|
118
428
|
description: "",
|
|
119
|
-
condition:
|
|
429
|
+
condition: defaultCondition6,
|
|
120
430
|
options: [],
|
|
121
431
|
randomizeOptions: false
|
|
122
432
|
};
|
|
@@ -127,7 +437,7 @@ var commonProperties = [
|
|
|
127
437
|
name: "condition",
|
|
128
438
|
label: "Logic Rule",
|
|
129
439
|
type: "condition",
|
|
130
|
-
defaultValue:
|
|
440
|
+
defaultValue: defaultCondition6
|
|
131
441
|
},
|
|
132
442
|
{ name: "options", label: "Options", type: "options", defaultValue: [] },
|
|
133
443
|
{ name: "bulkOptions", label: "Bulk Add (one per line)", type: "textarea", placeholder: "Option A\nOption B\nOption C...", helperText: "Paste a list to replace all options above" }
|
|
@@ -231,7 +541,7 @@ var rankingManifest = {
|
|
|
231
541
|
};
|
|
232
542
|
|
|
233
543
|
// src/nodes/scale/manifest.ts
|
|
234
|
-
var
|
|
544
|
+
var defaultCondition7 = {
|
|
235
545
|
id: "root",
|
|
236
546
|
type: "group",
|
|
237
547
|
logicType: "AND",
|
|
@@ -240,7 +550,7 @@ var defaultCondition3 = {
|
|
|
240
550
|
var baseScaleData = {
|
|
241
551
|
label: "",
|
|
242
552
|
description: "",
|
|
243
|
-
condition:
|
|
553
|
+
condition: defaultCondition7,
|
|
244
554
|
responseMode: "single",
|
|
245
555
|
items: []
|
|
246
556
|
};
|
|
@@ -262,7 +572,7 @@ var commonProperties2 = [
|
|
|
262
572
|
name: "condition",
|
|
263
573
|
label: "Logic Rule",
|
|
264
574
|
type: "condition",
|
|
265
|
-
defaultValue:
|
|
575
|
+
defaultValue: defaultCondition7
|
|
266
576
|
}
|
|
267
577
|
];
|
|
268
578
|
var ratingDefaultData = {
|
|
@@ -308,8 +618,66 @@ var sliderManifest = {
|
|
|
308
618
|
]
|
|
309
619
|
};
|
|
310
620
|
|
|
621
|
+
// src/nodes/structuredChoice/manifest.ts
|
|
622
|
+
var defaultCondition8 = {
|
|
623
|
+
id: "root",
|
|
624
|
+
type: "group",
|
|
625
|
+
logicType: "AND",
|
|
626
|
+
children: []
|
|
627
|
+
};
|
|
628
|
+
var commonProperties3 = [
|
|
629
|
+
{ name: "label", label: "Field Label", type: "text" },
|
|
630
|
+
{ name: "description", label: "Description", type: "textarea" },
|
|
631
|
+
{
|
|
632
|
+
name: "condition",
|
|
633
|
+
label: "Logic Rule",
|
|
634
|
+
type: "condition",
|
|
635
|
+
defaultValue: defaultCondition8
|
|
636
|
+
}
|
|
637
|
+
];
|
|
638
|
+
var matrixChoiceDefaultData = {
|
|
639
|
+
label: "Grid / Matrix",
|
|
640
|
+
description: "",
|
|
641
|
+
condition: defaultCondition8,
|
|
642
|
+
rows: [],
|
|
643
|
+
columns: [],
|
|
644
|
+
multiple: false
|
|
645
|
+
};
|
|
646
|
+
var cascadingChoiceDefaultData = {
|
|
647
|
+
label: "Multi-Step Select",
|
|
648
|
+
description: "",
|
|
649
|
+
condition: defaultCondition8,
|
|
650
|
+
steps: []
|
|
651
|
+
};
|
|
652
|
+
var matrixChoiceManifest = {
|
|
653
|
+
type: "matrixChoice",
|
|
654
|
+
label: "Grid / Matrix",
|
|
655
|
+
description: "Grid of rows and columns",
|
|
656
|
+
category: "choice",
|
|
657
|
+
dataType: "object",
|
|
658
|
+
defaultData: matrixChoiceDefaultData,
|
|
659
|
+
properties: [
|
|
660
|
+
...commonProperties3,
|
|
661
|
+
{ name: "rows", label: "Rows (Questions)", type: "options", defaultValue: [] },
|
|
662
|
+
{ name: "columns", label: "Columns (Options)", type: "options", defaultValue: [] },
|
|
663
|
+
{ name: "multiple", label: "Allow Multiple", type: "switch", defaultValue: false }
|
|
664
|
+
]
|
|
665
|
+
};
|
|
666
|
+
var cascadingChoiceManifest = {
|
|
667
|
+
type: "cascadingChoice",
|
|
668
|
+
label: "Multi-Step Select",
|
|
669
|
+
description: "Conditional drill-down options",
|
|
670
|
+
category: "choice",
|
|
671
|
+
dataType: "array",
|
|
672
|
+
defaultData: cascadingChoiceDefaultData,
|
|
673
|
+
properties: [
|
|
674
|
+
...commonProperties3,
|
|
675
|
+
{ name: "steps", label: "Steps", type: "stepBuilder", defaultValue: [] }
|
|
676
|
+
]
|
|
677
|
+
};
|
|
678
|
+
|
|
311
679
|
// src/nodes/textLike/manifest.ts
|
|
312
|
-
var
|
|
680
|
+
var defaultCondition9 = {
|
|
313
681
|
id: "root",
|
|
314
682
|
type: "group",
|
|
315
683
|
logicType: "AND",
|
|
@@ -318,20 +686,20 @@ var defaultCondition4 = {
|
|
|
318
686
|
var baseTextData = {
|
|
319
687
|
label: "",
|
|
320
688
|
description: "",
|
|
321
|
-
condition:
|
|
689
|
+
condition: defaultCondition9,
|
|
322
690
|
minChars: 0,
|
|
323
691
|
maxChars: 0,
|
|
324
692
|
minWords: 0,
|
|
325
693
|
maxWords: 0
|
|
326
694
|
};
|
|
327
|
-
var
|
|
695
|
+
var commonProperties4 = [
|
|
328
696
|
{ name: "label", label: "Field Label", type: "text" },
|
|
329
697
|
{ name: "description", label: "Description", type: "textarea" },
|
|
330
698
|
{
|
|
331
699
|
name: "condition",
|
|
332
700
|
label: "Logic Rule",
|
|
333
701
|
type: "condition",
|
|
334
|
-
defaultValue:
|
|
702
|
+
defaultValue: defaultCondition9
|
|
335
703
|
}
|
|
336
704
|
];
|
|
337
705
|
var textLimitProperties = [
|
|
@@ -370,7 +738,7 @@ var textInputManifest = {
|
|
|
370
738
|
dataType: "text",
|
|
371
739
|
defaultData: textInputDefaultData,
|
|
372
740
|
properties: [
|
|
373
|
-
...
|
|
741
|
+
...commonProperties4,
|
|
374
742
|
{ name: "placeholder", label: "Placeholder", type: "text", placeholder: "e.g., Type here...", defaultValue: "" },
|
|
375
743
|
{ name: "longAnswer", label: "Long Answer (Multi-line)", type: "switch", defaultValue: false },
|
|
376
744
|
...textLimitProperties
|
|
@@ -383,7 +751,7 @@ var emailInputManifest = {
|
|
|
383
751
|
category: "input",
|
|
384
752
|
dataType: "text",
|
|
385
753
|
defaultData: emailInputDefaultData,
|
|
386
|
-
properties:
|
|
754
|
+
properties: commonProperties4
|
|
387
755
|
};
|
|
388
756
|
var dateInputManifest = {
|
|
389
757
|
type: "dateInput",
|
|
@@ -392,7 +760,7 @@ var dateInputManifest = {
|
|
|
392
760
|
category: "input",
|
|
393
761
|
dataType: "text",
|
|
394
762
|
defaultData: dateInputDefaultData,
|
|
395
|
-
properties:
|
|
763
|
+
properties: commonProperties4
|
|
396
764
|
};
|
|
397
765
|
var numberInputManifest = {
|
|
398
766
|
type: "numberInput",
|
|
@@ -402,7 +770,7 @@ var numberInputManifest = {
|
|
|
402
770
|
dataType: "number",
|
|
403
771
|
defaultData: numberInputDefaultData,
|
|
404
772
|
properties: [
|
|
405
|
-
...
|
|
773
|
+
...commonProperties4,
|
|
406
774
|
{ name: "min", label: "Minimum Value", type: "number" },
|
|
407
775
|
{ name: "max", label: "Maximum Value", type: "number" }
|
|
408
776
|
]
|
|
@@ -415,7 +783,7 @@ var zipCodeInputManifest = {
|
|
|
415
783
|
dataType: "text",
|
|
416
784
|
defaultData: zipCodeInputDefaultData,
|
|
417
785
|
properties: [
|
|
418
|
-
...
|
|
786
|
+
...commonProperties4,
|
|
419
787
|
{ name: "allowedZips", label: "Allowed Zip Codes", type: "fileTextarea", placeholder: "10001, 10002, 90210... (Leave empty to allow all)", helperText: "Validation: Only users entering these zip codes can proceed. Others will be blocked." }
|
|
420
788
|
]
|
|
421
789
|
};
|
|
@@ -427,7 +795,7 @@ var multiInputManifest = {
|
|
|
427
795
|
dataType: "object",
|
|
428
796
|
defaultData: multiInputDefaultData,
|
|
429
797
|
properties: [
|
|
430
|
-
...
|
|
798
|
+
...commonProperties4,
|
|
431
799
|
{ name: "fields", label: "Input Fields", type: "options", defaultValue: [], helperText: "Value column represents input type (text, number, email)" },
|
|
432
800
|
...textLimitProperties
|
|
433
801
|
]
|
|
@@ -445,13 +813,32 @@ var builderRegistry = defineBuilderRegistry({
|
|
|
445
813
|
multipleChoice: multipleChoiceBuilder,
|
|
446
814
|
dropdown: dropdownBuilder,
|
|
447
815
|
ranking: rankingBuilder,
|
|
816
|
+
cascadingChoice: cascadingChoiceBuilder,
|
|
817
|
+
matrixChoice: matrixChoiceBuilder,
|
|
448
818
|
rating: ratingBuilder,
|
|
449
819
|
slider: sliderBuilder,
|
|
450
820
|
consent: consentBuilder,
|
|
451
|
-
|
|
821
|
+
captcha: captchaBuilder,
|
|
822
|
+
image: imageBuilder,
|
|
823
|
+
video: videoBuilder,
|
|
824
|
+
audio: audioBuilder,
|
|
825
|
+
plainText: plainTextBuilder,
|
|
826
|
+
emojiRating: emojiRatingBuilder,
|
|
827
|
+
start: startBuilder,
|
|
828
|
+
end: endBuilder,
|
|
829
|
+
branch: branchBuilder,
|
|
830
|
+
validation: validationBuilder
|
|
452
831
|
});
|
|
453
832
|
export {
|
|
833
|
+
audioBuilder,
|
|
834
|
+
audioManifest,
|
|
835
|
+
branchBuilder,
|
|
836
|
+
branchManifest,
|
|
454
837
|
builderRegistry,
|
|
838
|
+
captchaBuilder,
|
|
839
|
+
captchaManifest,
|
|
840
|
+
cascadingChoiceBuilder,
|
|
841
|
+
cascadingChoiceManifest,
|
|
455
842
|
consentBuilder,
|
|
456
843
|
consentManifest,
|
|
457
844
|
dateInputBuilder,
|
|
@@ -462,6 +849,14 @@ export {
|
|
|
462
849
|
dropdownManifest,
|
|
463
850
|
emailInputBuilder,
|
|
464
851
|
emailInputManifest,
|
|
852
|
+
emojiRatingBuilder,
|
|
853
|
+
emojiRatingManifest,
|
|
854
|
+
endBuilder,
|
|
855
|
+
endManifest,
|
|
856
|
+
imageBuilder,
|
|
857
|
+
imageManifest,
|
|
858
|
+
matrixChoiceBuilder,
|
|
859
|
+
matrixChoiceManifest,
|
|
465
860
|
multiInputBuilder,
|
|
466
861
|
multiInputManifest,
|
|
467
862
|
multipleChoiceBuilder,
|
|
@@ -478,8 +873,14 @@ export {
|
|
|
478
873
|
singleChoiceManifest,
|
|
479
874
|
sliderBuilder,
|
|
480
875
|
sliderManifest,
|
|
876
|
+
startBuilder,
|
|
877
|
+
startManifest,
|
|
481
878
|
textInputBuilder,
|
|
482
879
|
textInputManifest,
|
|
880
|
+
validationBuilder,
|
|
881
|
+
validationManifest,
|
|
882
|
+
videoBuilder,
|
|
883
|
+
videoManifest,
|
|
483
884
|
zipCodeInputBuilder,
|
|
484
885
|
zipCodeInputManifest
|
|
485
886
|
};
|
|
@@ -53,6 +53,9 @@ interface ExtractedValue {
|
|
|
53
53
|
readonly questionId?: string;
|
|
54
54
|
readonly columnKey?: string;
|
|
55
55
|
readonly columnLabel?: string;
|
|
56
|
+
readonly columnId?: string;
|
|
57
|
+
readonly columnTechnicalId?: string;
|
|
58
|
+
readonly columnText?: string;
|
|
56
59
|
readonly textValue?: string;
|
|
57
60
|
readonly numberValue?: number;
|
|
58
61
|
readonly booleanValue?: boolean;
|
|
@@ -60,6 +63,8 @@ interface ExtractedValue {
|
|
|
60
63
|
readonly optionText?: string;
|
|
61
64
|
readonly arrayValue?: readonly JsonValue[];
|
|
62
65
|
readonly objectValue?: Readonly<Record<string, JsonValue>>;
|
|
66
|
+
readonly cascadeLevel?: number;
|
|
67
|
+
readonly cascadeParentId?: string | null;
|
|
63
68
|
readonly metadata?: Readonly<Record<string, JsonValue>>;
|
|
64
69
|
}
|
|
65
70
|
interface ExtractionContext<TType extends SurveyNodeType = SurveyNodeType> extends NodeLogicContext<TType> {
|
package/dist/logic.d.mts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
import { P as PlainTextData,
|
|
2
|
-
import { b as NodeLogic } from './coreTypes-
|
|
3
|
-
export { C as CompleteLogicRegistry, D as DataType, E as ExtractedValue, c as ExtractionContext, L as LogicRegistry, d as NodeLogicContext, V as ValidationContext, e as ValidationResult, f as createInitialData, g as defineLogicRegistry } from './coreTypes-
|
|
1
|
+
import { P as PlainTextData, m as PlainTextValue, C as CaptchaData, n as CaptchaValue, E as EmojiRatingData, o as EmojiRatingValue, A as AudioData, p as MediaValue, I as ImageData, V as VideoData, a as BranchData, c as EndData, S as StartData, d as ValidationData, e as ConsentData, q as ConsentValue, g as RatingData, r as ScaleValue, h as SliderData, D as DropdownData, s as SingleChoiceValue, M as MultipleChoiceData, t as MultipleChoiceValue, R as RankingData, u as RankingValue, f as SingleChoiceData, i as CascadingChoiceData, v as CascadingChoiceValue, j as MatrixChoiceData, w as MatrixChoiceValue, x as DateInputData, y as TextValue, z as EmailInputData, l as MultiInputData, F as MultiInputValue, N as NumberInputData, T as TextInputData, Z as ZipCodeInputData, k as BaseTextData } from './types-D3jarfsb.mjs';
|
|
2
|
+
import { b as NodeLogic } from './coreTypes-D5NniS2n.mjs';
|
|
3
|
+
export { C as CompleteLogicRegistry, D as DataType, E as ExtractedValue, c as ExtractionContext, L as LogicRegistry, d as NodeLogicContext, V as ValidationContext, e as ValidationResult, f as createInitialData, g as defineLogicRegistry } from './coreTypes-D5NniS2n.mjs';
|
|
4
4
|
|
|
5
5
|
declare const plainTextLogic: NodeLogic<"plainText", PlainTextData, PlainTextValue>;
|
|
6
6
|
|
|
7
|
+
declare const captchaLogic: NodeLogic<"captcha", CaptchaData, CaptchaValue>;
|
|
8
|
+
|
|
9
|
+
declare const emojiRatingLogic: NodeLogic<"emojiRating", EmojiRatingData, EmojiRatingValue>;
|
|
10
|
+
|
|
11
|
+
declare const imageLogic: NodeLogic<"image", ImageData, MediaValue>;
|
|
12
|
+
declare const videoLogic: NodeLogic<"video", VideoData, MediaValue>;
|
|
13
|
+
declare const audioLogic: NodeLogic<"audio", AudioData, MediaValue>;
|
|
14
|
+
|
|
15
|
+
declare const startLogic: NodeLogic<"start", StartData, undefined>;
|
|
16
|
+
declare const branchLogic: NodeLogic<"branch", BranchData, undefined>;
|
|
17
|
+
declare const validationLogic: NodeLogic<"validation", ValidationData, undefined>;
|
|
18
|
+
declare const endLogic: NodeLogic<"end", EndData, undefined>;
|
|
19
|
+
|
|
7
20
|
declare const consentLogic: NodeLogic<"consent", ConsentData, ConsentValue>;
|
|
8
21
|
|
|
9
22
|
declare const ratingLogic: NodeLogic<"rating", RatingData, ScaleValue>;
|
|
@@ -14,6 +27,9 @@ declare const dropdownLogic: NodeLogic<"dropdown", DropdownData, SingleChoiceVal
|
|
|
14
27
|
declare const multipleChoiceLogic: NodeLogic<"multipleChoice", MultipleChoiceData, MultipleChoiceValue>;
|
|
15
28
|
declare const rankingLogic: NodeLogic<"ranking", RankingData, RankingValue>;
|
|
16
29
|
|
|
30
|
+
declare const matrixChoiceLogic: NodeLogic<"matrixChoice", MatrixChoiceData, MatrixChoiceValue>;
|
|
31
|
+
declare const cascadingChoiceLogic: NodeLogic<"cascadingChoice", CascadingChoiceData, CascadingChoiceValue>;
|
|
32
|
+
|
|
17
33
|
declare const textInputLogic: NodeLogic<"textInput", TextInputData, TextValue>;
|
|
18
34
|
declare const emailInputLogic: NodeLogic<"emailInput", EmailInputData, TextValue>;
|
|
19
35
|
declare const dateInputLogic: NodeLogic<"dateInput", DateInputData, TextValue>;
|
|
@@ -32,10 +48,21 @@ declare const logicRegistry: {
|
|
|
32
48
|
readonly multipleChoice: NodeLogic<"multipleChoice", MultipleChoiceData, MultipleChoiceValue>;
|
|
33
49
|
readonly dropdown: NodeLogic<"dropdown", DropdownData, string>;
|
|
34
50
|
readonly ranking: NodeLogic<"ranking", RankingData, RankingValue>;
|
|
51
|
+
readonly cascadingChoice: NodeLogic<"cascadingChoice", CascadingChoiceData, CascadingChoiceValue>;
|
|
52
|
+
readonly matrixChoice: NodeLogic<"matrixChoice", MatrixChoiceData, MatrixChoiceValue>;
|
|
35
53
|
readonly rating: NodeLogic<"rating", RatingData, ScaleValue>;
|
|
36
54
|
readonly slider: NodeLogic<"slider", SliderData, ScaleValue>;
|
|
37
55
|
readonly consent: NodeLogic<"consent", ConsentData, boolean>;
|
|
56
|
+
readonly captcha: NodeLogic<"captcha", CaptchaData, string>;
|
|
57
|
+
readonly image: NodeLogic<"image", ImageData, MediaValue>;
|
|
58
|
+
readonly video: NodeLogic<"video", VideoData, MediaValue>;
|
|
59
|
+
readonly audio: NodeLogic<"audio", AudioData, MediaValue>;
|
|
38
60
|
readonly plainText: NodeLogic<"plainText", PlainTextData, PlainTextValue>;
|
|
61
|
+
readonly emojiRating: NodeLogic<"emojiRating", EmojiRatingData, string>;
|
|
62
|
+
readonly start: NodeLogic<"start", StartData, undefined>;
|
|
63
|
+
readonly end: NodeLogic<"end", EndData, undefined>;
|
|
64
|
+
readonly branch: NodeLogic<"branch", BranchData, undefined>;
|
|
65
|
+
readonly validation: NodeLogic<"validation", ValidationData, undefined>;
|
|
39
66
|
};
|
|
40
67
|
|
|
41
|
-
export { NodeLogic, consentLogic, dateInputLogic, dropdownLogic, emailInputLogic, logicRegistry, multiInputLogic, multipleChoiceLogic, numberInputLogic, plainTextLogic, rankingLogic, ratingLogic, singleChoiceLogic, sliderLogic, textInputLogic, zipCodeInputLogic };
|
|
68
|
+
export { NodeLogic, audioLogic, branchLogic, captchaLogic, cascadingChoiceLogic, consentLogic, dateInputLogic, dropdownLogic, emailInputLogic, emojiRatingLogic, endLogic, imageLogic, logicRegistry, matrixChoiceLogic, multiInputLogic, multipleChoiceLogic, numberInputLogic, plainTextLogic, rankingLogic, ratingLogic, singleChoiceLogic, sliderLogic, startLogic, textInputLogic, validationLogic, videoLogic, zipCodeInputLogic };
|