@surveystudio/node-registery 1.3.0 → 1.5.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 +14 -1
- package/dist/builder.d.mts +923 -13
- package/dist/builder.mjs +683 -11
- package/dist/{coreTypes-CyFAym5A.d.mts → coreTypes-D5NniS2n.d.mts} +6 -1
- package/dist/logic.d.mts +29 -87
- package/dist/logic.mjs +577 -40
- package/dist/runner.d.mts +2 -2
- package/dist/{types-4zXsOMLb.d.mts → types-BMMQVXYP.d.mts} +1 -1
- package/dist/types-D3jarfsb.d.mts +265 -0
- package/package.json +1 -1
- package/dist/types-BMnck1ag.d.mts +0 -59
package/dist/builder.mjs
CHANGED
|
@@ -12,6 +12,40 @@ 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
|
+
|
|
32
|
+
// src/nodes/consent/builder.ts
|
|
33
|
+
var consentBuilder = { type: "consent", label: "Consent" };
|
|
34
|
+
|
|
35
|
+
// src/nodes/choice/builder.ts
|
|
36
|
+
var singleChoiceBuilder = { type: "singleChoice", label: "Single Choice" };
|
|
37
|
+
var multipleChoiceBuilder = { type: "multipleChoice", label: "Multiple Choice" };
|
|
38
|
+
var dropdownBuilder = { type: "dropdown", label: "Dropdown Select" };
|
|
39
|
+
var rankingBuilder = { type: "ranking", label: "Ranking" };
|
|
40
|
+
|
|
41
|
+
// src/nodes/scale/builder.ts
|
|
42
|
+
var ratingBuilder = { type: "rating", label: "Rating" };
|
|
43
|
+
var sliderBuilder = { type: "slider", label: "Slider / Scale" };
|
|
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
|
+
|
|
15
49
|
// src/nodes/textLike/builder.ts
|
|
16
50
|
var textInputBuilder = { type: "textInput", label: "Text Answer" };
|
|
17
51
|
var emailInputBuilder = { type: "emailInput", label: "Email" };
|
|
@@ -58,30 +92,614 @@ var plainTextManifest = {
|
|
|
58
92
|
]
|
|
59
93
|
};
|
|
60
94
|
|
|
61
|
-
// src/nodes/
|
|
95
|
+
// src/nodes/captcha/manifest.ts
|
|
62
96
|
var defaultCondition = {
|
|
63
97
|
id: "root",
|
|
64
98
|
type: "group",
|
|
65
99
|
logicType: "AND",
|
|
66
100
|
children: []
|
|
67
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
|
+
};
|
|
391
|
+
var consentDefaultData = {
|
|
392
|
+
label: "Consent",
|
|
393
|
+
description: "I agree to the terms and conditions.",
|
|
394
|
+
condition: defaultCondition5,
|
|
395
|
+
checkboxLabel: "I agree",
|
|
396
|
+
disagreeLabel: "I do not agree to the terms"
|
|
397
|
+
};
|
|
398
|
+
var consentManifest = {
|
|
399
|
+
type: "consent",
|
|
400
|
+
label: "Consent",
|
|
401
|
+
description: "Terms and agreement checkbox",
|
|
402
|
+
category: "choice",
|
|
403
|
+
dataType: "boolean",
|
|
404
|
+
defaultData: consentDefaultData,
|
|
405
|
+
properties: [
|
|
406
|
+
{ name: "label", label: "Title", type: "text", placeholder: "Terms of Service" },
|
|
407
|
+
{ name: "description", label: "Terms Text", type: "textarea", placeholder: "I agree to the terms and conditions..." },
|
|
408
|
+
{ name: "checkboxLabel", label: "Checkbox Label", type: "text", placeholder: "I agree" },
|
|
409
|
+
{ name: "disagreeLabel", label: "Disagree Label", type: "text", placeholder: "I do not agree to the terms" },
|
|
410
|
+
{
|
|
411
|
+
name: "condition",
|
|
412
|
+
label: "Logic Rule",
|
|
413
|
+
type: "condition",
|
|
414
|
+
defaultValue: defaultCondition5
|
|
415
|
+
}
|
|
416
|
+
]
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
// src/nodes/choice/manifest.ts
|
|
420
|
+
var defaultCondition6 = {
|
|
421
|
+
id: "root",
|
|
422
|
+
type: "group",
|
|
423
|
+
logicType: "AND",
|
|
424
|
+
children: []
|
|
425
|
+
};
|
|
426
|
+
var baseChoiceData = {
|
|
427
|
+
label: "",
|
|
428
|
+
description: "",
|
|
429
|
+
condition: defaultCondition6,
|
|
430
|
+
options: [],
|
|
431
|
+
randomizeOptions: false
|
|
432
|
+
};
|
|
433
|
+
var commonProperties = [
|
|
434
|
+
{ name: "label", label: "Question Label", type: "text" },
|
|
435
|
+
{ name: "description", label: "Description", type: "textarea" },
|
|
436
|
+
{
|
|
437
|
+
name: "condition",
|
|
438
|
+
label: "Logic Rule",
|
|
439
|
+
type: "condition",
|
|
440
|
+
defaultValue: defaultCondition6
|
|
441
|
+
},
|
|
442
|
+
{ name: "options", label: "Options", type: "options", defaultValue: [] },
|
|
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" }
|
|
444
|
+
];
|
|
445
|
+
var singleChoiceDefaultData = {
|
|
446
|
+
...baseChoiceData,
|
|
447
|
+
label: "Single Choice",
|
|
448
|
+
allowOther: false,
|
|
449
|
+
otherLabel: "Other (Please specify)",
|
|
450
|
+
allowNone: false,
|
|
451
|
+
noneLabel: "None of these"
|
|
452
|
+
};
|
|
453
|
+
var dropdownDefaultData = {
|
|
454
|
+
...baseChoiceData,
|
|
455
|
+
label: "Dropdown Select",
|
|
456
|
+
placeholder: "Select an option...",
|
|
457
|
+
searchable: true
|
|
458
|
+
};
|
|
459
|
+
var multipleChoiceDefaultData = {
|
|
460
|
+
...baseChoiceData,
|
|
461
|
+
label: "Multiple Choice",
|
|
462
|
+
minChoices: 0,
|
|
463
|
+
maxChoices: 0,
|
|
464
|
+
allowOther: false,
|
|
465
|
+
otherLabel: "Other (Please specify)",
|
|
466
|
+
allowNone: false,
|
|
467
|
+
noneLabel: "None of these"
|
|
468
|
+
};
|
|
469
|
+
var rankingDefaultData = {
|
|
470
|
+
...baseChoiceData,
|
|
471
|
+
label: "Ranking",
|
|
472
|
+
maxRank: 0,
|
|
473
|
+
displayMode: "drag"
|
|
474
|
+
};
|
|
475
|
+
var singleChoiceManifest = {
|
|
476
|
+
type: "singleChoice",
|
|
477
|
+
label: "Single Choice",
|
|
478
|
+
description: "Select one option from a list",
|
|
479
|
+
category: "choice",
|
|
480
|
+
dataType: "option",
|
|
481
|
+
defaultData: singleChoiceDefaultData,
|
|
482
|
+
properties: [
|
|
483
|
+
...commonProperties,
|
|
484
|
+
{ name: "allowOther", label: 'Allow "Other" Option', type: "switch", defaultValue: false },
|
|
485
|
+
{ name: "otherLabel", label: '"Other" Placeholder', type: "text", placeholder: "Other (Please specify)", helperText: "Label for the open-ended option" },
|
|
486
|
+
{ name: "allowNone", label: 'Allow "None of these"', type: "switch", defaultValue: false },
|
|
487
|
+
{ name: "noneLabel", label: '"None" Label', type: "text", placeholder: "None of these", visible: (data) => Boolean(data.allowNone) },
|
|
488
|
+
{ name: "randomizeOptions", label: "Randomize Options", type: "switch", defaultValue: false }
|
|
489
|
+
]
|
|
490
|
+
};
|
|
491
|
+
var dropdownManifest = {
|
|
492
|
+
type: "dropdown",
|
|
493
|
+
label: "Dropdown Select",
|
|
494
|
+
description: "Select from a dropdown menu",
|
|
495
|
+
category: "choice",
|
|
496
|
+
dataType: "option",
|
|
497
|
+
defaultData: dropdownDefaultData,
|
|
498
|
+
properties: [
|
|
499
|
+
...commonProperties,
|
|
500
|
+
{ name: "placeholder", label: "Placeholder Text", type: "text", placeholder: "Select an option..." },
|
|
501
|
+
{ name: "searchable", label: "Searchable", type: "switch", defaultValue: true }
|
|
502
|
+
]
|
|
503
|
+
};
|
|
504
|
+
var multipleChoiceManifest = {
|
|
505
|
+
type: "multipleChoice",
|
|
506
|
+
label: "Multiple Choice",
|
|
507
|
+
description: "Select multiple options",
|
|
508
|
+
category: "choice",
|
|
509
|
+
dataType: "array",
|
|
510
|
+
defaultData: multipleChoiceDefaultData,
|
|
511
|
+
properties: [
|
|
512
|
+
...commonProperties,
|
|
513
|
+
{ name: "maxChoices", label: "Maximum Choices", type: "number", helperText: "Limit how many options a user can select. Leave empty for no limit.", defaultValue: 0 },
|
|
514
|
+
{ name: "allowOther", label: 'Allow "Other" Option', type: "switch", defaultValue: false },
|
|
515
|
+
{ name: "otherLabel", label: '"Other" Placeholder', type: "text", placeholder: "Other (Please specify)" },
|
|
516
|
+
{ name: "allowNone", label: 'Allow "None of these"', type: "switch", defaultValue: false },
|
|
517
|
+
{ name: "noneLabel", label: '"None" Label', type: "text", placeholder: "None of these", visible: (data) => Boolean(data.allowNone) },
|
|
518
|
+
{ name: "randomizeOptions", label: "Randomize Options", type: "switch", defaultValue: false, helperText: "Shuffle options for every viewer" }
|
|
519
|
+
]
|
|
520
|
+
};
|
|
521
|
+
var rankingManifest = {
|
|
522
|
+
type: "ranking",
|
|
523
|
+
label: "Ranking",
|
|
524
|
+
description: "Rank options in order",
|
|
525
|
+
category: "choice",
|
|
526
|
+
dataType: "array",
|
|
527
|
+
defaultData: rankingDefaultData,
|
|
528
|
+
properties: [
|
|
529
|
+
...commonProperties,
|
|
530
|
+
{
|
|
531
|
+
name: "displayMode",
|
|
532
|
+
label: "Display Mode",
|
|
533
|
+
type: "select",
|
|
534
|
+
defaultValue: "drag",
|
|
535
|
+
options: [
|
|
536
|
+
{ label: "Drag and Drop", value: "drag" },
|
|
537
|
+
{ label: "Select Rank", value: "select" }
|
|
538
|
+
]
|
|
539
|
+
}
|
|
540
|
+
]
|
|
541
|
+
};
|
|
542
|
+
|
|
543
|
+
// src/nodes/scale/manifest.ts
|
|
544
|
+
var defaultCondition7 = {
|
|
545
|
+
id: "root",
|
|
546
|
+
type: "group",
|
|
547
|
+
logicType: "AND",
|
|
548
|
+
children: []
|
|
549
|
+
};
|
|
550
|
+
var baseScaleData = {
|
|
551
|
+
label: "",
|
|
552
|
+
description: "",
|
|
553
|
+
condition: defaultCondition7,
|
|
554
|
+
responseMode: "single",
|
|
555
|
+
items: []
|
|
556
|
+
};
|
|
557
|
+
var responseModeProperty = {
|
|
558
|
+
name: "responseMode",
|
|
559
|
+
label: "Response Mode",
|
|
560
|
+
type: "select",
|
|
561
|
+
defaultValue: "single",
|
|
562
|
+
options: [
|
|
563
|
+
{ label: "Single Question", value: "single" },
|
|
564
|
+
{ label: "Multiple Items", value: "multi" }
|
|
565
|
+
]
|
|
566
|
+
};
|
|
567
|
+
var commonProperties2 = [
|
|
568
|
+
responseModeProperty,
|
|
569
|
+
{ name: "label", label: "Question Label", type: "text" },
|
|
570
|
+
{ name: "description", label: "Description", type: "textarea" },
|
|
571
|
+
{
|
|
572
|
+
name: "condition",
|
|
573
|
+
label: "Logic Rule",
|
|
574
|
+
type: "condition",
|
|
575
|
+
defaultValue: defaultCondition7
|
|
576
|
+
}
|
|
577
|
+
];
|
|
578
|
+
var ratingDefaultData = {
|
|
579
|
+
...baseScaleData,
|
|
580
|
+
label: "Rating",
|
|
581
|
+
maxRating: 5
|
|
582
|
+
};
|
|
583
|
+
var sliderDefaultData = {
|
|
584
|
+
...baseScaleData,
|
|
585
|
+
label: "Slider / Scale",
|
|
586
|
+
min: 0,
|
|
587
|
+
max: 10,
|
|
588
|
+
step: 1,
|
|
589
|
+
startValue: 5
|
|
590
|
+
};
|
|
591
|
+
var ratingManifest = {
|
|
592
|
+
type: "rating",
|
|
593
|
+
label: "Rating",
|
|
594
|
+
description: "Star rating scale",
|
|
595
|
+
category: "choice",
|
|
596
|
+
dataType: "number",
|
|
597
|
+
defaultData: ratingDefaultData,
|
|
598
|
+
properties: [
|
|
599
|
+
...commonProperties2,
|
|
600
|
+
{ name: "items", label: "Questions/Items", type: "options", defaultValue: [], visible: (data) => data.responseMode === "multi" },
|
|
601
|
+
{ name: "maxRating", label: "Max Stars", type: "number", defaultValue: 5 }
|
|
602
|
+
]
|
|
603
|
+
};
|
|
604
|
+
var sliderManifest = {
|
|
605
|
+
type: "slider",
|
|
606
|
+
label: "Slider / Scale",
|
|
607
|
+
description: "Single or multi-item scale",
|
|
608
|
+
category: "choice",
|
|
609
|
+
dataType: "number",
|
|
610
|
+
defaultData: sliderDefaultData,
|
|
611
|
+
properties: [
|
|
612
|
+
...commonProperties2,
|
|
613
|
+
{ name: "items", label: "Items to Rate", type: "options", defaultValue: [], visible: (data) => data.responseMode === "multi" },
|
|
614
|
+
{ name: "min", label: "Minimum", type: "number", defaultValue: 0 },
|
|
615
|
+
{ name: "max", label: "Maximum", type: "number", defaultValue: 10 },
|
|
616
|
+
{ name: "step", label: "Step", type: "number", defaultValue: 1, min: 0 },
|
|
617
|
+
{ name: "startValue", label: "Start Value", type: "number", defaultValue: 5 }
|
|
618
|
+
]
|
|
619
|
+
};
|
|
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
|
+
|
|
679
|
+
// src/nodes/textLike/manifest.ts
|
|
680
|
+
var defaultCondition9 = {
|
|
681
|
+
id: "root",
|
|
682
|
+
type: "group",
|
|
683
|
+
logicType: "AND",
|
|
684
|
+
children: []
|
|
685
|
+
};
|
|
68
686
|
var baseTextData = {
|
|
69
687
|
label: "",
|
|
70
688
|
description: "",
|
|
71
|
-
condition:
|
|
689
|
+
condition: defaultCondition9,
|
|
72
690
|
minChars: 0,
|
|
73
691
|
maxChars: 0,
|
|
74
692
|
minWords: 0,
|
|
75
693
|
maxWords: 0
|
|
76
694
|
};
|
|
77
|
-
var
|
|
695
|
+
var commonProperties4 = [
|
|
78
696
|
{ name: "label", label: "Field Label", type: "text" },
|
|
79
697
|
{ name: "description", label: "Description", type: "textarea" },
|
|
80
698
|
{
|
|
81
699
|
name: "condition",
|
|
82
700
|
label: "Logic Rule",
|
|
83
701
|
type: "condition",
|
|
84
|
-
defaultValue:
|
|
702
|
+
defaultValue: defaultCondition9
|
|
85
703
|
}
|
|
86
704
|
];
|
|
87
705
|
var textLimitProperties = [
|
|
@@ -120,7 +738,7 @@ var textInputManifest = {
|
|
|
120
738
|
dataType: "text",
|
|
121
739
|
defaultData: textInputDefaultData,
|
|
122
740
|
properties: [
|
|
123
|
-
...
|
|
741
|
+
...commonProperties4,
|
|
124
742
|
{ name: "placeholder", label: "Placeholder", type: "text", placeholder: "e.g., Type here...", defaultValue: "" },
|
|
125
743
|
{ name: "longAnswer", label: "Long Answer (Multi-line)", type: "switch", defaultValue: false },
|
|
126
744
|
...textLimitProperties
|
|
@@ -133,7 +751,7 @@ var emailInputManifest = {
|
|
|
133
751
|
category: "input",
|
|
134
752
|
dataType: "text",
|
|
135
753
|
defaultData: emailInputDefaultData,
|
|
136
|
-
properties:
|
|
754
|
+
properties: commonProperties4
|
|
137
755
|
};
|
|
138
756
|
var dateInputManifest = {
|
|
139
757
|
type: "dateInput",
|
|
@@ -142,7 +760,7 @@ var dateInputManifest = {
|
|
|
142
760
|
category: "input",
|
|
143
761
|
dataType: "text",
|
|
144
762
|
defaultData: dateInputDefaultData,
|
|
145
|
-
properties:
|
|
763
|
+
properties: commonProperties4
|
|
146
764
|
};
|
|
147
765
|
var numberInputManifest = {
|
|
148
766
|
type: "numberInput",
|
|
@@ -152,7 +770,7 @@ var numberInputManifest = {
|
|
|
152
770
|
dataType: "number",
|
|
153
771
|
defaultData: numberInputDefaultData,
|
|
154
772
|
properties: [
|
|
155
|
-
...
|
|
773
|
+
...commonProperties4,
|
|
156
774
|
{ name: "min", label: "Minimum Value", type: "number" },
|
|
157
775
|
{ name: "max", label: "Maximum Value", type: "number" }
|
|
158
776
|
]
|
|
@@ -165,7 +783,7 @@ var zipCodeInputManifest = {
|
|
|
165
783
|
dataType: "text",
|
|
166
784
|
defaultData: zipCodeInputDefaultData,
|
|
167
785
|
properties: [
|
|
168
|
-
...
|
|
786
|
+
...commonProperties4,
|
|
169
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." }
|
|
170
788
|
]
|
|
171
789
|
};
|
|
@@ -177,7 +795,7 @@ var multiInputManifest = {
|
|
|
177
795
|
dataType: "object",
|
|
178
796
|
defaultData: multiInputDefaultData,
|
|
179
797
|
properties: [
|
|
180
|
-
...
|
|
798
|
+
...commonProperties4,
|
|
181
799
|
{ name: "fields", label: "Input Fields", type: "options", defaultValue: [], helperText: "Value column represents input type (text, number, email)" },
|
|
182
800
|
...textLimitProperties
|
|
183
801
|
]
|
|
@@ -191,24 +809,78 @@ var builderRegistry = defineBuilderRegistry({
|
|
|
191
809
|
dateInput: dateInputBuilder,
|
|
192
810
|
multiInput: multiInputBuilder,
|
|
193
811
|
zipCodeInput: zipCodeInputBuilder,
|
|
194
|
-
|
|
812
|
+
singleChoice: singleChoiceBuilder,
|
|
813
|
+
multipleChoice: multipleChoiceBuilder,
|
|
814
|
+
dropdown: dropdownBuilder,
|
|
815
|
+
ranking: rankingBuilder,
|
|
816
|
+
cascadingChoice: cascadingChoiceBuilder,
|
|
817
|
+
matrixChoice: matrixChoiceBuilder,
|
|
818
|
+
rating: ratingBuilder,
|
|
819
|
+
slider: sliderBuilder,
|
|
820
|
+
consent: consentBuilder,
|
|
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
|
|
195
831
|
});
|
|
196
832
|
export {
|
|
833
|
+
audioBuilder,
|
|
834
|
+
audioManifest,
|
|
835
|
+
branchBuilder,
|
|
836
|
+
branchManifest,
|
|
197
837
|
builderRegistry,
|
|
838
|
+
captchaBuilder,
|
|
839
|
+
captchaManifest,
|
|
840
|
+
cascadingChoiceBuilder,
|
|
841
|
+
cascadingChoiceManifest,
|
|
842
|
+
consentBuilder,
|
|
843
|
+
consentManifest,
|
|
198
844
|
dateInputBuilder,
|
|
199
845
|
dateInputManifest,
|
|
200
846
|
defineBuilderRegistry,
|
|
201
847
|
defineQuestionNode,
|
|
848
|
+
dropdownBuilder,
|
|
849
|
+
dropdownManifest,
|
|
202
850
|
emailInputBuilder,
|
|
203
851
|
emailInputManifest,
|
|
852
|
+
emojiRatingBuilder,
|
|
853
|
+
emojiRatingManifest,
|
|
854
|
+
endBuilder,
|
|
855
|
+
endManifest,
|
|
856
|
+
imageBuilder,
|
|
857
|
+
imageManifest,
|
|
858
|
+
matrixChoiceBuilder,
|
|
859
|
+
matrixChoiceManifest,
|
|
204
860
|
multiInputBuilder,
|
|
205
861
|
multiInputManifest,
|
|
862
|
+
multipleChoiceBuilder,
|
|
863
|
+
multipleChoiceManifest,
|
|
206
864
|
numberInputBuilder,
|
|
207
865
|
numberInputManifest,
|
|
208
866
|
plainTextBuilder,
|
|
209
867
|
plainTextManifest,
|
|
868
|
+
rankingBuilder,
|
|
869
|
+
rankingManifest,
|
|
870
|
+
ratingBuilder,
|
|
871
|
+
ratingManifest,
|
|
872
|
+
singleChoiceBuilder,
|
|
873
|
+
singleChoiceManifest,
|
|
874
|
+
sliderBuilder,
|
|
875
|
+
sliderManifest,
|
|
876
|
+
startBuilder,
|
|
877
|
+
startManifest,
|
|
210
878
|
textInputBuilder,
|
|
211
879
|
textInputManifest,
|
|
880
|
+
validationBuilder,
|
|
881
|
+
validationManifest,
|
|
882
|
+
videoBuilder,
|
|
883
|
+
videoManifest,
|
|
212
884
|
zipCodeInputBuilder,
|
|
213
885
|
zipCodeInputManifest
|
|
214
886
|
};
|